原生js滚动动画

  • scrollTop:元素滚动至上面的距离
  • scrollHeight:元素滚动区域的高度
  • clientHeight:元素可视区域的高度

要计算滚动距底部的距离,可以通过公式el.scrollHeight - (el.scrollTop + el.clientHeight),得到的差值,就是距底部的距离,也可以通过设置元素的scrollTop实现滚动到特定位置,但js不支持动画,滚动并不带有动画,而是直接改变位置。为了可以实现滚动动画,可以通过setInterval函数来实现每次滚动一小段距离,这样设定一个过渡时间,就可以实现滚动动画。

const ScrollTop = (number = 0, time) => {
    if (!time) {
        document.body.scrollTop = document.documentElement.scrollTop = number
        return number
    }
    const spacingTime = 20 // 设置循环的间隔时间  值越小消耗性能越高
    let spacingInex = time / spacingTime // 计算循环的次数
    let nowTop = document.body.scrollTop + document.documentElement.scrollTop // 获取当前滚动条位置
    let everTop = (number - nowTop) / spacingInex // 计算每次滑动的距离
    let scrollTimer = setInterval(() => {
        if (spacingInex > 0) {
            spacingInex--
            ScrollTop(nowTop += everTop)
        } else {
            clearInterval(scrollTimer) // 清除计时器
        }
    }, spacingTime)
}

代码来源https://blog.csdn.net/qq_39624107/article/details/81132981

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容