用JS制作一个点击向下滚动,点击返回顶部(用Tween函数)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="js/tween.js" ></script>
<style>
*{
margin: 0;padding: 0;
}
.test{
border: 1px red solid;
height: 98px;
line-height: 100px;
}

#down{
    width: 100px;
    line-height: 100px;
    background: skyblue;
}
#top{
    width: 100px;
    line-height: 100px;
    text-align: center;
    background: skyblue;
    position: fixed;
    right: 10px;
    bottom: 10px;
}



</style>

</head>
<body>
<input type="button" id="down" value='点击向下滚动'/>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<input type="button" id="top" value="点击返回顶部" />

<script type="text/javascript">
        //获取当前TOP 还有down的ID
    var oDown = document.getElementById('down');
    var oTop = document.getElementById('top');
    
    //兼容性写法
    function setScrollerPos(aTop){
        document.body.scrollTop = aTop;
        document.documentElement.scrollTop = aTop;
    }
    function getScrollerPos(){
        return document.body.scrollTop||document.documentElement.scrollTop;
    }
    //给按钮绑定一个事件,运动tween函数
    oDown.onclick = function(){
        
        //起始值
        var start = 0;
        //结束值
        var end = 500;
        //过程
        var change = end - start;
        //步数
        var step = 0;
        //最大走的步数
        var stepMax = 30;
        //设置一个计时器
        var timer = setInterval(function(){
            //步数增加
            step++;
            if(step>=stepMax){
                //暂停计时器还有清空计时器
                clearInterval(timer);timer=null;
            }
            //tween函数曲线
            var t = Tween.Cubic.easeOut(step,start,change,stepMax);
            //在可滚动条调用t
            setScrollerPos(t);
        }, 30);
    }
    
    //同上
    oTop.onclick = function(){
        var start = getScrollerPos();
        //滚动条返回顶部就是滚动条位置等于0
        var end = 0;
        var change = end - start;
        var step = 0;
        var stepMax = 30;
        var timer = setInterval(function(){
            step++;
            if(step>=stepMax){
                clearInterval(timer);timer=null;
            }
            var t = Tween.Cubic.easeOut(step,start,change,stepMax);
            setScrollerPos(t);
        }, 30);
    }
</script>

</body>
</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,963评论 2 17
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,142评论 1 10
  • # tween.js user guide _**NOTE** this is a work in progres...
    3216732c1db1阅读 434评论 0 0
  • 最近新学了拖拽效果,没有好记性,只好用烂笔头记录一下了。首先讲讲拖拽的思路(只分析水平方向,垂直方向类似): 首先...
    詹小云阅读 1,433评论 0 6
  • 职场上,“稍后”需要侯多久? 文/宁国涛 前几年,我担任公司人力资源部经理的时候,人事助理的工作态度让我非常恼火…...
    宁让职场更给力阅读 2,757评论 36 50