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);
}