美文网首页
原生js实现滑动并监听滑动事件

原生js实现滑动并监听滑动事件

作者: B612的末影人 | 来源:发表于2022-03-23 09:43 被阅读0次

滚动可以分为窗口滚动div滚动

窗口滚动

因为要兼容不同浏览器,窗口滚动的当前高度是取这三个值

document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop

div滚动

假设html代码如下:

<div class="scroll-view">
    <div class="content" >
        <p>...</p>
        <p>...</p>
        ...
    </div>
</div>

<style>
    .scroll-view {
        height: 100%;
        overflow-x: hidden;
        overflow-y: scroll;
    }
</style>

这么取当前位置:

const $ = document.querySelector.bind(document)
function doSomething (currentY) {
    console.log('当前位置', currentY);
}
let lastKnownScrollPosition = 0;
let ticking = false;
$('.scroll-view').addEventListener('scroll', function(e) {
    lastKnownScrollPosition = e.target.scrollTop;
    if (!ticking) {
        window.requestAnimationFrame(function() {
            doSomething(lastKnownScrollPosition);
            ticking = false;
        });
        ticking = true;
    }
});

这里的requestAnimationFrame是为了避免消耗过多的资源

requestAnimationFrame 比起 setTimeout、setInterval的优势主要有两点:
1、requestAnimationFrame 会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率,一般来说,这个频率为每秒60帧。
2、在隐藏或不可见的元素中,requestAnimationFrame将不会进行重绘或回流,这当然就意味着更少的的cpu,gpu和内存使用量。

相关文章

  • 原生js实现滑动并监听滑动事件

    滚动可以分为窗口滚动和div滚动 窗口滚动 因为要兼容不同浏览器,窗口滚动的当前高度是取这三个值 div滚动 假设...

  • js原生滑动事件

    html: js:

  • Android列表滑动动效

    设计分析: 已经确定了要实现RecyclerView滑动监听,必然就得了解RecyclerView滑动监听实现的方...

  • Android RecyclerView 滚动监听

    前面整理了 ScrollView 的滑动监听,这里再记录一个 RecyclerView 的滑动事件。 纵向滑动

  • 常见tab效果的实现

    原生JS实现 tab栏切换地址JQ实现左侧菜单栏地址JQ实现滑动切换地址

  • 自己customize的底部控件

    自己实现的一个底部控件 监听MKWebView的滚动事件,上滑动消失,下滑动出现。同时用blur效果和FontAw...

  • 原生js实现滑动进度条

    原生js实现滑动进度条 实现原理 首先是用touchmove()时间获取到移动端事件参数,保存下进度条的最大长度,...

  • 微信小程序 滑动删除列表项

    效果图 思路 每个列表项绑定touchstart和touchmove事件,监听滑动手势,确定滑动角度,判断滑动是否...

  • 无标题文章

    滑动完毕静止 滑动完毕后,点击按钮 监听到滑动完毕事件后要做一些手动处理,用代理对象去监听 手松开,结束减速,速度...

  • 监听WebView滚动事件

    使用场景 (1)有些时候,我们需要监听webview的滑动事件,来实现FloatingActionButton的显...

网友评论

      本文标题:原生js实现滑动并监听滑动事件

      本文链接:https://www.haomeiwen.com/subject/wjhcjrtx.html