📅  最后修改于: 2023-12-03 15:00:04.475000             🧑  作者: Mango
CSS动画是一种用CSS样式表来创建动画的现代Web设计技术。CSS动画可以让你创建简单的补间效果,例如平移和旋转,也可以让你创建复杂的动画序列,例如第一人称射击游戏中的动画。
在CSS中,创建动画需要使用@keyframes
规则和animation
属性。
@keyframes
规则@keyframes
规则是用于创建动画序列的框架,它包含了动画序列中的每一帧。下面是一个基本的@keyframes规则的语法:
@keyframes animation-name {
from { /* 帧1的CSS规则 */ }
to { /* 帧2的CSS规则 */ }
}
例如,下面的CSS规则定义了一个名称为"myAnimation"的动画序列,其中包含两个关键帧,分别是从默认状态到旋转45度的状态和旋转45度到默认状态的状态:
@keyframes myAnimation {
from { transform: rotate(0deg); }
to { transform: rotate(45deg); }
}
animation
属性animation
属性是用于将一个动画序列应用于一个元素的属性。它包含了动画的名称、持续时间、重复次数、动画方向等信息。下面是一个基本的animation
属性的语法:
animation: animation-name animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction;
例如,下面的CSS规则会将"myAnimation"动画序列应用于div
元素,并指定动画的持续时间为2秒,重复3次:
div {
animation: myAnimation 2s linear 0s 3 normal;
}
CSS动画还有许多高级用法,包括使用动态延迟、多步动画和使用关键帧百分比。下面是这些用法的例子。
动态延迟是一种在动画序列中使用动态延迟的技术。这意味着您可以为每个元素提供不同的延迟时间,以确保它们在序列中正确的时间到达。例如,下面的CSS规则指定了一个名为"delayedAnimation"的动画序列,其中元素1的延迟时间为0秒,元素2的延迟时间为0.5秒,元素3的延迟时间为1秒:
@keyframes delayedAnimation {
0% { opacity: 0; transform: translateY(-100%); }
100% { opacity: 1; transform: translateY(0); }
}
.delayedAnimation-element1 {
animation: delayedAnimation 1s linear 0s 1 normal both;
}
.delayedAnimation-element2 {
animation: delayedAnimation 1s linear 0.5s 1 normal both;
}
.delayedAnimation-element3 {
animation: delayedAnimation 1s linear 1s 1 normal both;
}
多步动画是一种将多个帧添加到一个关键帧中的技术。这意味着您可以通过单个动画序列来创建复杂的动画序列,而不需要为每个动画序列编写单独的CSS规则。例如,下面的CSS规则指定了一个名为"steppedAnimation"的动画序列,其中包含4个关键帧,每个关键帧都包含两个步骤:
@keyframes steppedAnimation {
0%, 20% { opacity: 1; }
25%, 45% { opacity: 0; }
50%, 70% { opacity: 1; }
75%, 100% { opacity: 0; }
}
关键帧百分比是一种为关键帧指定百分比位置的技术。这使您可以更精确地指定关键帧之间的距离。例如,下面的CSS规则定义了一个名称为"percentageAnimation"的动画序列,其中包含三个关键帧,每个关键帧具有不同的百分比位置:
@keyframes percentageAnimation {
0% { opacity: 0; }
50% { opacity: 0.5; }
100% { opacity: 1; }
}
CSS动画是一种强大的Web设计技术,它可以帮助您创建令人印象深刻的动画效果。使用@keyframes规则和animation属性,您可以轻松创建简单的补间效果和复杂的动画序列。此外,CSS动画还提供了许多高级用法,例如动态延迟、多步动画和关键帧百分比。