2010-04-11 30 views
12

如其他地方详细描述的here,html/css类名中唯一有效的字符是a-z,A-Z,0-9,连字符和下划线,并且第一个字符应该是字母。但实际上,大多数浏览器实际上支持哪些字符?更具体地说,我不知道浏览器能够正确理解类名称中的斜杠(/),以及哪些浏览器支持以数字开头的类名称。CSS类名中广泛支持哪些字符?

我主要感兴趣的是获得html而不是xhtml的答案,以防有所不同。

谢谢。

+0

没有土特产品只是说, “A-Z,A = Z,0-9,= _”? – 2010-04-11 13:41:10

+0

这些是有效的字符,但实际上其他字符至少也支持某些浏览器。我想知道除了有效字符(如果有的话)之外哪些字符可以可靠地使用。 – 2010-04-11 13:43:46

+0

为什么不打开记事本并给它一个测试... – bigstylee 2010-04-11 13:57:28

回答

10

注该类名是由HTML定义的,而不是CSS。 HTML4 saysclass属性是cdata-list,它是空格分隔的令牌。因此,一个类名标记可以包含除空白字符以外的任何字符。

我不知道浏览器能够正确理解类名中的斜杠(/),以及哪些浏览器支持以数字开头的类名称。

要在CSS类选择器中引用这样的名称,您需要使用转义。

.\31 blah\2F bläh { ... } 

这是由所有当前的浏览器支持:如:

<div class="1blah/bläh"> 

是匹配的。它没有得到IE5的支持,但幸好这不再是一个问题。 (如果您担心字符编码不匹配,您可能更愿意将ä编码为\E4,但这不是CSS的限制。)

如果您询问哪些浏览器会让您无效选择器

.1blah/bläh 

那么,那么,谁在乎呢?只需使用有效的。

+0

+1,我很乐意给你一个单独的最后一行! – 2010-04-11 14:23:52

+1

有效的类名* *由CSS定义。但那些在HTML中也是有效的只是这些的一个子集。请注意,CSS是一种可用于任何结构化语言而不仅仅是HTML的样式表语言。 – Gumbo 2010-04-11 14:26:34

+2

谢谢bobince,那为我解决了问题!我最初命名这个问题“HTML类名中广泛支持哪些字符?”但有人将“HTML”改为“CSS”。在这种情况下,对我来说重要的是让HTML可读而不会冒险,所以这对我有很大的帮助。在这种情况下,IE5中断可能不是问题。谢谢! – 2010-04-11 15:22:56

-1

/和其他符号被用作选择器(特别是在CSS3中),所以不能在类名中使用。支持的字符是你已经说过的。

1

http://www.w3.org/TR/2008/REC-CSS2-20080411/syndata.html

如果你看一下语法,你明白标识符被定义为

ident  {nmstart}{nmchar}* 
nmstart  [a-zA-Z]|{nonascii}|{escape} 
nmchar  [a-z0-9-]|{nonascii}|{escape} 
nonascii [^\0-\177] 
unicode  \\[0-9a-f]{1,6}[ \n\r\t\f]? 

所以这里是你的答案..

(这是CSS2)

+0

这并不能解释实际支持哪些字符或序列。是否支持'.foo \ bar','。\ /'或'。\ 1234'? – Gumbo 2010-04-11 14:06:16