我可以使用下划线开始 CSS 选择器 ID 或类吗? [复制]

Posted

技术标签:

【中文标题】我可以使用下划线开始 CSS 选择器 ID 或类吗? [复制]【英文标题】:Can I BEGIN a CSS selector ID or Class with an underscore? [duplicate] 【发布时间】:2014-06-11 20:08:32 【问题描述】:

例如:#_id-name ._class-name 我知道在早期根本不允许使用下划线 - 以及双连字符 (--)。但是,如果它以_ 开头,那么所有浏览器都能够读取/理解一个类或一个 ID 是否可以?

【问题讨论】:

可能重复:***.com/a/449000/1696030 答:可以! 谢谢 - 看起来我可以:w3.org/TR/CSS21/syndata.html#vendor-keywords 我见过另一个“可能重复”,但它只谈论使用下划线。我想知道是否可以 start 和 ID 或带下划线的类名... 【参考方案1】:

我的答案基于html 而不仅仅是 CSS。文档:

http://www.w3.org/TR/html401/struct/global.html#h-7.5.2 ID or NAME CDATA (classes)

总而言之,id 显然必须以字母 (A-Za-z) 开头,并且后面可以有任何其他字母、数字、下划线或破折号。实际上,您可以使用-_ 开头id,它会起作用:http://jsfiddle.net/ExplosionPIlls/y6jvs/ 但以数字开头起作用。

虽然这些限制似乎不适用于作为 CDATA 列表的类,但实际上它似乎工作相同:http://jsfiddle.net/ExplosionPIlls/y6jvs/1/

因此,您可以获得一致且面向未来的浏览器体验,我会尽量避免使用 ID、类名等做任何时髦的事情。

【讨论】:

Mmmm... 面向未来的浏览器体验值得牢记! 自 HTML5 以来,id 属性的规范已更改为删除您提到的限制。因此无需担心未来的打样。 “除了在文档中唯一之外,剩下的唯一要求是该值必须包含至少一个字符(不能为空),并且不能包含任何空格字符。” mathiasbynens.be/notes/html5-id-classhtml.spec.whatwg.org/multipage/dom.html#the-id-attribute @Albin 感谢您指出更新的规范。从某种意义上说,要求不会改变,我们不必担心未来的校对,但请注意,以 ID 的数字开头的选择器仍然不适用于 CSS 或 DOM 选择,即使它是一个有效的属性值. 确实如此。您仍然可以使用“#\000031”作为选择器而不是“#1”来匹配它,但这不是很实用。 jsbin.com/jawojijuza/1/edit?html,css,output

以上是关于我可以使用下划线开始 CSS 选择器 ID 或类吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

基础选择器,CSS3选择器, 盒模型,浮动

编写CSS代码的个人风格

为啥 CSS 选择器/HTML 属性首选破折号?

CSS里的HTML选择器、类选择器、ID选择器用于哪些范围?

typescript 选择器。按元素,属性或类选择(按ID不起作用)。

前端开发规范CSS