原生javascript如何实现回到顶部平滑滚动?

JavaScript014

原生javascript如何实现回到顶部平滑滚动?,第1张

// 设置准备要滚动的元素

let p = document.getElementById('userDetailContent').parentNode

// 该元素目前 顶部 被卷起(隐藏)的高度

let t = p.scrollTop

// 这段匀速运动 分30步来走, step:每一步走的距离

let step = Math.floor(t / 30)

if( step > 1)  //一步最少要走1个像素,否则无限触发滚动

    (function walkTop(t) {

        setTimeout(()=>{

            // scrollTo( x轴滚动, y轴)

            p.scrollTo(0, t -= step) // 走一步, 将剩余路程 减去一步的路程的结果

            if(t<0) return // 停止迭代循环

            walkTop(t)//迭代

        },1)// 每毫秒走一步

    })(t) // 自执行函数 传入参数t ,!important

可以给你提供一点思路,jquery有个方法animate动画效果。详情可以参考他的帮助文档,使用很简单

一个大的div,设置好他的高度height:400pxoverflow:hidden,让超出部分隐藏,div里面有个小层,来放你要滚动的内容,点击一下top 就animate({"margin-top":"每次滚动的像素"},"time,滚动的时间",function(){//滚动完之后是否执行其他函数})