为什么元素ID不能以整数开头?

这个问题在这里已经有了答案:

  • 什么是HTML中的id属性的有效值? 21个答案

  • 为什么元素ID不能以整数开头?

    他们能。 但是CSS ID选择器不能以数字开头。 例如,这个HTML是有效的:

    <div id="1foo">testing 1 2 3</div>
    

    ...但是这CSS是无效的:

    #1foo {
        color: green;
    }
    

    CSS标准说,一个id选择器不能以数字开头:

    一个ID选择符包含一个“数字符号”(U + 0023,#),后面跟着ID值,它必须是一个CSS标识符。

    然后定义CSS标识符:

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

    (我的重点)

    所以理论上,你可以通过转义CSS选择器中的数字来解决#1foo无法工作的问题。 例如:

    HTML:

    <div id="1foo">testing 1 2 3</div>
    

    CSS:

    #31 foo {
        color: green;
    }
    

    ...其中31是十六进制"1"的字符代码。 现场示例:

    #31 foo {
      color: green;
    }
    <div id="1foo">testing 1 2 3</div>

    实际上,你可以用一个数字开始一个id,像document.getElementById这样的方法可以很好地工作。

    但是一些较旧的页面使用一个元素喜欢的传统IE标准

    <div id="hello">World</div>
    

    可以引用为document.hello 。 当然这个语法不起作用,但我认为document["123id"]可以修复它。

    但是,最重要的是,CSS选择器不适用于以数字开头的ID。 你必须逃避它们:

    #123id {color: red;}      /* It doesn't work */
    
    #31 23id {color: blue;}  /* Oh yeah! */
    

    值得努力? 可能不会。


    从HTML 4规范:

    ID和名称标记必须以字母([A-Za-z])开头,后面可以跟随任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“_”) ,冒号(“:”)和句点(“。”)。

    链接地址: http://www.djcxy.com/p/15443.html

    上一篇: Why can an element id not start with an integer?

    下一篇: What are legal characters for an HTML element id?