CSS属性选择器:引号上的规则(“,”或者没有?)

时间:2011-04-07 09:25:21

标签: css string css-selectors

这个问题一直困扰着我一段时间。编写一个CSS选择器时,会像这样比较一个元素的属性。

a[rel="nofollow"]

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

基本上,这是什么规格,因为我在网站上找不到它。

所有这些都被视为有效吗?

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

2 个答案:

答案 0 :(得分:70)

我在这里写了更多关于这个主题的文章:Unquoted attribute values in HTML and CSS

我还创建了一个工具来帮助您回答问题:http://mothereff.in/unquoted-attributes

Unquoted attribute value validator

只要属性值是字母数字,您通常可以省略引号(但是,有一些例外 - 请参阅链接文章了解所有细节)。无论如何,我发现在你需要时添加引号是好的做法,即a[href^=http://]不起作用,但a[href^="http://"]会。

我提到的文章链接到CSS规范中的相应章节。

答案 1 :(得分:23)

  

属性值必须是标识符或字符串

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

前两个使用字符串。第三个使用标识符。

  

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

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

  

字符串可以用双引号或单引号书写。

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