2024-12-13    2024-12-13    872 字  2 分钟

如何设置锚点,使得我们可以跳转到网页的指定位置呢?往下看。

简单的锚点

首先,我们需要设置一个锚点链接(跳转去锚点的连接) - <a href="#maodian">跳转去下锚位置</a> 。看,只需要在锚点链接的 href 属性值最前面加 # (如 #maodian)就可以了。

那么,如何设置锚点呢?

1
2
3
4
5
6
7
<!-- 设置锚点链接 -->
<a href="#maodian">跳转去下锚位置</a>

<!-- 两种设置锚点的方式 -->
<a name="maodian">锚点</a>
<!-- 或 -->
<div id="maodian">锚点</div>

看,只需要一个带有 name 属性(其值为锚点链接 href 属性值去掉 #,如 maodian)的 <a> 标签;或者是一个带有 id 属性(其值也为锚点链接 href 属性值去掉 #,如 maodian)的普通标签即可。

这种方法有一个不算缺点的缺点 - 浏览器的 URL 会发生变化。

有没有办法让 URL 不变化呢?有,使用 JavaScript ,这里我们只介绍一个最佳实践的办法。

使用 scrollIntoView

如果滚动页面也是 DOM 没有解决的一个问题。为了解决这个问题,浏览器实现了一下方法,以方便开发人员如何更好的控制页面的滚动。

在各种专有方法中,HTML5 选择了 scrollIntoView() 作为标准方法。

scrollIntoView() 可以在所有的 HTML 元素上调用,通过滚动浏览器窗口或某个容器元素,调用元素就可以出现在视窗中。

如果给该方法传入 true 作为参数,或者不传入任何参数,那么窗口滚动之后会让调动元素顶部和视窗顶部尽可能齐平。如果传入 false 作为参数,调用元素会尽可能全部出现在视口中(可能的话,调用元素的底部会与视口的顶部齐平。)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<html>
    <body>
        <!-- 锚点链接 -->
        <button id="md-link-1">scrollIntoView(true)</button>
        <button id="md-link-2">scrollIntoView(false)</button>
        <!-- ... -->
        <!-- 锚点 -->
        <div id="maodian1">scrollIntoView(ture) 元素上边框与视窗顶部齐平</div>
        <div id="maodian2">scrollIntoView(false) 元素下边框与视窗底部齐平</div>
    </body>

    <script>
        // 元素上边框与视窗顶部齐平
        document.querySelector("#md-link-1").onclick = function () {
            // document.querySelector("#maodian1").scrollIntoView(); 
            // 或
            document.querySelector("#maodian1").scrollIntoView(true);
        };
        // 元素下边框与视窗底部齐平
        document.querySelector("#md-link-2").onclick = function () {
            document.querySelector("#maodian2").scrollIntoView(true);
        };
    </script>
</html>

除了手动触发滚动外,也可以在渲染页面的时候使其完成自动跳转到锚点处,快去实现一下吧。