原生js實現返回頂部緩衝效果,js返回頂部

來源:互聯網
上載者:User

原生js實現返回頂部緩衝效果,js返回頂部

運行原理

通過定時器30毫秒執行一次捲軸上升,每次上升的高度為當前高度的80%,這樣就達到了上升緩衝的動畫效果。

判斷當捲軸高度超過一屏時,按鈕顯示,預設隱藏

知識要點

scrollTop//擷取捲軸高度 需要寫相容clientHeight//可視視窗高度 需要寫相容setInterval//定時器window.onscroll//滾動觸發事件

完整代碼

<!DOCTYPE html><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>demo</title><style>body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{margin:0;padding:0;}h1,h2,h3,h4,h5,h6{font-size:100%;}address,cite,dfn,em,var{font-style:normal;}code,kbd,pre,samp{font-family:courier new,courier,monospace;}ul,ol{list-style:none;}a{text-decoration:none;}a:hover{text-decoration:none;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}legend{color:#000;}fieldset,img{border:0;}button,input,select,textarea{font-size:100%;}table{border-collapse:collapse;border-spacing:0;}.clear{clear: both;float: none;height: 0;overflow: hidden;}.bg{background:#9B1BC5; width: 1000px; height: 3000px; margin: 0 auto;}#gotop{width: 50px; height: 50px; background:#5490F5; color: #fff; position: fixed; left: 50%; bottom: 30px; text-align: center; font-family: "Microsoft Yahei",tahoma,arial; font-size: 14px; cursor: pointer; margin-left: 520px; display: none;}#gotop span{display: block;padding: 5px;}</style></head><body><div class="bg"></div><div id="gotop"><span>返回頂部</span></div><script type="text/javascript">  //在頁面載入完後立即執行多個函數方案  function addloadEvent(func){    var oldonload=window.onload;    if(typeof window.onload !="function"){      window.onload=func;    }    else{      window.onload=function(){        if(oldonload){          oldonload();         }        func();      }    }  }  //在頁面載入完後立即執行多個函數方案結束  addloadEvent(b);  function b(){    var gotop=document.getElementById("gotop");        var timer;    var tf=true;    //滾動觸發    window.onscroll=function(){      //擷取捲軸高度      var ostop=document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;      //擷取視窗可視地區高度      //console.log(ostop)      var ch=document.documentElement.clientHeight||document.body.clientHeight;      //如果頁面超過一屏高度按鈕顯示,否則隱藏      if(ostop>=ch){        gotop.style.display="block";      }else{        gotop.style.display="none";      }      //      if(!tf){        clearInterval(timer);             }       tf=false;    }    //點擊觸發    gotop.onclick=function(){      //建立定時器      timer=setInterval(function(){        //擷取捲軸高度        var ostop=document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;        //每次上升高度的20%        var speed=Math.ceil(ostop/5);        //每次上升當前高度的80%document.documentElement.scrollTop=document.body.scrollTop=ostop-speed;        //如果高度為0,清除定時器        if(ostop==0){          clearInterval(timer);        }         tf=true;      },30);          }  }</script></body></html>

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的協助,同時也希望多多支援幫客之家!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.