1. 介绍
CSS中的animation和@keyframes是用来创建动画效果的两个关键属性。animation属性用于定义动画的名称、时长、延迟和重复次数等细节;@keyframes规则则用于描述动画的关键帧。
2. animation属性
2.1 animation-name
animation-name属性用于指定动画的名称,可以是已定义的名称,也可以是自定义的名称。可以通过以下方式定义动画的名称:
animation-name: slidein;
其中,slidein为自定义的动画名称。
2.2 animation-duration
animation-duration属性用于指定动画的时长,单位可以是秒(s)或毫秒(ms)。可以通过以下方式定义动画的时长:
animation-duration: 3s;
其中,3s表示动画时长为3秒。
2.3 animation-delay
animation-delay属性用于指定动画的延迟时间,即动画开始前的等待时间。可以通过以下方式定义动画的延迟时间:
animation-delay: 1s;
其中,1s表示动画延迟1秒后开始。
2.4 animation-iteration-count
animation-iteration-count属性用于指定动画的重复次数。可以通过以下方式定义动画的重复次数:
animation-iteration-count: infinite;
其中,infinite表示动画无限次重复。
2.5 animation-fill-mode
animation-fill-mode属性用于指定动画在非活动时间段之前或之后的样式。可以通过以下方式定义动画的填充模式:
animation-fill-mode: forwards;
其中,forwards表示动画结束时保持最后一个关键帧的样式。
2.6 animation-timing-function
animation-timing-function属性用于指定动画的时间函数,即动画过程中样式的变化速度。可以通过以下方式定义动画的时间函数:
animation-timing-function: ease-in-out;
其中,ease-in-out表示动画先加速后减速。
3. @keyframes规则
3.1 @keyframes语法
@keyframes规则用于定义动画的关键帧,其中包含了动画在不同时间点的样式。可以通过以下方式定义@keyframes规则:
@keyframes slidein {
from {
transform: translateX(0%);
}
to {
transform: translateX(100%);
}
}
其中,slidein为动画名称,from与to关键字分别表示动画的起始和结束关键帧。
3.2 关键帧百分比
除了使用from和to关键字,还可以使用百分比来定义关键帧。可以通过以下方式定义关键帧百分比:
@keyframes slidein {
0% {
transform: translateX(0%);
}
100% {
transform: translateX(100%);
}
}
其中,0%表示动画的起始关键帧,100%表示动画的结束关键帧。
4. 实例
下面是一个使用animation和@keyframes创建动画的例子:
/* 定义动画的关键帧 */
@keyframes slidein {
from {
transform: translateX(0%);
}
to {
transform: translateX(100%);
}
}
/* 应用动画 */
.element {
animation-name: slidein;
animation-duration: 3s;
animation-iteration-count: infinite;
}
以上示例中,定义了一个名为slidein的动画,使元素在3秒内从左边滑动到右边,并设置该动画无限重复。
5. 总结
通过CSS中的animation和@keyframes属性,我们可以轻松创建各种动画效果。animation属性用于定义动画的名称、时长、延迟和重复次数等细节,@keyframes规则用于描述动画的关键帧。通过合理搭配和调整这两个属性的取值,可以实现丰富多样的动画效果。