一、CSS动画的基础
CSS动画是指通过CSS样式来动态改变HTML元素的效果,实现动态的页面交互效果。CSS动画具有跨浏览器兼容性好、操作简单灵活等特点,是前端开发中常用的动画实现方式之一。
CSS3中新增了一系列的动画属性和关键帧规则,其中包含了一些可以制作2D、3D动画的属性。通过这些属性,我们可以实现各种各样的视觉效果,包括但不限于移动、旋转、缩放等。
在CSS中定义动画有两种方式,一种是利用关键帧(@keyframes)实现,另一种是使用过渡(transition)实现,本篇文章将主要介绍前者。
二、关键帧动画示例
使用关键帧动画来实现图片移动的效果,可以考虑如下示例:
<style>
.box {
position: relative;
width: 200px;
height: 200px;
background: #f1f1f1;
}
.box img {
position: absolute;
top: 0;
left: 0;
animation-name: move;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
@keyframes move {
0% {
left: 0;
}
50% {
left: 50%;
}
100% {
left: 100%;
}
}
</style>
<div class="box">
<img src="https://picsum.photos/id/1015/200/200" width="200" height="200"/>
</div>
上述代码中,我们定义了一个名为“move”的关键帧动画,它的实现原理是:从初始位置(left: 0)到移动到屏幕中央(left: 50%),再到最终位置(left: 100%)。动画重复执行(animation-iteration-count)且往返反复地执行(animation-timing-function: ease-in-out)。
动画效果如下所示:
三、关键帧动画的基本语法
关键帧动画的语法如下所示:
@keyframes [动画名称] {
[关键帧名称] {
[CSS样式];
}
...
}
其中,“动画名称”是指关键帧动画的名称,“关键帧名称”是指动画执行过程中CSS样式的改变点。
在关键帧动画的定义中,我们需要同时定义至少一个“0%”和一个“100%”的关键帧。在这两个关键帧中,我们需要为HTML元素定义不同的CSS样式,用以描述动画效果的开始和结束状态。动画效果会从一个关键帧平滑过渡到另一个关键帧,完成整个动画效果的呈现。
四、关键帧动画的常用属性
关键帧动画提供了一系列的属性,可以对动画的细节进行精细化的控制。这里列举一些最常用的动画属性:
animation-name
指定一个已经定义的关键帧动画名称或多个逗号分隔的关键帧动画名称。
animation-duration
指定动画的完成一个周期所需的时间,单位是秒(s) 或毫秒(ms)。
animation-timing-function
指定动画的时间变化函数,可以理解为动画执行过程中的速度变化曲线。默认值是“ease”,也可以指定自定义的时间变化函数。
animation-delay
指定动画的延迟时间,表示从设置动画样式开始到启动动画所需等待的时间,单位是秒(s) 或毫秒(ms)。
animation-iteration-count
指定动画的重复执行次数,可以是数字、关键字“infinite”或者精细化的执行次数 and/or direction(方向)。
五、总结
通过关键帧动画,我们可以实现各种各样的复杂动画效果。关键帧动画是一种更加灵活、控制力更强的动画实现方式,不仅可以用于2D、3D动画的实现,还可以应用到其他CSS动效实现中。学会使用关键帧动画,可以为开发者提供更多的动画实现思路。