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

相关推荐
子兮曰2 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋2 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁2 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95272 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大2 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师2 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学2 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端