0

“html 链接”的第一个 Google搜索结果表明(转述)要在网页内创建书签/部分,我们必须这样做:

<a id='section-2'>Section 2</a>

这样我们就可以像这样链接到它:

<a href='page.php#section-2' >Click</a>

但是为什么该网站建议在“第 2 节”周围使用锚标记?- 当它可以使用跨度完成时:

<span id='section-2'>Section 2</span>

是否存在兼容性问题?因为“在网页中创建书签”的第一个搜索结果还说用锚标记包围标题:

<p><a name="title">Title</p>

尽管由于各种其他原因,这个特定示例是不正确的。

我有一个补充问题:

当它可以像这样简单地完成时,为什么用容器包围标题:

<span id='section-2'></span>Section 2

有关系吗?

<span id='section-2'>Sec</span>tion 2

<a href='page.php#section-2' >Click</a>

4

2 回答 2

5

无关紧要。W3schools是不可靠的,不要使用它,你会避免混淆和错误信息;见http://w3fools.com

在过去,在页面中设置目标锚点的唯一方法是使用<a name=...>...</a>元素(在文本级别)。后来,id添加了该属性,现在所有使用的浏览器都支持该属性,因此您只需将id属性附加到任何元素即可将其设为目标锚点。例如,为了可以链接到类似的标题<h2>Section 2</h3>,您可以将其设为<h2 id=section-2>Section 2</h2>. 不需要人为的额外元素。

使用<span id='section-2'></span>Section 2,虽然形式上是正确的,但不是一个好主意。使用它你什么也得不到,这与更合乎逻辑的标记相反。如果你稍后想设置(突出显示)用户通过链接“跳转”到的元素,使用:target伪类,你会发现自己处于一个尴尬的境地:伪类会让你设置样式的空内容span

关于标题中的问题,没有理由将页面顶部作为目标锚点,<a id='top'>Top of page</a>无论是否有。首先,您可以使用href=#URL 规范来引用页面#的开始,表示当前资源的开始。其次,“返回顶部”链接基本上是无用的或更糟:每个浏览器都有一个简单的命令可以转到页面的开头,而明确的“返回顶部”链接可能会令人困惑:返回什么

于 2013-06-30T05:38:20.660 回答
3

在 html 的早期,锚元素是做到这一点的唯一方法,但仅仅因为你现在可以使用其他元素类型来做到这一点并不意味着你应该这样做:为此目的使用锚元素在语义上是正确的,因为它清楚对于任何阅读或维护您的标记的人,该元素旨在作为导航目标。(请注意,页面上通常会有许多元素具有 id 但不是导航目标。)

“当它可以像这样简单地完成时,为什么要用容器包围标题:
<span id='section-2'></span>Section 2

因为如果你把标题的文本放在一个元素中,你可以设置它的样式和/或很容易地从 JavaScript 中弄乱它。事实上,如果它是一个标题,您可能希望将它放在一个<h1>,<h2>等标签中,而不是一个<span>.

于 2013-06-30T05:42:21.440 回答