有没有解决方法使以数字开头的CSS类名有效?

28

是否有任何参考资料表明名称以数字开头的CSS类无法使用? 例如,我发现一个带有背景的类:

.000000-8 {background:url(../../images/common/000000-0.8.png);}
.8FFFFFF {background:url(../../images/common/FFFFFF-0.8.png);}

我拥有的大多数浏览器都无法工作,CSS语法也显示了这一点,但我的问题是是否有解决方法可以使以数字开头的CSS类名有效?。


2
这个问题已经得到了回答。CSS命名规则 - jwize
http://www.w3.org/TR/CSS21/grammar.html#scanner - megawac
我搜索了一些关于选择器首字符/以...开头的问题,但没有找到任何答案...现在我发现有一个问题已经被回答了。 - hsobhy
1
这个问题绝对不是重复的。所提到的答案并没有具体回答数字问题。 - 3Dom
2个回答

41

没有CSS类。这个问题从逻辑上分成两个问题:在HTML中你可以以数字开头的类名,如果可以(答案是“是”,因为它是),那么如何在CSS中使用相应的类选择器呢?

各种HTML规范对类名施加各种限制,但在浏览器实践和HTML5中,除了类名不能包含空格字符外,没有其他限制。 所以 class=000000-8 是有效的。

CSS语法规则规定,CSS标识符不能以未转义的数字开头。 因此,像 .000000-8 这样的选择器是无效的。但是数字可以通过CSS转义规则进行转义:选择器为

.\30 00000-8

或者等价地说,

.\00003000000-8 

是有效的且匹配具有 class=000000-8 的元素。

不用说,以数字开头的 class 名最好避免使用,但如果必须使用它们(例如因为某些 HTML 文档使用了它们,而且您无法更改标记),那就是这种方式。


是的,你说得对。虽然这与浏览器无关,但我测试过了,发现两个选择器在我的浏览器上都可以工作,包括 Windows 上的 Safari、IE、IE7 和兼容视图。我还在智能手机的默认浏览器和 iPad Air 上进行了测试。 - hsobhy
1
想知道如何在CSS中转义任何字符吗?有一个网页应用程序可以帮助你 - James Furey

13

是的,它在CSS规范中有记录:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接