#书摘 #css #前端
《CSS 选择器世界》规范与更多字符的合法性
顺着上面这个“不能以数字开头”的案例,我们讲解更多关于选择器命名合法性的内容。
首先,关于命名,看看规范中是如何描述的,如图3-4所示。

- 首字符支持的字符类型是 a~z`、`A~Z`、下划线(`_`)以及非 `ASCII 字符(中文、全角字符等)
- 后面的字符支持的字符类型是 a~z`、`A~Z`、`0~9`、下划线(`_`)、短横线(`-`)以及非 `ASCII 字符,后面的字符支持的字符类型中多了数字和短横线。

很多人对选择器的合法性认识就停留在上面所述内容的层面,而忽略了图3-4下面的“`escape`”方块。实际上,对于其他没有出现的字符,只要对它们 执行转义来重新编码 就能使其成为所支持的字符类型。也就是说,选择器不仅可以以数字开头,也支持以其他字符开头。这些字符可以是下面的这些。
1. 不合法的ASCII字符,如``!、"、#、$、%、&、'、(、)、*、+、,、-、.、/、:、;、<、=、>、?、@、[、\、]、^、`、{、|、}以及~``
严格来讲,上述字符也应该完全转义。例如,加号(+)的Unicode值是2b,因此选择器需要写成`\2b`加上空格,或者`\00002b`。
但是,对于上述字符,还有一种更优雅的表示方式,那就是直接使用斜杠转义,如 \+
包括IE在内的浏览器都支持上面的斜杠转义写法,因此可以放心使用。唯一需要多提一句的就是冒号(:),在IE7浏览器下,直接使用\:是不被支持的,如果你的项目需要兼容这种浏览器,可以使用\3a加上空格代替。(其实一般也不会用)

2. 中文字符。下面的CSS也是有效的:

.我是foo { color: red; }​​



3. 中文标点符号,例如:

.。foo { color: red; }​​



4. emoji字符:

. { color: red; }​​



「由于emoji字符在手机设备或者macOS系统上自动显示为emoji表情,因此有人会在实验性质的项目中使用emoji字符作为类名,这样,展示源代码的时候,会有一个个表情出现,挺有意思的。
至于其他转义字符,没有在实际项目中使用它们的任何理由。但我个人觉得对于中文命名可以一试。」
(我感觉其实也不用)
 
 
Back to Top