菜单

动画类别

相关源文件

目的与范围

本文档全面概述了 Animate.css 中的动画类别。它解释了动画如何组织成逻辑分组、每个类别的目的以及它们的实现方式。有关自定义动画时长或延迟的信息,请参阅 工具类和自定义

Animate.css 将其动画组织成反映其视觉效果和典型用例的语义类别。了解这些类别有助于开发人员根据自己的需求选择合适的动画并理解库的结构。

动画类别概述

Animate.css 将动画组织成七个主要类别,每个类别包含多个具有相似特征或目的的动画效果。

来源: animate.css113-867 animate.css868-1036 animate.css1037-1205 animate.css1206-3161

动画命名约定

所有动画都遵循一致的命名模式

来源: animate.css15-915

动画类的命名约定为

  1. 所有类都以 animate__ 前缀开头 - 此前缀通过构建过程添加,以避免与其他 CSS 库冲突
  2. 基础类为 animate__animated - 所有动画应用持续时间和填充模式属性都必需
  3. 进入/退出类别模式 - 用于方向性动画
    • 进入动画为 animate__[category]In[Direction] (例如,animate__fadeInUp)
    • 退出动画为 animate__[category]Out[Direction] (例如,animate__fadeOutDown)

类别详情

1. 吸引注意力 (Attention Seekers)

吸引注意力动画旨在吸引元素注意力,而不改变其进入或退出。这些动画常用于突出需要用户注意的元素,例如通知或行动号召按钮。

可用动画

动画描述主要变换 (Primary Transformation)
animate__bounce元素上下弹跳translateY 配合 scaleY
animate__flash元素快速闪烁可见与不可见透明度变化 (Opacity changes)
animate__pulse元素通过轻微缩放来跳动scale3d
animate__rubberBand元素像橡胶一样拉伸和收缩scale3d 配合不同的 x, y 比例
animate__shakeX元素水平摇晃translateX
animate__shakeY元素垂直摇晃translateY
animate__headShake元素像摇头说“不”一样摇晃translateX 配合 rotateY
animate__swing元素来回摆动rotate3d 围绕顶部中心
animate__tada元素轻微缩放并来回旋转scale3drotate3d
animate__wobble元素左右摇晃translate3d 配合 rotate3d
animate__jello元素通过倾斜效果失真skewXskewY
animate__heartBeat元素像心跳一样跳动scale 配合自定义时序

来源: animate.css113-867 source/attention_seekers/bounce.css1-35 source/attention_seekers/rubberBand.css1-34 source/attention_seekers/shake.css1-26 source/attention_seekers/tada.css1-32 source/attention_seekers/flash.css1-17

2. 进入动画 (Entrance Animations)

进入动画控制元素如何出现或进入视口。这些通常用于元素首次加载、通过用户交互显示或在滚动时进入视口。

进入动画组织成几个子类别,每个子类别使用不同的视觉效果。

反向进入 (Back Entrances)

这些动画使元素以组合的缩放和平移效果进入,仿佛从视口后面出来。

动画方向描述
animate__backInDown自上而下元素从上方进入,稍微缩小
animate__backInLeft自右向左元素从左侧进入,稍微缩小
animate__backInRight自左向右元素从右侧进入,稍微缩小
animate__backInUp自下而上元素从下方进入,稍微缩小

来源: animate.css868-1036

弹跳进入 (Bouncing Entrances)

元素以弹跳效果进入,超过其最终位置后稳定下来。

动画方向描述
animate__bounceIn中心外出元素从小到大缩放并伴随弹跳
animate__bounceInDown自上而下元素从上方弹跳进入
animate__bounceInLeft自右向左元素从左侧弹跳进入
animate__bounceInRight自左向右元素从右侧弹跳进入
animate__bounceInUp自下而上元素从下方弹跳进入

来源: animate.css1206-1458 source/bouncing_entrances/bounceIn.css1-43

其他进入类型 (Other Entrance Types)

其他进入动画类型也有类似的模式

  • 淡入动画 (animate__fadeIn, animate__fadeInDown 等) - 元素通过透明度过渡淡入
  • 翻转进入动画 (animate__flipInX, animate__flipInY) - 元素以 3D 翻转效果进入
  • 跑马灯进入动画 (animate__lightSpeedInRight, animate__lightSpeedInLeft) - 元素以快速倾斜的运动进入
  • 旋转进入动画 (animate__rotateIn, animate__rotateInDownLeft 等) - 元素以旋转进入
  • 滑动进入动画 (animate__slideInDown, animate__slideInLeft 等) - 元素从不同方向滑动进入
  • 缩放进入动画 (animate__zoomIn, animate__zoomInDown 等) - 元素从小尺寸缩放到正常尺寸

来源: animate.css2600-3160 source/flippers/flipInX.css1-31 source/flippers/flipInY.css1-31

3. 退出动画 (Exit Animations)

退出动画控制元素如何消失或离开视口。这些动画通常用于移除元素、导航离开或元素在滚动时离开视口。

退出动画遵循与进入动画相同的模式,但效果相反。

来源: animate.css1037-1205 animate.css4150-4500 source/bouncing_exits/bounceOut.css1-22

退出动画组织到与进入动画相同的子类别中。

  • 反向退出 (animate__backOutDown, animate__backOutLeft 等)
  • 弹跳退出 (animate__bounceOut, animate__bounceOutDown 等)
  • 淡出动画 (animate__fadeOut, animate__fadeOutDown 等)
  • 翻转退出动画 (animate__flipOutX, animate__flipOutY)
  • 跑马灯退出动画 (animate__lightSpeedOutRight, animate__lightSpeedOutLeft)
  • 旋转退出动画 (animate__rotateOut, animate__rotateOutDownLeft 等)
  • 滑动退出动画 (animate__slideOutDown, animate__slideOutLeft 等)
  • 缩放退出动画 (animate__zoomOut, animate__zoomOutDown 等)

4. 特殊动画 (Special Animations)

特殊动画是独特的特效,它们不太适合进入/退出范式,或者足够独特,可以拥有自己的类别。

动画描述主要变换 (Primary Transformation)
animate__hinge元素像铰链一样落下复杂的旋转、掉落和淡出效果
animate__jackInTheBox元素像玩具“惊喜盒”一样缩放和旋转进入scale3drotate3d
animate__rollIn元素滚动进入视口translate3d 配合 rotate3d
animate__rollOut元素滚动离开视口translate3d 配合 rotate3d

来源: animate.css7160-7340

动画实现结构

Animate.css 中的每个动画都遵循一致的实现模式。

来源: source/attention_seekers/bounce.css1-35 source/bouncing_entrances/bounceIn.css1-43 source/flippers/flip.css1-35

每个动画由以下部分组成:

  1. 一个关键帧定义(使用 @keyframes),它指定了

    • 每个点的时间点(0%20%to 等)
    • 每个点的变换(scaletranslaterotate 等)
    • 透明度变化(用于出现/消失效果)
    • 特定点的动画时间函数
  2. 一个动画类(例如 animate__bounce),它应用了

    • 动画名称(链接到关键帧)
    • 变换原点(指定变换发生的点)
    • 某些动画的自定义时长
    • 默认时间函数

共享动画属性

所有动画通过基础的 animate__animated 类共享通用属性

主要共享属性包括

  1. 默认时长为 1 秒(可通过 --animate-duration CSS 变量自定义)
  2. animation-fill-mode: both,以确保动画在执行前后均应用样式
  3. 无障碍性考虑,通过 prefers-reduced-motion 媒体查询(第 99 行)

来源: animate.css15-22 animate.css99-112

类别使用指南

以下是选择适当动画类别的指南

类别推荐用途
吸引注意力吸引已可见元素的注意
进入动画将新元素引入视图
退出动画将元素移除视图
特殊动画创建独特的过渡效果

应用动画时

  1. 始终将动画类与基础的 animate__animated 类配对使用
  2. 考虑使用实用工具类来定制时长和延迟
  3. 选择适合上下文的动画(避免过度使用吸引注意力的动画)
  4. 在添加元素后又移除时,将进入动画与相应的退出动画配对