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

相关推荐
专注API从业者4 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化
烛阴5 小时前
TypeScript高手密技:解密类型断言、非空断言与 `const` 断言
前端·javascript·typescript
样子20186 小时前
Uniapp 之renderjs解决swiper+多个video卡顿问题
前端·javascript·css·uni-app·html
Nicholas686 小时前
flutterAppBar之SystemUiOverlayStyle源码解析(一)
前端
黑客飓风6 小时前
JavaScript 性能优化实战大纲
前端·javascript·性能优化
emojiwoo7 小时前
【前端基础知识系列六】React 项目基本框架及常见文件夹作用总结(图文版)
前端·react.js·前端框架
张人玉8 小时前
XML 序列化与操作详解笔记
xml·前端·笔记
杨荧8 小时前
基于Python的宠物服务管理系统 Python+Django+Vue.js
大数据·前端·vue.js·爬虫·python·信息可视化
YeeWang9 小时前
🎉 Eficy 让你的 Cherry Studio 直接生成可预览的 React 页面
前端·javascript
gnip9 小时前
Jenkins部署前端项目实战方案
前端·javascript·架构