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...

相关推荐
Baklib梅梅20 小时前
故事叙述的力量:用Baklib创作让内容更具温度与共鸣
前端·ruby on rails·前端框架·ruby
一个假的前端男20 小时前
uniapp 3端轮播
前端·javascript·uni-app
Fantasydg21 小时前
Request Response对象
前端
Wect1 天前
学习React-DnD:核心组件与Hooks
前端
humors2211 天前
前端开发案例(不定期更新)
前端·vue.js·elementui·ruoyi·若依
菠萝+冰1 天前
npm中-d -g 和默认安装的区别
前端·npm·node.js
一路向北North1 天前
网页版预编译SQL转换工具
前端·javascript·sql
拿不拿铁191 天前
Vite 5.x 开发模式启动流程分析
前端
fruge1 天前
设计稿还原技巧:解决间距、阴影、字体适配的细节问题
前端·css
BBB努力学习程序设计1 天前
了解响应式Web设计:viewport网页可视区域
前端·html