你手头有篇长文,锚点想从中间某段跳回顶部,本页或者跳到文末的跳转表格——别急着装插件,HTML自带的锚点锚点就能干这活儿。它不依赖任何JavaScript,本页干净利落。跳转 锚点的锚点原理特别直白:给页面某个位置贴个标签,再做一个指向这个标签的本页链接。点击链接,跳转浏览器就滚动到标签所在处。锚点这跟你在纸质书里夹书签,本页然后翻到那一页是跳转一个道理。 **先给目标位置贴标签。锚点** 在你想跳转到的本页元素上,加一个`id`属性。跳转比如文章末尾有个结论区,你可以写成: ```html ``` 注意,`id`值在整个页面里必须是唯一的。你写两个`id="conclusion"`,浏览器就懵了,不知道听谁的。 **再做跳转链接。** 在页面别处放一个``标签,`href`属性里写`#`加上那个`id`值: ```html 直接看结论 ``` 用户一点,页面就“嗖”地滚到那个`div`所在的位置。注意`#`不能漏,漏了它就当普通链接去请求一个新页面了。 **想跳回顶部?** 最省事的办法是给``或页面最外层容器加个`id="top"`,然后链接写`href="#top"`。或者干脆用`href="#"`——很多浏览器默认会把空锚点当作回到顶部,但这行为不统一,我建议你显式写`id`更靠谱。 **有个细节容易踩坑。** 如果你给链接加`target="_blank"`,它会在新标签页打开,锚点跳转就失效了——因为新标签页没有历史记录,浏览器不知道往哪滚。同一页面跳转,别加`target`。 **关于平滑滚动。** 默认跳转是瞬移,眼睛跟不上。给`html`加一行CSS: ```css html { scroll-behavior: smooth; } ``` 再点锚点,页面就会匀速滑过去,体验好得多。这行代码不影响其他滚动行为,放心用。 **还有个实用场景:长表单里的错误提示。** 用户填表漏了必填项,你可以在提交时用JavaScript定位到第一个出错的输入框,`element.focus()`加`element.scrollIntoView()`,这比纯锚点更灵活,因为`id`是动态算出来的。但如果你只想静态跳转,锚点完全够用。 **别把锚点和`href="#"`混淆。** 有些老代码用`href="#"`做“点击无动作”的占位链接,结果点击后页面跳回顶部,把用户吓一跳。正确做法是用`href="javascript:void(0)"`或者干脆不写`href`,用`