锚点即指 html 中的链接,在页面中适当的添加锚点可以大大提高阅读或查找效率
前言
锚点是网站中常用的功能。前端简单实现锚点的方法,使用 a 标签把 href 属性写成要跳转到的元素 id,比如以下代码:
<a href="#anchor"></a>
<div id="anchor"></div>
点击 a 标签页面就会跳转到指定 id 元素的位置。并改变链接地址比如:http://www.xxxx.com#anchor
。
虽然不会有什么问题,直接跳转过去立马完成产品的需求,但是当网页中存在多个锚点时,就会出现点击浏览器后退按钮并不会返回之前浏览的网页,而是返回上一个带有锚点的链接。
举个例子,当前网站链接是
http://www.xxxx.com#anchor2
, 当用户想返回之前的页面,点击后退按钮后,链接变成了http://www.xxxx.com#anchor1
。但还是在同一个页面中,会使用户感到迷惑,降低用户体验。
解决问题
scrollIntoView()
方法让当前的元素滚动到浏览器窗口的可视区域内,详见 MDN 对此方法介绍。
简单代码实现:
<!-- HTML -->
<div onclick='getAnchor('anchor_1')'>定位到锚点一</div>
<div onclick='getAnchor('anchor_2')'>定位到锚点二</div>
<div id='anchor_1'>锚点位置一</div>
<div id='anchor_2'>锚点位置二</div>
<!-- JS -->
function getAnchor (id) {
// 跳转到锚点
document.getElementById(id).scrollIntoView()
}
如果需要让页面平滑滚动到指定位置,则需要增加参数 behavior
设置其值为 smooth
document.documentElement.scrollIntoView({
behavior: "smooth",
block: "start",
inline: "nearest"
});
其他使用场景
回到顶部 也是网页中常用功能。
简单代码实现 document.querySelector('html').scrollIntoView()
结语
本文只是简单介绍了使用方法,想要详细了解的话,可以参考张鑫旭的这篇文章:CSS scroll-behavior 和 JS scrollIntoView 让页面滚动平滑