当一个希望参考某些部分的一个网页,与"http://example.com/#foo"方法,应当一个使用的

<h1><a name="foo"/>Foo Title</h1>

<h1 id="foo">Foo Title</h1>

他们两个的工作,但他们是平等的,或者他们的语义是不一样的?

有帮助吗?

解决方案

根据HTML5规范, 5.9.8航行的一段标识符:

为HTML文件(和text/html MIME type),下面处理模式之后,必须确定什么是所指出的文件的一部分。

  1. 分析网址,并让fragid是 <fragment> 组成部分的网址。
  2. 如果fragid是空string,然后表示的一部分,该文件是顶级的文件。
  3. 如果有一个元素在DOM中,有一个ID完全等于fragid,然后第一个这样的元件在树了被指出的部分的文件;停止算法在这里。
  4. 如果有一个 一个 元素在DOM中,有一名属性,其价值是完全相等fragid,然后第一个这样的元件在树了被指出的部分的文件;停止算法在这里。
  5. 否则,没有指示的一部分文件。

因此,它将会寻找 id="foo", ,然后将遵循的 name="foo"

编辑:正如指出的@hsivonen,在HTML5的 a 元素没有名称的属性。然而,上述的规则仍然适用于其他命名的单元。

其他提示

您不应该在HTML的任何味道使用<h1><a name="foo"/>Foo Title</h1>担任text/html,因为XML空元素语法不text/html支持。然而,<h1><a name="foo">Foo Title</a></h1>是HTML4确定。目前起草它不在HTML5有效。

<h1 id="foo">Foo Title</h1>在两个HTML4和HTML5确定。这不会在Netscape 4的工作,但你可能会用十几个没有在Netscape 4工作等特点。

我不得不说,如果你将要链接到该区域的网页...如page.html中#富和Foo标题是不是你应该使用的链接:

<h1 id="foo">Foo Title</h1>

如果您不是把它周围的<a>参考您的标题将通过您的网站内的<a>特定的CSS的影响。这只是额外的标记,你不应该需要它。我强烈建议放置一个识别码标题,它不仅是更好的形成,但它可以让你要么地址的JavaScript或CSS的对象。

维基百科大量使用这种特征是这样的:

<a href="#History">[...]</a>
<span class="mw-headline" id="History">History</span>

和维基百科的工作对于每个人,所以我将感到安全坚持这种形式。

也不要忘记,可使用,这不仅与跨但与div或甚至表的细胞,然后你有访问:目标伪类的元素。只是看出来不要改变宽,与大胆的文字,因为移动的内容,这是令人不安。

名为锚-我的表决是以避免:

  • "名称和标识都相同的名字空间..."-两个属性,与相同的名称空间是太疯狂了。我们只能说废弃了。
  • "锚因素,而不href atribute"-再次自然元素(超级链接或不)是指由具有atribute?!双疯狂。常识说到避免。
  • 如果你曾经的风格锚没有伪类型适用于每一个。在CSS3你可以得到这周围有属性的选择(或同样的定型为每个pseudoclass),但它仍然是一个解决办法。这通常不来因为你选择颜色每伪类,并强调在本默认情况下,它才有意义,除,这使得它的同的其它文本。但是你决定要让你的链接大胆的,它会引起麻烦。
  • Netscape4可能会不支持id功能,但仍然是一个未知的属性不会造成任何麻烦。这就是所谓的兼容性对于我。
<h1 id="foo">Foo Title</h1>

是应该使用什么。除非你想有一个链接,不要使用锚。

抬头为JavaScript的用户:所有标识成为全局变量在窗口

<h1 id="foo">Foo Title</h1>

刚创建的JS全球:

window.foo

window.foo的值将是HTMLElementh1

除非你能保证id属性中使用的所有值是安全的,你可能更愿意坚持name

<h1 name="foo">Foo Title</h1>

ID方法不会在旧的浏览器,锚名称方法将在新的HTML版本中弃用......我会用ID去。

有没有语义区别;该趋势的标准是朝向使用 id 而不是 name.然而,有些差异,可能会导致一个以更喜欢 name 在一些情况。HTML4.01提供说明书 下面的提示:

使用 idname?作者应该考虑以下问题作出决定时是否使用 idname 对于一个锚点名称:

  • Id属性可以作为不仅仅是一个锚名(例如,样式表中选择、处理标识符,等等)。
  • 一些较老的用户代理不支持锚创建与id属性。
  • 该名称属性,允许更丰富的锚点的名称(有实体)。

我有一个网页由多个竖直堆叠的div容器,格式相同的,并且仅在序列号不同。我想隐藏在每个div的顶部的名称锚,所以最经济的解决方案被证明是包括锚作为开口div标签,即,

内一个id
<div id="[serial number]" class="topic_wrapper">

只是一个观察关于标记在HTML的先前版本的标记形式提供的锚点。在HTML5标记的形式使用id属性,而大多是等价的,需要一个要素来识别,而几乎所有这些通常被认为含有的内容。

这是空的跨度或DIV可以使用,例如,但这种用法的外观和气味变质。

一个想法是使用WBR元件用于此目的。该WBR有一个空的内容模型,只是宣称换行符是可能的;这仍然是一个稍微有偿使用的标记标签,不过不如无偿文档部门或空文本跨度太大。

在第二样品分配一个唯一的ID到所讨论的元件。然后,该元件能够被操纵或使用DHTML访问。

在第一个,在另一方面,设置文档内的指定位置,类似于一个书签。连接到“锚”,它非常有意义。

在HTML 5,id=""属性定义的元素,这也是一个片段链接的锚定的唯一标识符。在以前的HTML标准,name=""元件的<a>属性定义了片段链接的锚。我建议是这样的:点击<a name="foo" id="foo"></a><h1>Foo Title</h1>结果 因为对于id=""属性的支持是有点参差不齐(尽管所有主要浏览器的最新版本支持它,不把发行不超过几多岁[而且最好不要碰坏如果有ISN” T A很好的理由])。它是兼容的,与它没有任何风格的中link'd元素,收盘仍元素之外,但它仍然是目前所有的标准有效。

可以肯定的name=""元件的id=""<a>属性是相同的。

如何使用name属性旧的浏览器和id属性到新的浏览器。这两种选择将被使用和备用方法将被默认实现!!!

在整个“命名锚”的概念使用的名称属性,根据定义。你应该坚持使用该名称,但ID属性可能会派上用场了一些JavaScript的情况。

由于在评论中,你总是可以使用这两种对冲你的赌注。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top