首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

原生 JS 实现惯性滚动,给鼠标滚轮增加阻尼感,纵享丝滑

前言当我们在移动终端上滑动页面,手指离开屏幕后,页面的滚动并不会马上停止,而是在一段时间内继续保持惯性滚动,并且滑动阻尼感和持续时间与滑动手势的幅度成正比。...可以通过以下例子感受两种滚动的差异:图片https://code.juejin.cn/pen/7272919488994279484本文将教会你如何让鼠标滚轮也能够丝滑地操作网页,带来更舒适的页面惯性滚动体验...,同时讲解其中技术原理与细节,用最少量的代码实现 JS 鼠标惯性滚动。...使用插件要实现平滑的惯性滚动可以引入 lenis 这个库,使用非常简单:npm i @studio-freight/lenisconst lenis = new Lenis()function raf(...(value);}这样就实现了一个平滑的惯性滚动效果,但实际上由于帧率是可变的(受屏幕刷新率影响),每帧之间的插值距离也会有所不同,要进一步优化阻尼效果还需要在线性插值的基础上增加阻尼系数和时间步长,目前大部分显示器在

1.6K41
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    滚动怎么理解_scrollview不滚动

    本文介绍元素尺寸中内容最多的一部分——滚动scroll 滚动宽高 scrollHeight   scrollHeight表示元素的总高度,包括由于溢出而无法展示在网页的不可见部分 scrollWidth...元素未滚动时,scrollLeft的值为0,如果元素被水平滚动了,scrollLeft的值大于0,且表示元素左侧不可见内容的像素宽度   当滚动滚动到内容底部时,符合以下等式 scrollHeight...;} scrollBy(x,y)   scrollBy(x,y)方法滚动当前window中显示的文档,x和y指定滚动的相对量 ...如果为true,表示元素的顶部与当前区域的可见部分的顶部对齐(前提是当前区域可滚动);如果为false,表示元素的底部与当前区域的可见部分的尾部对齐(前提是当前区域可滚动)。...scroll的知识,基本上囊括了关于滚动现有的所有属性和方法。

    1.9K20

    跟我学Rx编程——惯性滑动

    在移动设备上,滚动一个视图不会立即停止滚动,往往需要再滑动一小段距离然后再停止,模拟出惯性的效果。滑动的时候速度越快,那么就滚动的越远。一般组件都会帮开发者写好这些基本功能,不需要开发者操心。...但有的时候我们需要使用类似的逻辑,比如我需要在手指滑动后,通过一些列序列帧变化来显示动画,那么这时候就可能需要开发者自己来写这个惯性滑动的逻辑了。...不管怎样,我们用Rx来实现一遍这个惯性滑动,也是一种不错的体验。...MOUSE_UP (*)-------------(o)--------------(o)......-------------|> 接下来我们就要从这3个Observable来组合出合适的逻辑,来实现惯性滑动效果...计算惯性偏移,阻尼运动 我们有了speedOb这个事件流,就可以用来模拟手指抬起的时候惯性移动效果了。

    70720

    JS判断滚动条是否停止滚动

    背景:昨天一个同事有种需求,有一个展示数据区域的div,带滚动条,当滚动滚动时,需要向后台发请求,计算数据,再拿到前台展示。        ...分析:由于数据量级别较大,所以当滚动滚动时,如果时时向后台发请求,对服务器和浏览器都造成巨大的压力。想到的解决方案是,当滚动条停止时,再去发请求计算数据。...那么问题来了,如何判断滚动条是否停止了呢?        解决:搜索了一下,js本身是无法判断滚动条是在滚动状态还是停止状态,只有通过其它方式了。...后来想到的思路是当滚动滚动的时候,发起一个定期执行的方法,并记录一次当前滚动条到顶部的距离,这个方法中判断此时滚动条到顶部的距离是否和上次记录的相等,如果相等,那么说明停止滚动了,不相等,还在滚动。...-- // 让浏览器出现滚动条 for(var i = 0; i < 100; i++) { document.write(""); } var topValue = 0,//

    17.4K00

    【人物·宋应湃】保持敏感,战胜惯性

    这十年的工作学习经历,个人觉得最重要的习惯就是一定要不断跳出自己的舒适区,摆脱惯性的控制。...时刻对新变化、新问题、新技术等保持敏感,树立更高的目标倒逼自己,唯有这样才能战胜惯性,不断成长,持续提升自己的价值。...以上的时间线只是个人划定,所讨论的能力覆盖是否全面也未论证,只是想说明思维时刻保持敏感,战胜惯性,不断提升自己的专业力、组织力和影响力,才能实现个人成长的持续成长。...真正决定两个人之间差距的,很多时候就是看你是否保持足够的敏感度,是否能战胜惯性,并且摆脱「想法太多,做得太少」的状态,努力练级。...此外,在分析问题时,要跳出惯性的“自我视点”,摆脱“自我评价”的束缚,不受自己的思考方法、经验,以及常识的影响。

    1.5K00
    领券