在IE9怪异模式下,CSS ID以下划线开头无法注册。

4

我有一个动态加载的CSS文件,其中包含一个带有ID的css行,如下所示:

#__my_css_id{

   width: 100%;
   height: 100%;
   left: 0px;
   top: 0px;
   position: fixed;
   background-color: #202020;
}

我无法更改这个页面以怪异模式呈现的事实,因为它是一个远程托管脚本(我的脚本)。有些页面是怪异模式,有些则不是。

当在怪异模式下使用IE9时(没有尝试其他IE版本),CSS似乎无法正确或根本加载。事实上,如果我使用IE调试器(F12)调试CSS,那么我会看到所有CSS,但是所有的CSS ID都说UNKNOWN,如果它们以两个下划线开头,像这样:#__

如果我调试元素并检查CSS,则没有任何CSS规则。怪异模式是否不允许在CSS ID开头使用下划线?

谢谢!


2
首先,ID应该以字母开头,所以这里实际上不符合合法的标记语言规范。这不仅适用于怪异模式,对于标准模式也是有效的规则。参见:https://dev59.com/83VD5IYBdhLWcg3wJIEK - vcsjones
我试图避免命名冲突,所以我认为添加下划线是安全的。有更好的解决方案吗? - Brian Gruber
只需将您的ID“命名空间化”以避免冲突,类似于您已经在做的事情,但使用有效值。例如:#MY-id1 #MY-id2。(并且请记住它们是区分大小写的) - Wesley Murch
我想要一种更全局唯一的方式,所以我认为使用双下划线可以增加避免冲突的可能性... 我猜如果我的命名空间足够奇怪,那会有所帮助。 - Brian Gruber
1个回答

2
双下划线在CSS2中可用,但怪异模式是CSS1的部分实现。CSS2规范提到:

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

而在CSS1中,下划线是无效字符:

在CSS1中,选择器(元素名称、类和ID)只能包含字符A-Z、0-9和Unicode字符161-255,加上破折号(-);它们不能以破折号或数字开头;它们还可以包含转义字符和任何Unicode字符作为数字代码(见下一项)。

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