逻辑不知道对不对,有点晕。
代码中的加粗区域是滚轮一下时得到isTop为false,然后再滚一次变成true然后执行ClearInterval?为什么在运行时滚一次就可以了?而不是滚两次?window.onload = function(){
var obtn = document.getElementById('btn');
//获取页面可视区的高度
var clientHeight=document.documentElement.clientHeight;
var timer = null;
var isTop = true;
window.onscroll=function(){
var osTop=document.documentElement.scrollTop||document.body.scrollTop;
if (osTop >= clientHeight){
obtn.style.display="block"; //显示按钮
}else {
obtn.style.display="none"; //隐藏按钮
}
if (!isTop){
clearInterval(timer);
}
isTop = false;
};
obtn.onclick = function(){
//设置定时器
timer = setInterval(function(){
var osTop=document.documentElement.scrollTop||document.body.scrollTop;
var ispeed = Math.floor(-osTop / 6);
//获取滚动条距离顶部的高度
document.documentElement.scrollTop=document.body.scrollTop=osTop+ispeed;
isTop = true;
if(osTop == 0){
clearInterval(timer);
}
},30);
}
}