1. 回到顶部,使用 scrollIntoView 方法:
Element.scrollIntoView方法滚动当前元素,进入浏览器的可见区域
该方法可以接受一个布尔值作为参数。如果为true,表示元素的顶部与当前区域的可见部分的顶部对齐(前提是当前区域可滚动);如果为false,表示元素的底部与当前区域的可见部分的尾部对齐(前提是当前区域可滚动)。如果没有提供该参数,默认为true
使用该方法的原理与使用锚点的原理类似,在页面最上方设置目标元素,当页面滚动时,目标元素被滚动到页面区域以外,点击回到顶部按钮,使目标元素重新回到原来位置,则达到预期效果。
<body style="height:2000px;"> <div id="target"></div> <button id="test" style="position:fixed;right:0;bottom:0">回到顶部</button> <script> test.onclick = function(){ target.scrollIntoView(); } </script> </body>
2. vue 中滚动条滚到一定距离后,显示『回到顶部』按钮;
(1)监听滚动事件
利用VUE写一个在控制台打印当前的scrollTop。首先,在 mounted 钩子中给window添加一个滚动滚动监听事件:
mounted () { window.addEventListener('scroll', this.scrollToTop) },
然后在方法中,添加这个 scrollToTop 方法:
scrollToTop() {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
console.log(scrollTop)
}
控制台打印结果:
(2) 监听回到顶部按钮距浏览器顶部的距离,滚动的距离如果大于浏览器高度时,设置 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'; } }
(3) 离开该页面需要移除这个监听的事件,不然会报错;
destroyed () { window.removeEventListener('scroll', this.scrollToTop);
}