原生js如何实现jQuery.animate中的scrollTop方法

网上找不到一个好的介绍来实现,

$('html, body').animate({
  scrollTop: 800
}, 1000)

怎么控制这个scrollTop的 时间呢?

阅读 7.3k
3 个回答
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style>
    html{
        height : 200%;
    }
    #position{
        width : 100px;
        height : 100px;
        position: absolute;
        top : 100%;
        left: 80%;
        background: red;
    }
</style>
<body >
    <div id="position"></div>
</body>
<script>
    (()=>{

        let pos = document.getElementById('position');
        pos.onclick = ()=>{
            let curr_top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
            let time_id = setInterval(()=>{
                curr_top -= 10;
                document.body.scollTop = curr_top;
                document.documentElement.scrollTop = curr_top;
                if(curr_top <= 0){
                    clearInterval(time_id);
                }
            } , 100);

        }
    })()
    
</script>
</html>

你要做的不是控制时间,而是控制步长,比如800px,800ms,就是800ms内移动800px,如果是1600px,那就800ms内移动1600px

666,竟然用ES6

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏