需求:
点击按钮之后可以由快到慢地回到顶部,处于顶部位置时按钮消失,按钮位于页面的右下方。
原理:
滚动条滚出距离进行判断,当小于某个值得时候,按钮为none,大于时,则显示,由快到慢返回顶部,运用取整作差得到距离差,运用定时器计算
代码:
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box{
width: 300px;
height: 6000px;
background-color: black;
position: relative;
}
.btn{
position: fixed;
right: 50px;
bottom: 10px;
}
</style>
</head>
<body>
<div class="box" id="top"></div>
<button class="btn" style="display: none;"> 返回顶部</button><!-- 注意这里不能加a标签进行转跳 -->
<script>
var btn = document.querySelector("button")
window.onscroll = function(){
var x = document.documentElement.scrollTop
console.log(x)
if(x>600){
btn.style = "display: block"
}
else{
btn.style = "display: none"
}
}
btn.onclick = function(){
time = setInterval(function(){
var y = document.documentElement.scrollTop
var speed = Math.floor(y/11)
document.documentElement.scrollTop = y-speed
if(speed == 0){
clearInterval(time);
}
},50)
}
</script>
</body>
演示:
QQ视频20230112155614