前端页面滚动到指定位置

1,702 阅读2分钟

前言

将前端页面滚动到指定位置,一般有两种方案,一种是通过 <a> 标签,直接跳转到 id 属性为 <a> 标签 href 即可,这样可以直接跳转到指定位置,这也是以前多 html 页面经常用到的,还有另外一种,直接通过 js 调用 scrollIntoView 跳转到指定节点位置

他们分别有各自的优缺点,看了他们介绍就能了解到了

<a> 标签跳转

多 html 页面下,一般一个路由一个 html 页面,给我们的标题分别设置 id 属性名, 此时跳转标签 <a> 元素 href 设置成指定的 id 即可,这样会自动完成跳转

并且当浏览器路径后面加上 #[标签名]这就就可以直接跳转到指定位置,例如:https://www.baidu.com/卡卡罗特#超赛一),假设这个超赛一就是我们设置的标签和id,通过url连接可以直接访问网页时跳转到指定位置


<a href="#超赛一" />

<div id="超赛一" >

优点:使用方便,易分享,多html页面下,可以有更好体验

缺点:标签会占用路由,在单页面模式(例如:react),通过路由调整页面时,这个标签会影响到页面跳转

scrollIntoView 跳转

除了上面的,我们可以通过 dom 的 scrollIntoView 方法将页面移动到该节点位置

首先,我们不管是通过 id 还是其他手段获取到 dom元素,然后通过获取到的 dom 元素,调用其 scrollIntoView 方法实现跳转

const dom = ...

//这样就跳转到指定位置了
dom.scrollIntoView()

//并且还可以设置跳转行为方式和位置
dom.scrollIntoView({
    behavior: 'smooth', //平滑的方式移动(带移动动画),默认无动画
    block: 'center', //可以设置标签位置在中间,默认顶部 start
})

scroll、scrollTo

这也是比较常见的滚动到指定位置,滚动视图中,可以操作滚动视图,让其内容滚动到指定偏移位置

//滚动到指定偏移位置
scrollview.scroll(x, y)
scrollview.scrollTo(x, y)