Url 名称与DIV ID冲突相同的命名锚(A)
我在一个网站上工作,该网站使用一个侦听器来显示和隐藏内容div,并滚动到同名的命名锚 我遇到了一个奇怪的问题,它没有滚动到锚,而是滚动到ID与锚名称相同的DIV 一旦我将DIV ID更改为其他内容,行为就如预期的那样 我似乎找不到关于这方面的任何文档,我想知道这是否是有文档记录的行为 有效的代码:Url 名称与DIV ID冲突相同的命名锚(A),url,html,anchor,Url,Html,Anchor,我在一个网站上工作,该网站使用一个侦听器来显示和隐藏内容div,并滚动到同名的命名锚 我遇到了一个奇怪的问题,它没有滚动到锚,而是滚动到ID与锚名称相同的DIV 一旦我将DIV ID更改为其他内容,行为就如预期的那样 我似乎找不到关于这方面的任何文档,我想知道这是否是有文档记录的行为 有效的代码: <a name="top">top</a> <p id="bottomx" style="height: 1800px;"> <a href="#top"&
<a name="top">top</a>
<p id="bottomx" style="height: 1800px;">
<a href="#top">top</a>
<a href="#bottom">bottom</a>
<br>
</p>
<a name="bottom">bottom</a>
底部
在第二个示例中,它将滚动到名为“bottom”的p。同样,如果我在页面底部创建一个ID为“bottom”的DIV,然后点击page.html#bottom,它就会向下滚动到该DIV
只是看起来很困惑。你知道为什么会这样吗?Safari和FF中的行为相同 :
对于HTML文档(和HTML MIME类型),执行以下处理
必须遵循模型,以确定所示零件的类型
文件是
HTML 4.01和XHTML 1.0规范要求
a
元素中的name
属性不得与id
属性的值相同,除非在同一元素上设置,否则文档存在错误。浏览器可以自由地应用自己的错误处理,这可能是意外的
HTML5草案指定了复杂的错误处理规则,但它们也将a
元素中的name
属性声明为过时
对同一文档中的两个元素使用相同的
id
值是不合逻辑的(正式禁止),因为id
的唯一目的是为元素提供唯一标识符。
构造早于HTML历史中的id
,并且在受限的设置中总是要扮演与id
相同的角色。因此,很自然,它被以同样的方式对待。有趣-我在HTML5规范中很难找到这一点。如果在“id和name属性共享相同的名称空间。这意味着它们不能在同一文档中定义具有相同名称的锚定。”。我假设这是在HTML5规范中重新定义的,考虑浏览器所执行的常见行为。我想我从来没有想过,你可以使用哈希来滚动到ID或其他任何东西的名称。今天我学到了一些新东西。
<a name="top">top</a>
<p id="bottom" style="height: 1800px;">
<a href="#top">top</a>
<a href="#bottom">bottom</a>
<br>
</p>
<a name="bottom">bottom</a>