当人们想用“http://example.com/#foo“方法,应该使用
<h1><a name="foo"/>Foo Title</h1>
or
<h1 id="foo">Foo Title</h1>
它们都有效,但它们是相等的,还是有语义差异?
当人们想用“http://example.com/#foo“方法,应该使用
<h1><a name="foo"/>Foo Title</h1>
or
<h1 id="foo">Foo Title</h1>
它们都有效,但它们是相等的,还是有语义差异?
当前回答
没有语义差异;标准的趋势是使用id而不是名称。然而,在某些情况下,有些差异可能会导致人们更喜欢名字。HTML 4.01规范提供了以下提示:
使用id或名称?作者在决定是否使用id或名称作为锚点名称时应考虑以下问题:
id属性可以不仅仅用作锚点名称(例如,样式表选择器、处理标识符等)。一些较旧的用户代理不支持使用id属性创建的锚点。name属性允许更丰富的锚点名称(带有实体)。
其他回答
旧浏览器使用name属性,新浏览器使用id属性怎么样。将使用这两个选项,默认情况下将实现回退方法!!!
现在不是关于支持的问题,因为2021谁会关心比IE6更旧的浏览器?
请注意,Stacksoverflow仍在使用锚点和“name”属性,而不是“name”特性。
Why?
因为你:
SINGLE元素上的id不能有两个值。
#样品{颜色:红色;}<div id=“postNr4245 sample”>示例文本</div><!--着色不起作用--><a href=“#postNr4245”>跳转到帖子</a><!--跳跃不起作用-->
好吧,你可以说你可以用“class”来实现这一点。
这是真的,但如果只有一个元素需要在站点上设置样式,那么就不应该使用类。
Why?
因为如果您使用CSS选择器#idName,并且web浏览器找到了该元素,它就不会再看下去了。它加快了网站的加载速度。
如果您使用.class,它需要查找DOM的每个位置,因为web浏览器不知道您是否使用过.class一次或多次。
如果要在CSS中设置“id”值的样式或使用JS解析它,则不能以数字开头。但是,可以以数字开头“name”值。
根据定义,整个“命名锚点”概念使用name属性。您应该坚持使用名称,但ID属性对于某些javascript情况可能很方便。
就像在评论中一样,你总是可以用两者来对冲你的赌注。
注意JavaScript用户:所有ID都成为窗口下的全局变量。
<h1 id="foo">Foo Title</h1>
刚刚创建了JS全局:
window.foo
window.foo的值将是h1的HTMLElement。
除非您能保证id属性中使用的所有值都是安全的,否则您可能更喜欢使用名称:
<h1 name="foo">Foo Title</h1>
您不应该在任何类型的HTML中使用<h1><a name=“foo”/>foo-Title</h1>作为text/HTML,因为text/HTML不支持XML空元素语法。然而,<h1><a name=“foo”>foo Title</a></h1>在HTML4中是可以的。它在当前起草的HTML5中无效。
<h1 id=“foo”>foo Title</h1>在HTML4和HTML5中都可以。这在Netscape 4中不起作用,但您可能会使用其他十几个在Netscape 4上不起作用的功能。