GSAP动画库,探究苹果官网页面滚动动画是如何实现的

GSAP动画库,探究苹果官网页面滚动动画是如何实现的

前言

每次浏览苹果官网时都在好奇,当我们向下滚动页面时一个个文字或图片总能缓缓浮现,往上滚动时又能慢慢收起来,这就究竟是如何实现的呢。在查阅一些资料时发现了Scrollmagic.js插件,该插件提供了灵活的滚动动画,可以自定义各种各样的效果,但是当我满怀信心地决定大干一场时,发现这个插件已经很久没有维护更新了,而且是基于jquery开发的,在引入vue3脚手架时并不适配,有感兴趣的小伙伴可以去看官网:scrollmagic.io/docs/index.... 最终,我发现了一个很强大的动画库GSAP,如官网首页所说的animate anything,它拥有着各种强大的动画能力,官网地址:gsap.com/ 本文主要对其中的一个plugin ScrollTrigger进行简单demo讲解。实现效果如下:

如何使用

1、首先需要安装gsap包,建议安装最新版

csharp 复制代码
yarn add gsap //或 npm install gsap

2、写几个简单的滚动模板

xml 复制代码
<template>
    <section class="section flex-center column blue normal" ref="header">
      <div class="box">box</div>
      <div class="box">box</div>
      <div class="box">box</div>
    </section>
    <div class="section flex-center column normal" ref="top">
      <div class="box">box</div>
      <div class="box">box</div>
      <div class="box">box</div>
    </div>
    <div class="section flex-center column" ref="main">
      <div class="box">box</div>
      <div class="box">box</div>
      <div class="box">box</div>
    </div>
    <section class="section flex-center orange column" ref="bottom"> 
      <div class="box">box</div>
      <div class="box">box</div>
      <div class="box">box</div>
    </section>
</template>

3、引入GSAP以及ScrollTrigger插件,并注册插件

javascript 复制代码
import gsap from 'gsap';
import { ScrollTrigger } from 'gsap/ScrollTrigger';
gsap.registerPlugin(ScrollTrigger);

4、创建动画,配置动画移动的始末位置,以及触发动画的位置,动画的node节点等参数

php 复制代码
const header=ref();

ctx = gsap.context((self:any) => {
    const boxes = self.selector('.box');
    boxes.forEach((box:any) => {
       gsap.to(box, {
        x: 300,
        scrollTrigger: {
          trigger: box,
          start: 'top 40%',
          end: '+=500',
          scrub: true,
        },
      });
    });
  }, header.value); 
  

更多配置

ScrollTrigger的主要配置可以参考下面的代码:

  • containerAnimation:触发由垂直滚动控制的"水平"滚动部分内的动画
  • end:确定ScrollTrigger的结束位置
  • endTrigger:在正常文档流中的位置用于计算ScrollTrigger结束的位置
  • fastScrollEnd:它将强制完成当前ScrollTrigger的动画,避免在用户快速滚动时重叠动画
  • horizontal:使用水平滚动
  • onRefresh:当刷新发生时的回调(通常是一个resize事件),它强制ScrollTrigger重新计算它的所有位置
  • onToggle:当ScrollTrigger从非活动切换到活动时的回调
  • scrub:允许您在用户停止滚动后捕捉到某些进度值
  • start:确定ScrollTrigger的起始位置
  • toggleActions:将在进入时播放动画,在离开时暂停动画,在再次向后进入时恢复动画,并在滚动到起点后重置(回退到起点)。您可以为每个操作使用以下任何关键字:"播放"、"暂停"、"恢复"、"重置"、"重新启动"、"完成"、"反转"和"无"
  • toggleClass:当ScrollTrigger切换活动/非活动时,向一个元素(或多个元素)添加/删除一个类

最后

ScrollTrigger只是GSAP中的一个插件,更多的动画效果还在学习中,感兴趣的小伙伴可以直接去官网学习查看,使用这个库能减少很多我们手写css动画的苦恼,有需要的小伙伴可直接访问本文demo地址:gitee.com/fcli/scroll...

相关推荐
啊~哈16 分钟前
页面弹窗适配问题
前端·javascript·vue.js
工呈士23 分钟前
构建优化策略:Tree Shaking、代码分割与懒加载
前端·面试
骑自行车的码农28 分钟前
React Suspense实现原理深度解析 1
前端·react.js
还是一只小牛31 分钟前
探秘 React Native:线程探索及桥优化
android·前端
Face31 分钟前
Vue源码核心模块解析
前端·vue.js
Canmick32 分钟前
记一次无语的 Vite 构建配置问题排查
前端
FogLetter33 分钟前
从"乱炖"到"法式大餐":Promise如何优雅地管理异步流程
前端·javascript
鹘一34 分钟前
SSE实现deepseek流式输出
前端
xiaok34 分钟前
JavaScript同步与异步执行顺序解析
前端
GIS之路35 分钟前
OpenLayers 图层遮罩与裁剪
前端