likes
comments
collection
share

"网页动画不求人:Animate.css让小白也能成为动画大师"

作者站长头像
站长
· 阅读数 22

在现代Web开发中,动画不仅是视觉美学的一部分,更是提升用户体验、增强用户交互的重要手段。Animate.css,作为一个开源的CSS动画库,为开发者提供了丰富的动画效果,无需编写复杂的JavaScript或深入研究CSS动画的关键帧,就能轻松地为网站增添生动的动态效果。本文将深入探讨Animate.css的使用方法,包括其基本原理、常见动画效果的实现,以及如何在实际项目中集成和优化。

"网页动画不求人:Animate.css让小白也能成为动画大师"

一、Animate.css简介

Animate.css是一个轻量级的CSS库,它包含了超过60种预定义的动画效果,适用于各种Web元素。无论是按钮、图片、文本还是复杂的布局,都可以通过简单的类名应用来实现流畅的动画效果。它的主要优点包括:

  • 易用性:只需添加一个或多个类名,就可以实现复杂的动画效果。
  • 兼容性:支持所有主流浏览器,包括IE9及以上版本。
  • 性能优化:使用硬件加速的CSS3动画,确保动画流畅且不占用过多的CPU资源。
  • 可定制性:动画效果可以轻松地通过CSS进行定制和调整。

二、基本使用

首先,你需要在HTML文件中引入animate.css库。最简单的方式是通过CDN链接

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/>

或者可以使用 npm 安装

npm install animate.css

或者还使用 Yarn 安装(这仅适用于适当的工具,如 Webpack、Parcel 等。如果您不使用任何工具来打包或捆绑代码,则只需使用下面的 CDN 方法):

yarn add animate.css

紧接着可不能忘了要将其导入到您的文件中:

import 'animate.css';

接下来,你可以在任何HTML元素上添加animate.css提供的动画类名。例如,要使一个按钮在页面加载时旋转,你可以这样做:

<button class="animate__animated animate__rotateIn">Click me!</button>

在这里,animate__animated是激活动画效果的基本类名,而animate__rotateIn则是具体的动画类型。 (不要忘记前缀!animate__animated animate__

三、动画效果解析

让我们深入看看几种常见的动画效果是如何工作的:

"网页动画不求人:Animate.css让小白也能成为动画大师"

1. 淡入淡出动画
.animate__fadeIn {
  animation-name: fadeIn;
  animation-duration: 1s;
  animation-fill-mode: both;
}
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

这里,.animate__fadeIn类名将调用fadeIn动画,该动画在1秒内将元素的透明度从0渐变到1,实现淡入效果。

2. 缩放动画
.animate__zoomIn {
  animation-name: zoomIn;
  animation-duration: 1s;
  animation-fill-mode: both;
}
@keyframes zoomIn {
  from {
    opacity: 0;
    transform: scale3d(.3, .3, .3);
  }
  50% {
    opacity: 1;
  }
}

zoomIn动画会使元素从一个小的尺寸快速放大到其原始尺寸,同时逐渐变得完全可见

3. 摇摆动画
.animate__shakeX {
  animation-name: shakeX;
  animation-duration: 1s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}
@keyframes shakeX {
  10%, 90% {
    transform: translate3d(-1px, 0, 0);
  }
  20%, 80% {
    transform: translate3d(2px, 0, 0);
  }
  30%, 50%, 70% {
    transform: translate3d(-4px, 0, 0);
  }
  40%, 60% {
    transform: translate3d(4px, 0, 0);
  }
}

shakeX动画会使元素左右摇摆,看起来像是在轻微震动,非常适合吸引用户的注意力

那么从上面代码细心来看,我们不难发现一个重要的东西——@keyframes,现在就顺着内容来讲讲它吧

@keyframes 是 CSS3 中的一个规则,用于定义动画序列中的关键帧(keyframes)。通过 @keyframes,开发者可以创建自定义的动画效果,控制元素在不同时间点上的样式变化,而这些变化将由浏览器自动插值完成过渡,形成流畅的动画效果。

@keyframes 规则中,你需要定义一个或多个关键帧,每个关键帧都指定了一段时间点上元素的样式。关键帧可以使用百分比或预定义的关键字来定义:

  • 百分比:表示动画进度的百分比,例如 0% 或 50% 或 100%
  • 关键字from 相当于 0%to 相当于 100%

每个关键帧中都可以包含任何有效的 CSS 属性,用于定义元素在该时间点上的样式。

四、高级用法

Animate.css的强大之处在于其灵活性扩展性。你可以:

  • 组合动画:同时使用多个动画类名,创建复合动画效果。
  • 控制动画时机:通过JavaScript控制动画的触发,而不是依赖于页面加载或用户交互。
  • 自定义动画:虽然库中已经包含了很多动画,但你也可以根据需要自定义关键帧动画,然后将其与animate.css的动画系统集成。

五、最佳实践

  • 性能考虑:尽量避免在大量元素上同时运行动画,特别是在移动设备上,这可能会导致性能问题。
  • 延迟加载:对于大型页面,可以使用懒加载技术来延迟加载非关键路径上的动画,以提高首屏加载速度。
  • 动画优先级:确定哪些动画对用户体验至关重要,优先加载和执行这些动画,以确保核心功能的流畅性。

六、动画效果之接地气解释

"网页动画不求人:Animate.css让小白也能成为动画大师"

bounce             弹跳
flash              闪烁
pulse              放大,缩小
rubberBand         放大,缩小,弹簧
shake              左右晃动
headShake          左右小幅晃动
swing              左右扇形摇摆
tada               放大,左右上下晃动,缩小
wobble             左右小幅(圆点较远)扇形摇摆
jello              左右左右上下晃动

bounceIn           重复放大缩小
bounceInDown       从上到下出现,弹簧
bounceInLeft       从左到右出现,弹簧
bounceInRight      从右到左出现,弹簧
bounceInUp         从下到上出现,弹簧
bounceOut          从常规到小消失,弹簧
bounceOutDown      从常规到小,从下方消失,弹簧
bounceOutLeft      从常规到小,从左方消失,弹簧
bounceOutRight     从常规到小,从右方消失,弹簧
bounceOutUp        从常规到小,从上方消失,弹簧

fadeIn             渐现
fadeInDown         渐现,从上到下
fadeInDownBig      渐现,从上到下,滑动距离较长
fadeInLeft         渐现,从左到右
fadeInLeftBig      渐现,从左到右,滑动距离较长
fadeInRight        渐现,从右到左
fadeInRightBig     渐现,从右到左,滑动距离较长
fadeInUp           渐现,从下到上
fadeInUpBig        渐现,从下到上,滑动距离较长
fadeOut            渐隐
fadeOutDown        渐隐,从上到下
fadeOutDownBig     渐隐,从上到下,滑动距离较长
fadeOutLeft        渐隐,从左到右
fadeOutLeftBig     渐隐,从左到右,滑动距离较长
fadeOutRight       渐隐,从右到左
fadeOutRightBig    渐隐,从右到左,滑动距离较长
fadeOutUp          渐隐,从下到上
fadeOutUpBig       渐隐,从下到上,滑动距离较长

flip               中心Y轴旋转,放大,缩小
flipInX            元素中心X轴旋转
flipInY            元素中心Y轴旋转
flipOutX           中心X轴旋转,消失
flipOutY           中心Y轴旋转,消失

lightSpeedIn       从右到左,平行四边形,左上角突出进入
lightSpeedOut      从左到右,平行四边形,左上角突出进入

rotateIn           元素中心顺时针旋转进入
rotateInDownLeft   元素左外长半径顺时针旋转进入
rotateInDownRight  元素右外长半径逆时针旋转进入
rotateInUpLeft     元素左外长半径逆时针旋转进入     
rotateInUpRight    元素右外长半径顺时针旋转进入
rotateOut          元素中心顺时针旋转消失
rotateOutDownLeft  元素左外长半径顺时针旋转消失
rotateOutDownRight 元素右外长半径逆时针旋转消失
rotateOutUpLeft    元素左外长半径逆时针旋转消失
rotateOutUpRight   元素右外长半径顺时针旋转消失

hinge              从右上到坐下,顺时针旋转,从上到下消失

rollIn             元素左外长半径顺时针旋转,平滑进入
rollOut            元素右外长半径顺时针旋转,平滑进入

zoomIn             元素由小变大进入
zoomInDown         元素由小变大,从上方进入
zoomInLeft         元素由小变大,从左方进入
zoomInRight        元素由小变大,从右方进入
zoomInUp           元素由小变大,从下方进入
zoomOut            元素由大变小,消失
zoomOutDown        元素由大变小,从下方消失
zoomOutLeft        元素由大变小,从左方消失
zoomOutRight       元素由大变小,从右方消失
zoomOutUp          元素由大变小,从上方消失

slideInDown        元素从上到下,平滑进入
slideInLeft        元素从左到右,平滑进入
slideInRight       元素从右到左,平滑进入
slideInUp          元素从下到上,平滑进入
slideOutDown       元素从上到下,平滑消失
slideOutLeft       元素从右到左,平滑消失
slideOutRight      元素从左到右,平滑消失
slideOutUp         元素从下到上,平滑消失

七、结论

Animate.css是一个强大而灵活的工具,它极大地简化了在Web项目中加入动画效果的过程。无论你是初学者还是经验丰富的开发者,都可以通过它快速提升网站的吸引力和用户体验。随着对动画效果的深入理解和创造性应用,你将能够创造出更加引人入胜、充满活力的Web界面。

转载自:https://juejin.cn/post/7392061803008442379
评论
请登录