切换主题
CSS3 动画
CSS3 动画是一个强大的功能,它允许你在网页上创建平滑和吸引人的动画效果,无需使用JavaScript。
1. @keyframes
规则
- 这是定义动画效果的地方。你可以指定动画的开始 (
from
)、结束 (to
) 或者任何中间阶段的样式。
css
@keyframes example {
from { opacity: 0; }
to { opacity: 1; }
}
2. animation
属性
- 用于在一个选择器上应用动画。它可以包含多个与
@keyframes
相关联的值。
css
.animation-example {
animation: example 5s infinite alternate;
}
- 详细解析
1. animation-name:检索或设置对象所应用的动画名称,必须与规则@keyframes配合使用;
2. animation-duration:检索或设置对象动画的持续时间(s/ms)
3. animation-timing-function:检索或设置对象动画的过渡类型
属性值:
linear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)
ease:平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)
ease-in:由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)
ease-out:由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)
ease-in-out:由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0);
cubic-bezier(num, num, num, num):特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内
以上属性值,效果上,关键帧之间会插入补间动画,
所以动画效果是连贯性的,是线性动画的效果。
steps()函数/step-start/step-end:实现的动画是没有过渡效果的,而是一帧帧的变化;
语法:
steps(次数,start/end)
第一个参数指定了时间函数中的间隔数量(必须是正整数);
第二个参数可选,start和end,指定在每个间隔的起点或是终点发生阶跃变化,默认为 end;
step-start等同于steps(1,start),动画分成1步,动画执行时为开始端点的部分为开始;
step-end等同于steps(1,end):动画分成1步,动画执行时以结尾端点为开始,默认值为end。
4. animation-delay:检索或设置对象动画延迟的时间(s/ms)
属性值:+ -
5. animation-iteration-count:检索或设置对象动画的循环次数(默认执行1次)
属性值:
infinite:无限循环 number: 循环的次数
6. animation-direction :检索或设置对象动画在循环中是否反向运动
属性值:
normal:正常方向
reverse:反方向运行
alternate:动画先正常运行再反方向运行,并持续交替运行
alternate-reverse:动画先反运行再正方向运行,并持续交替运行
7. animation-fill-mode:规定对象动画时间之外的状态;
属性值:
none:
不改变默认行为。
forwards:
当动画完成后,保持最后一个属性值(在最后一个关键帧中定义),固定动画。
backwards:
在animation-delay所指定的一段时间内,
在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
both:
向前和向后填充模式都被应用。
8. animation-play-state:检索或设置对象动画的状态
属性值:
running:运动 - 默认值
paused: 暂停
简写:animation
(1) 此属性是所有动画属性的简写属性,除了animation-play-state属性
(2) 一个动画多个属性值中间空格隔开;想要设置多个动画时,动画之间用逗号分隔;
(3) 必须定义动画的名称和时长,如果忽略时长,则动画不会执行,因为默认值是 0;
3. 动画阶段
- 动画可以有不同的阶段,如开始、结束或指定的百分比阶段。
css
@keyframes example {
0% { opacity: 0; }
50% { opacity: 0.5; }
100% { opacity: 1; }
}
4. 动画时长 (animation-duration
):
- 指定动画完成一个周期所需的时间。
css
.example {
animation-duration: 2s;
}
5. 动画延迟 (animation-delay
):
- 指定动画开始之前的等待时间。
css
.example {
animation-delay: 1s;
}
6. 动画迭代 (animation-iteration-count
):
- 指定动画应该播放的次数。
infinite
表示无限循环。
css
.example {
animation-iteration-count: infinite;
}
7. 动画方向 (animation-direction
):
- 指定动画应该正向播放、反向播放或交替播放。
css
.example {
animation-direction: alternate;
}
8. 动画填充模式 (animation-fill-mode
):
- 指定动画在开始和结束时应用的样式。
css
.example {
animation-fill-mode: forwards;
}
9. 动画播放状态 (animation-play-state
):
- 控制动画的播放和暂停状态。
css
.example {
animation-play-state: paused;
}
10. 复合动画
- 可以在一个元素上应用多个动画,它们将并行运行。
css
.combined-example {
animation: example1 5s infinite, example2 3s infinite alternate;
}
11. 使用 CSS3 变换
- 动画可以包含变换,如旋转、缩放、移动和倾斜。
css
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
12. 响应式动画
- 动画可以根据媒体查询适应不同的屏幕尺寸。
css
@media (max-width: 600px) {
.example {
animation: none;
}
}
13. 动画性能
- CSS3 动画通常由浏览器优化,使用硬件加速,可以提供平滑的动画效果。
14. 兼容性和前缀
- 需要注意浏览器的兼容性和可能需要的厂商前缀,尽管大多数现代浏览器都支持无前缀的CSS3动画属性。