html页面刷新回到顶部_回到页面指定位置的三种方式

本文介绍了三种在HTML页面中实现回到顶部的方法:1) 使用a标签结合锚点;2) 利用window.scrollTo()方法,通过设置behavior参数实现平滑滚动;3) 使用Element.scrollIntoView()方法,同样支持平滑滚动,代码更简洁。每种方法都有其适用场景,可以根据需求选择合适的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

107623aaf29ebba5d5b91533e56a8689.png

a 标签

首先放出html

我是顶部

第一种方式回到顶部

第二种方式回到顶部

第三种方式回到顶部

然后具体操作步骤如下

  1. 将a标签放到指定元素的附近
  2. 然后通过点击事件生成 a 标签
  3. 触发a标签事件
  4. 删除a标签

const backTop1 = document.getElementById("backTop1")

backTop1.addEventListener("click", function (e) {

let a = document.createElement("a")

a.href = "#topAnchor"

e.target.appendChild(a)

a.onclick = function (e) {

e.stopPropagation()

}

a.click()

e.target.removeChild(a)

})

效果如下图所示

4eeaeae5fffc1faf291b5ae8e47fffb6.gif

效果很明显,在事件触发之后,页面立马跑到的顶部,在交互性没啥要求的时候,这种做法确实没啥问题,不过要求高了之后就不行了,会显得有些突兀。

scrollTo()

此 api 需要传递 DOM元素相对于window的 left 和 top 的距离,此例子仅展示简单demo,只考虑 top 坐标

当然它还有一个 behavior 参数,将其设置为 smooth 后,将会出现滑动效果 步骤如下:

  1. 计算目标元素距离顶部的距离
  2. 通过事件触发

代码如下:

const backTop2 = document.getElementById("backTop2")

const TOP = document.getElementById("top")

const y = TOP.offsetTop

const backTop3 = document.getElementById("backTop3")

backTop3.addEventListener("click", function (e) {

window.scrollTo({ top: y, left: 0, behavior: 'smooth' })

})

效果如下图所示

971481931ff60b1b2385abc37c50ec76.gif

从效果上来看,相较于a标签,该api支持动画,使得页面更丝滑

Element.scrollIntoView()

该 api 相较于上一个,节点信息更加的明确,操作方法也更加的简洁,更利于后续的维护

代码如下

const backTop2 = document.getElementById("backTop2")

const TOP = document.getElementById("top")

backTop2.addEventListener("click", function (e) {

TOP.scrollIntoView({ behavior: "smooth" })

})

效果如下图所示

f7e82200929f729b2a0bbd9781219a90.gif

从效果上来看,该api和scrollTo的作用是一致的,但是从代码结构上来说,scrollIntoView会更加的简洁

以上三种方法是我目前比较常用的,如有不同之处,还望诸君不吝赐教!

作者:pengpeng

链接:https://juejin.cn/post/6906142651121139719

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值