是否有一种解决方法可以使名称以数字开头的 CSS 类有效? [复制]

Posted

技术标签:

【中文标题】是否有一种解决方法可以使名称以数字开头的 CSS 类有效? [复制]【英文标题】:Is there a workaround to make CSS classes with names that start with numbers valid? [duplicate] 【发布时间】:2014-02-09 06:01:28 【问题描述】:

是否在任何名称以数字开头的 CSS 类不起作用的地方引用它? 例如,我发现一个具有如下背景的类:

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

在我拥有的大多数浏览器中都不起作用,CSS grammar 显示了这一点,但我的问题是有一个 解决方法 可以使名称以数字开头的 CSS 类有效吗? .

【问题讨论】:

这个问题已经回答css naming rule w3.org/TR/CSS21/grammar.html#scanner 我已经搜索了表明选择器第一个字符/开头的问题,但没有找到任何.. 现在我得到了一个回答这个问题的问题。 这个问题绝不是重复的。提到的答案没有具体回答数字问题。 【参考方案1】:

没有 CSS 类。这个问题在逻辑上分为两个问题:你能否在 HTML 中以数字开头一个类名,以及(假设答案是“是”,因为它确实如此)如果是,你如何在 CSS 中使用相应的类选择器?

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

根据 CSS 语法规则,CSS 标识符不能带有 未转义 数字。因此,.000000-8 这样的选择器是无效的。但是数字可以被CSS escaping rules转义:选择器

.\30 00000-8

或者,等价的,

.\00003000000-8 

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

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

【讨论】:

是的,你是对的,虽然它与浏览器无关,但我测试并发现这两个选择器都适用于我的浏览器,包括 Windows 版 Safari、IE、IE7 和兼容性视图。还在智能手机默认浏览器和 iPad Air 上进行了测试。 想知道如何转义 CSS 中的任何字符? There's a web app for that.【参考方案2】:

是的,它记录在CSS specification:

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

【讨论】:

以上是关于是否有一种解决方法可以使名称以数字开头的 CSS 类有效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

XML 名称不能以“=”字符开头

JAVA类名与方法名以数字开头的问题

在.Net中填充一个以零开头的数字

检查字符串是不是以正则表达式数字开头

是否有一种高效且 Python 的方式比较 isoweekday() 的日期名称和输出?

DB Csv 导出和 Excel 数字格式