【问题标题】:The syntax of CSS class selectors, id selectors?CSS 类选择器、id 选择器的语法?
【发布时间】:2016-10-31 00:55:37
【问题描述】:

在最新版Selectors Level 4:

类选择器以句号 (.U+002E) 形式给出,紧跟在标识符之后。

ID 选择器由一个“数字符号”(U+0023,#)组成,后面紧跟 ID 值,该值必须是 CSS identifier

在上面的标识符链接中:

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

但是,在同一规范中,Grammar 部分:

<class-selector> = '.' @987654324@

<id-selector> = @987654325@

从上面的标记链接中可以看出,语法图明确指定 CSS 标识符可以以 两个连字符 开头,并且 ID 选择器的语法与哈希的语法相矛盾-令牌。

我应该遵循哪些定义?

更新:

我错过了Grammar 部分底部的一行:

中,的值必须是identifier

【问题讨论】:

标签: css css-selectors w3c


【解决方案1】:

hash-token 图表一定是错误的,正如您所引用的那样:

选择器 (...) 中的元素名称、类和 ID 不能以数字、两个连字符或一个连字符后跟一个数字开头

非常明确

【讨论】:

  • 很明显,在 ID 选择器的这些定义之间,只有一个是正确的,只是不确定哪个是正确的。我认为编辑也很可能忘记更新一些定义(尤其是链接),考虑到它仍然是一个工作草案。
  • 肯定只有一个是正确的,但是由于其中一个是明确的,而另一个是概括,我认为我引用的那个是好的
  • 事实证明,(见我的更新)该图很好,因为它不是用来描述 id 选择器的语法,而是一个哈希。 fwiw,根据 CSS 标识符的新语法,现在允许在开头使用两个连字符。
  • 引用来自 CSS21。 CSS 语法 3 改变了这一点。
猜你喜欢
  • 2012-02-15
  • 2021-03-21
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
  • 2020-12-05
  • 1970-01-01
  • 2013-03-01
相关资源
最近更新 更多