1

我目前id在 HTML 文档中的每个部分标题上都有一个属性,因此可以使用直接链接到文档中该部分的哈希片段生成 URL。例如:

<h2 id="section3.4">Section 3.4 - Foo</h2>

当然,这将被链接为page.html#section3.4.

我想为该片段提供另一种格式,例如page.html#s3.4. 确切的格式是任意的,在这里并不重要。

显然,不能简单地将多个 ID 标记应用于单个 HTML 元素来实现这一点。解决方案似乎是在与标题相同的位置向页面添加辅助标签,例如:

<h2 id="section3.4">Section 3.4 - Foo</h2><xyz id="s3.4"></xyz>

是否有用于此目的的标准或首选标签类型?环顾四周,我惊讶地发现没有“最佳实践”的答案。

从技术上讲,标签类型是任意的,因为任何具有id属性的元素都应该工作,但是选择canvasor script,例如,显然是愚蠢的。我已经看到a了建议,但我不确定这在语义上是否正确,因为a应该创建一个指向某个位置的锚点,而不是一个位置。

我的一个想法是让封闭section标签的 ID 成为目标,但这并不能启用任意数量的备用片段名称,并且从技术上讲,它没有链接到同一位置,因为边界框受 CSS 约束。

我觉得理想的元素是保证在 DOM 上没有视觉存在,与相邻元素保持相同的垂直位置,没有副作用,并且作为位置标记具有语义意义的元素,同时也不对可访问性有任何影响(例如屏幕阅读器)。但是,我想不出这样的元素。有没有我错过的标准?如果不是,哪个标签可能是最佳选择?

4

1 回答 1

0

在内联上下文中,使用<span>将文本包裹在适当标题内的元素。

<h2 id="section3.4"><span id="s3.4">Section 3.4 - Foo</span></h2>

在块上下文中,使用<div>.

两者在语义上都是中性的。这种方法可以确保标题文本获得适当的焦点,而不管使用哪个片段标识符。

于 2021-11-22T15:20:27.553 回答