HTML4的name锚点已彻底失效,现代页面必须用id属性实现锚点跳转;浏览器仅识别href="#xxx"匹配id="xxx"的元素,且需注意fixed/transform容器、动态渲染及id唯一性等隐藏问题。

HTML4 时代用 即便用了 真正要注意的是:锚点不是“加个标签就行”,它依赖浏览器对 name 属性定义锚点目标已彻底失效,现代页面必须改用 id —— 浏览器不会识别 @#@#@#@#@#@#@#@#@#@0
<a id="contact"></a><h2>联系我们</h2> —— 虽能跳,但语义错误且焦点落在空白 a 上,影响键盘导航常见跳转失败的三个隐藏原因
id,仍可能不滚动:问题往往不在锚点本身,而在渲染上下文或样式干扰。
position: fixed 或 transform 父容器会截断 hash 滚动行为(尤其是 Vue/React 动态渲染后)scroll-behavior: smooth 在某些 iOS Safari 版本下导致 hash 跳转卡住,可临时移除测试element.scrollIntoView(),不能依赖原生 hash 导航id 的实时注册机制。动态插入的元素必须确保 id 值唯一且非空,重复 id 会导致跳转到第一个匹配项——这个行为不会报错,但结果不可控。











