哪些字符在CSS类名/选择器中有效?

CSS类选择器允许使用哪些字符/符号? 我知道以下字符无效,但是哪些字符是有效的?

~ ! @ $ % ^ & * ( ) + = , . / ' ; : " ? > < [ ]  { } | ` #

你可以直接检查CSS语法。

基本上1,名称必须以下划线( _ ),连字符( - )或字母( a - z )开头,后跟任意数量的连字符,下划线,字母或数字。 有一个问题:如果第一个字符是连字符,则第二个字符必须是字母或下划线,并且名称的长度至少为2个字符。

-?[_a-zA-Z]+[_a-zA-Z0-9-]*

以连字符或下划线开头的标识符通常为浏览器特定的扩展名保留,如-moz-opacity

1由于包含了逃脱的Unicode字符(没有人真正使用),这一切都变得更加复杂。

2请注意,根据我链接的语法,以两个连字符(例如--indent1开头的规则无效。 但是,我很确定我在练习中已经看到了这一点。


令我惊讶的是,这里的大部分答案都是错 事实证明:

CSS中的CSS类名称允许除NUL以外的任何字符。 (如果CSS包含NUL(转义或不转义),结果是未定义的。[CSS-characters])

Mathias Bynens的答案链接到说明和演示,展示如何使用这些名称。 在CSS代码中写下来,类名可能需要转义,但不会更改类名。 例如,不必要的过度转义的表示看起来与该名称的其他表示不同,但它仍然指向相同的类名称。

大多数其他(编程)语言不具有转义变量名称(“标识符”)的概念,因此变量的所有表示必须看起来相同。 CSS中不是这种情况。

请注意,在HTML中,没有办法在类名属性中包含空格字符(空格,制表符,换行符,换页符和回车符),因为它们已经将类彼此分开。

因此,如果您需要将随机字符串转换为CSS类名称:请注意NUL和空格,然后转义(相应地用于CSS或HTML)。 完成。


阅读W3C规范。 (这是CSS 2.1,为您的浏览器假设找到合适的版本)

编辑:相关段落如下:

在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-z0-9]和ISO 10646字符U + 00A1及更高版本,以及连字符( - )和下划线(_) ; 他们不能以数字或连字符后跟数字开头。 标识符也可以包含转义字符和任何ISO 10646字符作为数字代码(参见下一项)。 例如,标识符“B&W?” 可以写成“B &W ?” 或“B 26 W 3F”。

编辑2:正如@mipadi在Triptych的回答中指出的那样,这个警告也出现在同一个网页中:

在CSS中,标识符可以以' - '(短划线)或'_'(下划线)开头。 以' - '或'_'开头的关键字和属性名称保留用于特定于供应商的扩展。 此类特定于供应商的扩展应具有以下格式之一:

'-' + vendor identifier + '-' + meaningful name 
'_' + vendor identifier + '-' + meaningful name

例子):

例如,如果XYZ组织添加了一个属性来描述显示屏东侧的边框颜色,则可以将其称为-xyz-border-east-color。

其他已知的例子:

 -moz-box-sizing
 -moz-border-radius
 -wap-accesskey

保证初始短划线或下划线不会被任何当前或未来级别的CSS用于属性或关键字。 因此,典型的CSS实现可能无法识别这些属性,并可能根据处理解析错误的规则忽略它们。 但是,由于最初的短划线或下划线是语法的一部分,CSS 2.1实现者应始终能够使用符合CSS的解析器,无论它们是否支持特定于供应商的扩展。

作者应该避免特定于供应商的扩展

链接地址: http://www.djcxy.com/p/3899.html

上一篇: Which characters are valid in CSS class names/selectors?

下一篇: Complex CSS selector for parent of active child