为HTML元素创建id属性时,该值有哪些规则?


当前回答

HTML格式

ID应以{A-Z}或{A-Z}开头。您可以添加数字、句点、连字符、下划线和冒号。

例如:

<span id="testID2"></span>
<span id="test-ID2"></span>
<span id="test_ID2"></span>
<span id="test:ID2"></span>
<span id="test.ID2"></span>

但是,即使您可以使用冒号(:)或句点(.)创建ID。CSS很难将这些ID用作选择器。主要是当您想要使用伪元素(:before和:after)时。

在JavaScript中,也很难选择这些ID。因此,您应该使用前四个ID作为许多开发人员的首选方式,如果有必要,您也可以使用后两个ID。

其他回答

严格来说,它应该匹配

[A-Za-z][-A-Za-z0-9_:.]*

但是jQuery似乎有冒号的问题,所以最好避免使用冒号。

jQuery不处理任何有效的ID名称。你只需要转义元字符(例如,点、分号、方括号…)

var name = 'O'Hara';

jQuery API中的选择器(请参见底部注释)

HTML5:

它消除了对id属性的额外限制(请参见此处)。剩下的唯一要求(除了文件中的唯一要求)是:

该值必须至少包含一个字符(不能为空)它不能包含任何空格字符。


HTML5之前:

ID应匹配:

[A-Za-z][-A-Za-z0-9_:.]*

必须以A-Z或A-Z字符开头可以包含-(连字符)、_(下划线)、:(冒号)和。(期间)

但我们应该避免:和。因为:

例如,一个ID可以被标记为“a.b:c”,并在样式表中被引用为#a.b:cc,但除了作为元素的ID之外,它还可以表示ID“a”、类“b”、伪选择器“c”。最好避免混淆,远离使用。和:总计。

看起来,虽然冒号(:)和句点(.)在HTML规范中是有效的,但它们在CSS中作为id选择器是无效的,因此如果您打算将它们用于此目的,最好避免使用它们。

从技术上讲,可以在id/name属性中使用冒号和句点,但我强烈建议避免两者。

在CSS(以及jQuery等几个JavaScript库)中,句点和冒号都有特殊含义,如果不小心就会遇到问题。句点是类选择器,冒号是伪选择器(例如,当鼠标悬停在元素上时,元素的“:hover”)。

如果给元素id为“my.ccool:thing”,则CSS选择器将如下所示:

#my.cool:thing { ... /* some rules */ ... }

也就是说,在CSS中,“id为‘my’的元素、‘cool’类和‘thing’伪选择器”。

任何大小写、数字、下划线和连字符都要使用A-Z。如上所述,确保您的ID是唯一的。

这应该是你最关心的问题。