【问题标题】:CSS attribute selectors: The rules on quotes (", ' or none?)CSS 属性选择器:引号规则(“、' 还是没有?)
【发布时间】:2011-07-31 12:48:37
【问题描述】:

这个问题已经困扰了我一段时间了。当编写一个 CSS 选择器来比较一个元素的属性时。

a[rel="nofollow"]

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

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

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

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

【问题讨论】:

标签: css string css-selectors


【解决方案1】:

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

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

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

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

【讨论】:

  • @Wolfy87 用我前几天写的一篇文章的链接更新了我的答案。它包含一些正则表达式:)
  • (将我的答案复制为评论,因为我不久前将其删除)从实际的角度来看:我建议您使用引号,无论是单引号还是双引号。这样,属性值中的任何特殊选择器字符(引号本身除外)都不需要转义。另外——这只是个人的编码风格偏好,所以不要相信我的话——我发现它与 XHTML 属性引号一致。
  • @BoltClock'saUnicorn 阿门。帮自己一个忙,只要始终如一地使用引号,就可以省去很多麻烦!
  • 这是一个令人印象深刻的答案,但它并没有说明单引号(除非我错过了它)。不过,这里的另一个答案涵盖了这一点。
【解决方案2】:

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

——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

【讨论】:

猜你喜欢
  • 2011-08-21
  • 1970-01-01
  • 2015-08-16
  • 2022-11-13
  • 2023-02-15
  • 2016-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多