邏輯不知道對不對,有點暈。
代碼中的加粗區(qū)域是滾輪一下時得到isTop為false,然后再滾一次變成true然后執(zhí)行ClearInterval?為什么在運行時滾一次就可以了?而不是滾兩次?window.onload = function(){
? ?var obtn = document.getElementById('btn');
? ?//獲取頁面可視區(qū)的高度
? ?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(){
//設(shè)置定時器
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);
? ?}
}
2015-11-27