📜  CSS Animation属性(1)

📅  最后修改于: 2023-12-03 15:00:04.475000             🧑  作者: Mango

CSS Animation属性

CSS动画是一种用CSS样式表来创建动画的现代Web设计技术。CSS动画可以让你创建简单的补间效果,例如平移和旋转,也可以让你创建复杂的动画序列,例如第一人称射击游戏中的动画。

CSS Animation属性的基本语法

在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 Animation属性的高级用法

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动画还提供了许多高级用法,例如动态延迟、多步动画和关键帧百分比。