CSS属性select器:关于引号的规则(“,”或none?)

这个问题已经困扰了我一段时间了。 当写一个CSSselect器,比较一个元素的属性如此。

a[rel="nofollow"] 

我不知道我应该用引号来干什么。 他们真的有必要吗?

基本上,这是什么规范,因为我无法在网站上find它。

所有这些都被认为是有效的吗?

 a[rel="nofollow"] a[rel='nofollow'] a[rel=nofollow] 

我在这里写了更多的关于这个主题的信息: 在HTML和CSS中没有引用属性值

我也创build了一个工具来帮助你回答你的问题: http : //mothereff.in/unquoted-attributes

未引用的属性值验证程序

只要属性值是字母数字,通常可以省略引号(但是,也有一些例外 – 请参阅链接文章中的所有详细信息)。 无论如何,我觉得这是一个很好的做法,无论如何添加引号,如果你需要他们,即a[href^=http://]将无法正常工作,但a[href^="http://"]将。

我提到的文章链接到CSS规范中适当的章节。

属性值必须是标识符或string

http://www.w3.org/TR/CSS2/selector.html#attribute-selectors

前两个使用string。 第三个使用一个标识符。

标识符(包括select器中的元素名称,类别和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A0及更高版本,以及连字符( – )和下划线(_); 他们不能以数字,两个连字符或连字符后跟数字开头。

http://www.w3.org/TR/CSS2/syndata.html#value-def-identifier

string可以用双引号或单引号来书写。

http://www.w3.org/TR/CSS2/syndata.html#strings