一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

原生js实现返回顶部缓冲效果

时间:2017-02-06 编辑:简简单单 来源:一聚教程网

运行原理

通过定时器30毫秒执行一次滚动条上升,每次上升的高度为当前高度的80%,这样就达到了上升缓冲的动画效果。

判断当滚动条高度超过一屏时,按钮显示,默认隐藏

知识要点

scrollTop//获取滚动条高度 需要写兼容

clientHeight//可视窗口高度 需要写兼容

setInterval//定时器

window.onscroll//滚动触发事件

完整代码

 

 代码如下 复制代码

demo

返回顶部

  //在页面加载完后立即执行多个函数方案

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

    }

  }

 

热门栏目