首页
学习
活动
专区
圈层
工具
发布

用最少的代码却实现了最牛逼的滚动动画!

我们需要知道ScrollTrigger是基于GSAP实现的插件,ScrollTrigger是处理滚动事件的,而真正处理动画是GSAP,二者组合使用才能实现滚动动画~ 插件特点 将任何动画链接到特定元素,...可以在进入/离开定义的区域或将其直接链接到滚动栏时在动画上执行操作(播放、暂停、恢复、重新启动、反转、完成、重置)。 延迟动画和滚动条之间的同步。 根据速度捕捉动画中的进度值。...在滚动记录器处于活动状态时,如将active类添加到触发元素中:toggleClass: "active" 使用 matchMedia() 标准媒体查询为各种屏幕尺寸创建不同的设置。...start: "top top", // 当触发器的顶部碰到视口的顶部时 end: "+=500", // 在滚动 500 px后结束 scrub: 1, // 触发器...// 捕捉动画应至少为 0.2 秒,但不超过 3 秒(由速度决定) delay: 0.2, // 从上次滚动事件开始等待 0.2 秒,然后再进行捕捉 ease: "

3.3K20

用最少的代码却实现了最牛逼的滚动动画!

我们需要知道ScrollTrigger是基于GSAP实现的插件,ScrollTrigger是处理滚动事件的,而真正处理动画是GSAP,二者组合使用才能实现滚动动画~插件特点将任何动画链接到特定元素,以便它仅在视图中显示该元素时才执行该动画...可以在进入/离开定义的区域或将其直接链接到滚动栏时在动画上执行操作(播放、暂停、恢复、重新启动、反转、完成、重置)。延迟动画和滚动条之间的同步。根据速度捕捉动画中的进度值。...在滚动记录器处于活动状态时,如将active类添加到触发元素中:toggleClass: "active"使用 matchMedia() 标准媒体查询为各种屏幕尺寸创建不同的设置。...start: "top top", // 当触发器的顶部碰到视口的顶部时 end: "+=500", // 在滚动 500 px后结束 scrub: 1, // 触发器1...捕捉动画应至少为 0.2 秒,但不超过 3 秒(由速度决定) delay: 0.2, // 从上次滚动事件开始等待 0.2 秒,然后再进行捕捉 ease: "power1

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

    Vue项目中使用npm i swiper插件踩坑记录

    {     delay: 5000,//自动滚动|时间   }, }); 遇到的问题: 1、使用静态数据时,一切正常, Swiper 可以正常滚动和滑动。...但是使用动态数据时,会出现不能自动滚动/播放甚至数据显示不正常的现象。 解决办法:添加一个 observer 属性。...: true,//循环   observer: true,   autoplay: {     delay: 5000,//自动滚动|时间   }, }); 2、使用 v-if 条件让 Swiper 动态显示时...只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。如果同一个 watcher 被多次触发,只会被推入到队列中一次。...例如,当你设置vm.someData = 'new value',该组件不会立即重新渲染。当刷新队列时,组件会在事件循环队列清空时的下一个“tick”更新。

    1.2K30

    Vue项目中使用npm i swiper插件踩坑记录

    {     delay: 5000,//自动滚动|时间   }, }); 遇到的问题: 1、使用静态数据时,一切正常, Swiper 可以正常滚动和滑动。...但是使用动态数据时,会出现不能自动滚动/播放甚至数据显示不正常的现象。 解决办法:添加一个 observer 属性。...: true,//循环   observer: true,   autoplay: {     delay: 5000,//自动滚动|时间   }, }); 2、使用 v-if 条件让 Swiper 动态显示时...只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。如果同一个 watcher 被多次触发,只会被推入到队列中一次。...例如,当你设置vm.someData = 'new value',该组件不会立即重新渲染。当刷新队列时,组件会在事件循环队列清空时的下一个“tick”更新。

    3.6K20

    如何用uni-app快速将Vue项目输出到小程序和H5

    举一个详情页互跳的栗子: 详情A 打开 详情B,在通常的 web 端 SPA 方案中,会在详情A页面获取B详情的数据,仅会触发详情页A的updated生命周期,不会触发onHide。...uni-app通过引入css变量解决这类问题,在编译到不同平台时,给css变量设置对应的值。 ?...内置组件按需打包(Tree-Shaking) uni-app有8大类、几十个内置组件,但开发者实际开发时仅会使用其中的一部分组件,比如很多App不会用到map、canvas等组件,若打包时将uni-app...比如常见的 SPA 框架一般采用div区域滚动,uni-app为改善用户体验,使用的是body滚动,由此填了很多坑,比如不同页面的background-color,若使用div滚动,则在编译阶段就可完成样式定义...,但基于body滚动,就需要在页面前进、后退时动态设置body的背景色。

    2.5K20

    【No Problem】如何解决 Mac 左右滚动误触返回事件?

    这个边界触发就是滚动到“超过”滚动区域的水平边界时才会触发,我自己称这个为浏览器的滚动溢出行为(我觉得这样容易理解),也就是其实正常的滚动不会触发 那我们是不是可以在这个边界上做一些特殊的处理呢?...产品可能也并不同意这么做,并不是一个很好的解决方案 解决方案三——JavaScript 阻止事件 上面我们提到只有滚动到“超过”滚动区域的水平边界时才会触发,那么我们只要监听 mousewheel 这个事件...属性用来控制当滚动到区域的水平边界时的浏览器行为。...默认情况下,平移(滚动)和缩放手势由浏览器专门处理。设置 none,当触控事件发生在元素上时,不进行任何操作。...小结 Mac 中左右滚动导致返回的原因是滚动“超过”滚动区域的水平边界,可以使用 JavaScript 在边界条件中阻止事件,也可以通过 CSS 的 overscroll-behavior-x 控制滚动的行为

    2.7K20

    React 进阶 - 海量数据处理和其他细节

    通过监听滚动容器的 onScroll 事件,根据 scrollTop 来计算渲染区域向上偏移量 当用户向下滑动的时候,为了渲染区域,能在可视区域内,可视区域要向上滚动,当用户向上滑动的时候,可视区域要向下滚动...防抖函数一般用于表单搜索,点击事件等场景,目的就是为了防止短时间内多次触发事件 节流函数一般为了降低函数执行的频率,比如滚动条滚动 # 按需引入 按需引入本质上是为项目瘦身,开发者在做 React 项目的时候...3 一定要使用 setState 实时改变 DOM 元素状态的话,那么尽量采用 CSS 3 , CSS 3 开启硬件加速,使 GPU (Graphics Processing Unit) 发挥功能,从而提升性能...destory 中,做一些清除定时器/延时器的操作 # 合理使用 state React 并不像 Vue.js 那样响应式数据流。...在 Vue.js 中有专门的 dep 做依赖收集,可以自动收集字符串模版的依赖项,只要没有引用的 data 数据, 通过 this.aaa = bbb ,在 Vue.js 中是不会更新渲染的。

    1.6K10

    移动端滚动研究

    监听滚动元素的touchmove事件,当事件触发时修改元素的transform属性来实现元素的位移,让手指离开时触发touchend事件,然后给元素一个css的animation,并设置好duration...第二种方案相比第一种要劣势一些,区别在于手指离开时,采用的时css的animation来实现惯性滚动,所以无法直接触发惯性滚动过程中的onscroll事件,只有在animation结束时才可以借助animationend...滚动和下拉刷新 方案1:借助iscroll的原理,整个页面使用模拟滚动,将下拉刷新元素放在顶部,当页面滚动到顶部下拉时,下拉刷新元素随着页面的滚动出现,当手指离开时收回,此方案实现起来较为简单直接借助iscoll...,hover 等功能都将失效,即是元素不会成为鼠标事件的 target。...pointer-events: none 可用来提高滚动时的帧频。的确,当滚动时,鼠标悬停在某些元素上,则触发其上的 hover 效果,然而这些影响通常不被用户注意,并多半导致滚动出现问题。

    3.6K20

    前端高性能滚动 scroll 及页面渲染优化

    在绑定 scroll 、resize 这类事件时,当它发生时,它被触发的频次非常高,间隔很近。...加之用户鼠标滚动往往是连续的,就会持续触发 scroll 事件导致掉帧扩大、浏览器 CPU 使用率增加、用户体验受到影响。...当滚动表现正常时,用户就会感觉应用十分流畅,令人愉悦,反之,笨重不自然卡顿的滚动,则会给用户带来极大不舒爽的感觉。 滚动与页面渲染的关系 为什么滚动事件需要去优化?因为它影响了性能。...简单而言,使用 requestAnimationFrame 来触发滚动事件,相当于上面的: throttle(func, xx, 16.7) //xx 代表 xx ms内不会重复触发事件 handler...pointer-events: none 可用来提高滚动时的帧频。的确,当滚动时,鼠标悬停在某些元素上,则触发其上的 hover 效果,然而这些影响通常不被用户注意,并多半导致滚动出现问题。

    2.8K30

    忍法,scroll 翻滚之术!

    如果定义为smooth,则页面触发滚动操作时,就会有滚动的效果,如果为auto,则跟原来一样,是瞬间移动到指定位置。这指的是类似于点击#hash跳转一样的触发,而不是滑动滚动条。...CSS Scroll Snap 模块 可以让页面容器停止滚动时,捕捉并让其自动滑动到指定元素的指定位置。 一给我哩 giaogiao!这可是非常了不起的特性啊~ ?...可选属性如下: normal :默认值,滚动的时候,可以忽略捕捉位置。 always :滚动的时候,不能忽略捕捉位置,还必须定位到第一个捕捉元素的位置。 栗子如下: ?...contain:当一个元素滚动到边界时,不会再影响临近的滚动元素。 none:当一个元素滚动到边界时,不仅不会不会再影响临近的滚动元素,连默认滚动到边界的表现都会被阻止。...栗子如下: 使用了overscroll-behavior: contain; ? 默认情况 ? 兼容性如下: ?

    1.5K10

    目前最流行的 5 大 Vue 动画库,使用后太炫酷了

    此外,为了附加触发动画的事件,支持移动(鼠标交互)和滚动。...如前所述,该库通过向包含在其中的元素添加 kinesis 动画来对音频文件中的光标更改、滚动事件或频率做出反应。因此,它对于在这些范围内创建动画最有用。... 结果: vue-animate-onscroll 该库包含用于在元素滚动到视口时为其设置动画的指令。...transform: rotate(5deg); } 80% { transform: rotate(-5deg); } } 输出: 还值得一提的是,默认情况下,当一个元素滚动到视图中时...但是,我们可以使用 v-animate-onscroll.repeat 代替后者,这样只要元素滚动到视图中,就会触发动画: <img src="path/to/img" v-animate-onscroll.repeat

    22.6K21

    【前端性能】高性能滚动 scroll 及页面渲染优化

    在绑定 scroll 、resize 这类事件时,当它发生时,它被触发的频次非常高,间隔很近。...加之用户鼠标滚动往往是连续的,就会持续触发 scroll 事件导致掉帧扩大、浏览器 CPU 使用率增加、用户体验受到影响。...当滚动表现正常时,用户就会感觉应用十分流畅,令人愉悦,反之,笨重不自然卡顿的滚动,则会给用户带来极大不舒爽的感觉。  滚动与页面渲染的关系 为什么滚动事件需要去优化?因为它影响了性能。...简单而言,使用 requestAnimationFrame 来触发滚动事件,相当于上面的: throttle(func, xx, 1000/60) //xx 代表 xx ms内不会重复触发事件 handler...pointer-events: none 可用来提高滚动时的帧频。的确,当滚动时,鼠标悬停在某些元素上,则触发其上的 hover 效果,然而这些影响通常不被用户注意,并多半导致滚动出现问题。

    2.1K70

    weex-20-scroller组件

    如果子组件的总高度高于其本身,那么所有的子组件都可滚动 使用途径 如果我们想要根组件也可以滑动的效果,就可以使用组件 水平滚动的视图 多个滚动视图嵌套 注意事项 1.滑动组件默认方向为垂直...2.支持任意类型的 Weex 组件作为其子组件(除了cell组件,它只能用于list) 3.可以使用组件 和 组件 4.垂直时,当子标签的高度没有超过scroller...的高度时, 没有滚动效果,并且不会出现滚动条 掌握以下技能(请使用真机测试) 如何控制滚动条的显示或者隐藏 how-scrollbar值为true或者false,这个是标签的属性,不是样式,不能写在...css样式表里,具体使用如下 定义滚动的方向 scroll-direction 值为horizontal...2.loadmore 事件 当滚动条距离底部的值等于loadmoreoffset 时,触发这个事件 3.如果滚动方向为水平,不会产生任何效果! 思考:如何滚动到指定的位置 ?

    1.3K20

    滚动穿透的6种解决方案【已自测】

    ,但触发弹层出现的按钮在第一屏中     3、弹层不用滚动效果 解决方案: 弹层出现时,用css给body设置固定定位和超出隐藏。...需要我们能确保用户在不发生上滑页面滚动屏幕的情况下就能触发弹层出现,就不会出现我上边说的问题。...因此还需要我们对弹层的可滚动区域的滑动事件做监听: 第一种情况,若向上滑动时,到达底部;或者第二种情况,若向下滑动时,已到顶部。 这两种情况任意一种发生时,就阻止滑动事件。 这段逻辑代码如下: ?...1、(需满足)弹层内容不需要滚动 解决方案: 当弹层出现的时候不需要再禁掉body的滚动效果了,我们可以从弹层方面入手,阻止弹框的touchmove事件的默认行为。...局限问题: 因为touchmove被禁掉了,就会造成弹窗内部所有位置都不能响应touchmove事件,效果上就是弹窗内部不能再滚动了。 赘述: 在弹层不需要超出滚动的情况下,才可以使用这个。

    14.2K31

    第134天:移动web开发的一些总结(二)

    touchstart:手指触摸屏幕触发(已经有手指放屏幕上不会出发) touchmove:手指在屏幕上滑动,连续触发 touchend:手指离开屏幕时触发 touchcancel:系统取消touch时候触发...(3) 弹性滚动,下拉刷新 ①弹性滚动:当客户端的页面滚动到顶部或底部的时候,滚动条会收缩并让我们多滑动一定距离。通过缓冲反弹的效果,带给用户良好的体验。...因为没有触发物理设备本身的GPU(图形处理器)渲染 image object: ① 预加载图片:当设置img.src=””的时候,就表示请求加载图片 ② 图片的按比例缩放 (5) css3 animation...当一个css3动画结束时,我们可以监听相关事件AnimationEnd,比如对于webkit来说,是webkitAnimationEnd。...动画,代替DOM animation,效率更高,因为css3直接使用浏览器的GPU(图形处理器)渲染 2) 当你给一个元素设置它的百分比宽度的时候,他需要一个比照,也就是父元素,但是当它没有父的时候,需要给他一个绝对定位

    2.1K10

    分享5个关于 Vue 的小知识,希望对你有所帮助(三)

    1、使用Vue.js滚动到一个元素 我们可以通过为想要滚动到的元素分配一个引用来使用Vue.js滚动到该元素然后,我们可以在分配给引用的元素上调用scrollIntoView方法来滚动到该元素。...然后我们调用el.scrollIntoView,并使用一个具有behavior属性的对象来更改滚动行为。 2、如何在Vue.js组件中监听窗口滚动事件?...我们可以调用window.addEventListener方法来监听浏览器窗口上的滚动事件,以此来在Vue.js组件中监听窗口滚动事件。...,以便在组件挂载时监听滚动事件。...4、在Vue.js中按下回车键时执行某些操作 我们可以通过在执行某些操作的元素上添加 v-on:keyup 指令来在按下回车键时执行某些操作。

    52320

    冷门又好用的 CSS 特性

    元素的常规形状就是矩形,使用 CSS Shapes 可以将元素定义为圆、椭圆或多边形。 对于 Level 1 规范,CSS Shapes 可以应用于浮动元素。...滚动捕捉(Scroll Snap) MDN - CSS Scroll Snap Can I Use - CSS Scroll Snap CSS Scroll Snap 引入了对滚动位置的捕捉,它强制执行滚动操作完成后滚动容器的滚动端口可能结束的位置...overscroll-behavior CSS的 overscroll-behavior 属性用于定义元素滚动到滚动区域边界时的行为。...浏览器的默认行为是:当子元素滚动到边界后继续滚动鼠标,会触发父元素的滚动。该行为被称作 scroll chaining。...很多时候我们不需要这样的行为,比如当我们滚动一个弹窗中的内容时,不希望后面的页面也跟着滚动。

    1.6K10

    让 touch 系列事件触发的滚动响应更快

    这些都是很有用的特性,能使处理( touch 系列)事件的过程中,不会妨碍页面的正常滚动,然而开发者们有时候会觉得它们难以理解,更不会去使用。...当你注册 touch 系列事件的监听器时,加入{passive: true}对象作为第三个参数后,浏览器就认为你不会在事件处理函数中调用 preventDefault(),它就可以安全地让页面滚动,不再等待事件处理函数执行完...如果你希望某个元素(无论进行任何 touch 操作都)不会使浏览器发生滚动或缩放,可以往该元素的CSS中加入touch-action: none。...开发者在需要时,应该在 touch 系列事件发生前,使用touch-action这一 CSS 属性去阻止某元素滚动或缩放。...只有在为了阻止之后的默认行为(如将要触发的click事件)时,才应该在touchend的事件处理函数中调用preventDefault()。

    1.2K20

    将你的 Virtual dom 渲染成 Canvas

    支持常规的滚动操作和一些基础的元素事件绑定。...例如一些简单的处理,比如当绘制一个异步加载的资源到一个元素上时会出现问题,如在图片上绘制文本。在HTML中,由于元素存在顺序,以及 CSS 中存在 z-index,因此是很容易实现的。...实现列表滚动 如果我们的元素很多,需要滚动时,我们必须解决canvas内部元素滚动的问题。...这里我选择了使用Zynga Scroller 来模拟用户滚动方法,通过他返回的滚动坐标点,来对canvas进行重绘。...详细的参考这里 事件模拟 对于click,touch等dom事件的模拟,我们采用的方案是根据点击区域进行检测,并找出最底层的元素,递归寻找父元素并触发对应事件处理程序,从而模拟事件冒泡。

    1.5K40

    一段代码,如何解决图片懒加载的优雅需求?

    当一个页面充满了精美图片时,为了让用户体验更流畅,并避免加载所有图片导致页面卡顿或带宽浪费,图片懒加载便成为了救星。而这其中,滚动加载 和 分页控制 是实现懒加载的核心策略。...通过监听用户滚动位置动态加载图片,加之对图片数据的分页处理,我们能够在性能与体验之间找到平衡。 滚动加载:捕捉“即将抵达”的瞬间 滚动加载的思路并不复杂,但要让它既灵敏又高效,需要关注细节。...想象一个用户快速向下滚动时,如果我们实时捕捉滚动事件,并不断检查是否需要加载新图片,很可能造成性能瓶颈。为此,我们需要为滚动事件添加触发阈值。...$el; // 当滚动位置接近底部 200px 时,触发加载逻辑 if (!...思路的扩展:为体验注入灵动 动态调整 perPage 用户使用不同设备时,屏幕尺寸和分辨率会有较大差异。因此,每页加载的图片数量也不应固定。

    17300
    领券