vue中实现滚动到一定距离回到顶部

tech2026-01-19  6

滚动到一定距离返回到顶部,使用 scrollIntoView 方法:(完整代码在文章最后)

Element.scrollIntoView方法滚动当前元素,进入浏览器的可见区域

该方法可以接受一个布尔值作为参数。如果为true,表示元素的顶部与当前区域的可见部分的顶部对齐(前提是当前区域可滚动);如果为false,表示元素的底部与当前区域的可见部分的尾部对齐(前提是当前区域可滚动)。如果没有提供该参数,默认为true

使用该方法的原理与使用锚点的原理类似,在页面最上方设置目标元素,当页面滚动时,目标元素被滚动到页面区域以外,点击回到顶部按钮,使目标元素重新回到原来位置,则达到预期效果。    第一步:HTML代码/template代码

<a href="#top" target="_self" id="to-top-btn"> <img src="../../public/img/返回顶部.png" alt /> </a>

第二步:vue 中滚动条滚到一定距离后,显示『回到顶部』按钮;

(1)监听滚动事件:利用vue写一个在控制台打印当前的scrollTop。首先,在 mounted 钩子中给window添加一个滚动滚动监听事件

mounted () { window.addEventListener('scroll', this.scrollToTop) },

(2)然后在方法中,添加这个 scrollToTop 方法:

scrollToTop() {   var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;   console.log('距离顶部的距离:'+scrollTop) }

(3)控制台打印结果: (4)监听回到顶部按钮距浏览器顶部的距离,滚动的距离如果大于浏览器高度时,设置 toTop 为true,否则就是false;

scrollToTop(el) { let topBtn = document.getElementById('to-top-btn'); let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; let browserHeight = window.outerHeight; if (scrollTop > browserHeight) { topBtn.style.display = 'block'; } else { topBtn.style.display = 'none'; } }

(5)离开该页面需要移除这个监听的事件,不然会报错

destroyed () { window.removeEventListener('scroll', this.scrollToTop); }

完整代码如下:

<template> ...(内容)... //写在代码最下面即可 <a href="#top" target="_self" id="to-top-btn"> <img src="../../public/img/返回顶部.png" alt /> </a> </template> <script> mounted () { window.addEventListener('scroll', this.scrollToTop) }, methods: { //监听回到顶部按钮距浏览器顶部的距离,滚动的距离如果大于浏览器高度时,设置 toTop 为true,否则就是false; scrollToTop() { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; console.log("距离顶部的距离:" + scrollTop); }, scrollToTop(el) { let topBtn = document.getElementById("to-top-btn"); let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; let browserHeight = window.outerHeight; if (scrollTop > browserHeight) { topBtn.style.display = "block"; } else { topBtn.style.display = "none"; } }, //离开该页面需要移除这个监听的事件,不然会报错; destroyed() { window.removeEventListener("scroll", this.scrollToTop); } } </script> <style> a { width: 2.4rem; height: 2.4rem; position: fixed; top: 44rem; right: 0.2rem; display: none; } </style>

效果视频:

返回顶部

最新回复(0)