HTML中id属性的有效值是什么?

时间:2020-03-05 18:55:27  来源:igfitidea点击:

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

解决方案

回答

根据HTML 4规范:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

一个常见的错误是使用以数字开头的ID。

回答

严格应该匹配

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

但是jquery似乎在冒号方面存在问题,因此最好避免使用冒号。

回答

从HTML 4规范...

ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符("-"),下划线(" _") ,冒号(":")和句点("。")。

编辑:天哪!再次被殴打!

回答

实际上,尽管从技术上讲这不是有效的HTML,但是许多站点都使用以数字开头的id属性。

HTML 5规范草案放宽了id和name属性的规则:它们现在只是不透明的字符串,不能包含空格。

回答

另外,请不要忘记ID是唯一的。一旦使用,ID值可能不会再出现在文档中的任何位置。

我们可能有许多ID,但是所有ID都必须具有唯一值。

另一方面,有类元素。就像ID一样,它可以出现很多次,但是该值可以反复使用。

回答

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

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

如果为元素提供id为" my.cool:thing",则CSS选择器将如下所示:

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

这实际上是在讲CSS的" id为'my',一类'cool'和'thing'伪选择器的元素"。

在任何情况下,数字,下划线和连字符都应按字母A-Z排列。如上所述,请确保ID是唯一的。

那应该是第一个问题。

回答

对于HTML 4,技术上的答案是:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

HTML 5甚至更宽容,只说一个id必须至少包含一个字符,并且不得包含任何空格字符。

id属性在XHTML中区分大小写。

从纯粹的实践出发,我们可能要避免使用某些字符。句点,冒号和'#'在CSS选择器中具有特殊含义,因此我们必须在CSS中使用反斜杠或者在传递给jQuery的选择器字符串中使用双反斜杠来转义那些字符。想一想,在迷上句号和ID中的冒号之前,必须多久在样式表或者代码中转义一个字符。

例如,HTML声明" <div id =" first.name"> </ div>"有效。我们可以在CSS中将该元素选择为#first \ .name,而在jQuery中选择该元素,如下所示:$('#first \\。name')。 '),我们将拥有一个完全有效的选择器,以查找ID为" first"且元素名称为" class"的元素。这是一个容易忽略的错误。从长远来看,我们可能会更快乐,而是选择id为" first-name"(连字符而不是句点)。

我们可以严格遵循命名约定来简化开发任务。例如,如果我们将自己完全限制为小写字母,并且始终使用连字符或者下划线来分隔单词(但不能同时使用连字符或者下划线来分隔单词),那么我们将拥有一种易于记忆的模式。我们将永远不会怀疑"是FirstName还是FirstName?"因为我们将永远知道我们应该输入" first_name"。喜欢骆驼案吗?然后限制自己,不要使用连字符或者下划线,并且始终对第一个字符使用大写或者小写,请勿混用。

现在一个非常模糊的问题是,至少一个浏览器Netscape 6错误地将id属性值视为区分大小写。这意味着,如果我们在HTML(小写字母" f")中键入了" id =" firstName"`,而在CSS(大写字母" F")中键入了" #FirstName {color:red}",那么该浏览器就会可能无法将元素的颜色设置为红色。在进行此编辑(2015年4月)时,希望我们不会被要求支持Netscape6. 请考虑一下这是一个历史脚注。

回答

jQuery会处理任何有效的ID名称。我们只需要转义元字符(即点,分号,方括号...)。这就像说JavaScript的引号有问题只是因为我们无法编写

var name = 'O'Hara';

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

回答

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

回答

连字符,下划线,句点,冒号,数字和字母都可与CSS和JQuery一起使用。以下内容应该可以使用,但在整个页面中必须是唯一的,并且必须以字母[A-Za-z]开头。

使用冒号和句号需要做更多的工作,但是我们可以按照以下示例所示进行操作。

<html>
<head>
<title>Cake</title>
<style type="text/css">
    #i\.Really\.Like\.Cake {
        color: green;
    }
    #i\:Really\:Like\:Cake {
        color: blue;
    }
</style>
</head>
<body>
    <div id="i.Really.Like.Cake">Cake</div>
    <div id="testResultPeriod"></div>

    <div id="i:Really:Like:Cake">Cake</div>
    <div id="testResultColon"></div>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            var testPeriod = $("#i\.Really\.Like\.Cake");
            $("#testResultPeriod").html("found " + testPeriod.length + " result.");

            var testColon = $("#i\:Really\:Like\:Cake");
            $("#testResultColon").html("found " + testColon.length + " result.");
        });
    </script>
</body>
</html>