CSS Anitisheni

CSS Anitisheni

CSS 可实现 HTML 元素的动画效果,而不使用 JavaScript 或 Flash!

CSS

在本章中,您将学习如下属性:

  • @keyframes
  • animation-name
  • animation-duration
  • animation-delay
  • animation-iteration-count
  • animation-direction
  • animation-timing-function
  • animation-fill-mode
  • animation

对动画的浏览器支持

表格中的数字注明了完全支持该属性的首个浏览器版本。

Mwako Chrome IE Firefox Safari Opera
@keyframes 43.0 10.0 16.0 9.0 30.0
animation-name 43.0 10.0 16.0 9.0 30.0
animation-duration 43.0 10.0 16.0 9.0 30.0
animation-delay 43.0 10.0 16.0 9.0 30.0
animation-iteration-count 43.0 10.0 16.0 9.0 30.0
animation-direction 43.0 10.0 16.0 9.0 30.0
animation-timing-function 43.0 10.0 16.0 9.0 30.0
animation-fill-mode 43.0 10.0 16.0 9.0 30.0
animation 43.0 10.0 16.0 9.0 30.0

什么是 CSS 动画?

动画使元素逐渐从一种样式变为另一种样式。

您可以随意更改任意数量的 CSS 属性。

如需使用 CSS 动画,您必须首先为动画指定一些关键帧。

关键帧包含元素在特定时间所拥有的样式。

@keyframes 规则

如果您在 @keyframes 规则中指定了 CSS 样式,动画将在特定时间逐渐从当前样式更改为新样式。

Kuwa hali ya uharibifu inafanyika, inafaa kuwa na uharibifu wa elementi.

Mfano hii itatuma "example" uharibifu kwa elementi ya <div>. Uharibifu unaweza kumaliza 4 sekunde, ikitumia hali ya rangi ya <div> ya kina ya "red" hadi "yellow":

Mfano

/* 动画代码 */
@keyframes example {
  from {background-color: red;}
  to {background-color: yellow;}
}
/* Tumia uharibifu wa hali ya hali hii kwa elementi hii */
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}

Inafanyia mafanikio

Uwaguzi:animation-duration Hali ya uharibifu inaeleza kwa kumaliza uharibifu kwa wakati. Ikiwa haitakayotakiwa animation-duration Hali ya uharibifu haikufanyika, kwa sababu thamani ya kuzingatia ni 0s (0 sekunde).

Kwenye mifano wa juu, kwa kutumia maneno ya kikuu "from" na "to" (inaadilisha 0% (kuanza) na 100% (kumaliza)), tumeweka hali ya uharibifu kwa uharibifu.

Wewe pia unaenda kutumia ufadhi wa namba za pondo. Kwa kutumia ufadhi wa pondo, unaweza kuongeza ujenzi wa uharibifu wa hali ya kina kwa ujenzi.

Mfano wa miongo hii watafutika kwa 25%, kwa 50% na 100% kwa uharibifu wa muda wa hali ya <div> ya mabaki ya rangi ya mgongo:

Mfano

/* 动画代码 */
@keyframes example {
  0%   {background-color: red;}
  25%  {background-color: yellow;}
  50%  {background-color: blue;}
  100% {background-color: green;}
}
/* 应用动画的元素 */
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}

Inafanyia mafanikio

下面的例子将在动画完成 25%,完成 50% 以及动画完成 100% 时更改背景颜色和

元素的位置:

Mfano

/* 动画代码 */
@keyframes example {
  0%   {background-color:red; left:0px; top:0px;}
  25%  {background-color:yellow; left:200px; top:0px;}
  50%  {background-color:blue; left:200px; top:200px;}
  75%  {background-color:green; left:0px; top:200px;}
  100% {background-color:red; left:0px; top:0px;}
}
/* 应用动画的元素 */
div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}

Inafanyia mafanikio

延迟动画

animation-delay 属性规定动画开始的延迟时间。

下面的例子在开始动画前有 2 秒的延迟:

Mfano

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-delay: 2s;
}

Inafanyia mafanikio

负值也是允许的。如果使用负值,则动画将开始播放,如同已播放 N 秒。

在下面的例子中,动画将开始播放,就好像它已经播放了 2 秒钟一样:

Mfano

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-delay: -2s;
}

Inafanyia mafanikio

设置动画应运行多少次

animation-iteration-count 属性指定动画应运行的次数。

下面的例子在停止前把动画运行 3 次:

Mfano

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 3;
}

Inafanyia mafanikio

下面的例子使用值 "infinite" 使动画永远持续下去:

Mfano

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}

Inafanyia mafanikio

反向或交替运行动画

animation-direction 属性指定是向前播放、向后播放还是交替播放动画。

animation-direction 属性可接受以下值:

  • normal - 动画正常播放(向前)。默认值
  • reverse - 动画以反方向播放(向后)
  • alternate - 动画先向前播放,然后向后
  • alternate-reverse - 动画先向后播放,然后向前

下例将以相反的方向(向后)运行动画:

Mfano

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-direction: reverse;
}

Inafanyia mafanikio

下面的例子使用值 "alternate" 使动画先向前运行,然后向后运行:

Mfano

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 2;
  animation-direction: alternate;
}

Inafanyia mafanikio

下面的例子使用值 "alternate-reverse" 使动画先向后运行,然后向前运行:

Mfano

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 2;
  animation-direction: alternate-reverse;
}

Inafanyia mafanikio

指定动画的速度曲线

animation-timing-function 属性规定动画的速度曲线。

animation-timing-function 属性可接受以下值:

  • ease - 指定从慢速开始,然后加快,然后缓慢结束的动画(默认)
  • linear - 规定从开始到结束的速度相同的动画
  • ease-in - 规定慢速开始的动画
  • ease-out - 规定慢速结束的动画
  • ease-in-out - 指定开始和结束较慢的动画
  • cubic-bezier(n,n,n,n) - 运行您在三次贝塞尔函数中定义自己的值

下面这些例子展示了可以使用的一些不同速度曲线:

Mfano

#div1 {kina ya muda ya kina ya muda: kina ya muda ya kina ya muda;}
#div2 {kina ya muda ya kina ya muda: kina ya muda ya kina ya muda;}
#div3 {kina ya muda ya kina ya muda: kina ya muda ya kina ya muda;}
#div4 {kina ya muda ya kina ya muda: kina ya muda ya kina ya muda;}
#div5 {kina ya muda ya kina ya muda: kina ya muda ya kina ya muda;}

Inafanyia mafanikio

Kina inasababisha kina ya muda ya kina ya muda.

Kina ya CSS ya kina ya muda haliwezi kutumia kina ya muda kabla ya kina ya muda wa kina ya muda au baada ya kina ya muda wa kina ya muda.animation-fill-mode kina kinapokea kina za hivi.

Kama kina haliwezi kusababisha kina wa muda (kutoka chanzo, kabla ya kina wa muda, au baada ya kina wa muda),animation-fill-mode Kina inasababisha muundo wa kina ya muda ya kina ya muda.

Mfano wa kina ya kina ya muda ya kina ya muda kinapokea kina za hivi:

  • none - Chaguo cha kawaida. Kina haliwezi kutumia muundo wa kina wa muda kabla ya kina wa muda au baada ya kina wa muda.
  • forwards - Kina kinasitishwa kwa muundo wa kina wa muda wa kina wa muda wa muda (kutegemea mazingira ya kina ya muda na muda wa kina ya muda).
  • backwards - Kina kinapata muundo wa kina wa muda wa kina wa muda wa kina wa muda (kutegemea mazingira ya kina ya muda).
  • both - Tukio la kina hilo linatumiwa kusababisha kina kufikia muundo wa kina wa muda kwa muda wa kina wa muda.

Mfano hii inaonyesha kwa sababu ya muda wa muda wa kina ya msingi ya <div> inasitishwa kwa muundo wa kina ya kwanza kwa muda wa kina ya kwanza ya kina ya muda.

Mfano

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-fill-mode: forwards;
}

Inafanyia mafanikio

Maelezo yafuatayo yanafanya kwa kinaanimisha kuanza kwa kumwambia <div> kuwa na muundo wa kinaimeshi wa muhimu wa kwanza wakati wa kinaanimisha kinaingia wakati wa kumfuata:

Mfano

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-delay: 2s;
  animation-fill-mode: backwards;
}

Inafanyia mafanikio

Maelezo yafuatayo yanafanya kwa kinaanimisha kuanza kwa kumwambia <div> kuwa na muundo wa kinaimeshi wa muhimu wa kwanza, na kumpenda muundo wa kinaimeshi wa kwanza kumaliza:

Mfano

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-delay: 2s;
  animation-fill-mode: both;
}

Inafanyia mafanikio

Mwako wa kinaanimisha wa kinaanimisha

Maelezo yafuatayo yanatoa watano wa matumizi ya kinaanimisha:

Mfano

div {
  animation-name: example;
  animation-duration: 5s;
  animation-timing-function: linear;
  animation-delay: 2s;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}

Inafanyia mafanikio

Inafanyia uendelevu wa kinaanimisha wa kinaanimisha: animation Mwako wa kinaanimisha kinaweza kufanya jinsi iliyofikia kinaanimisha kama iliyotumika kwenye maelezo yanaofikia kinaanimisha:

Mfano

div {
  animation: example 5s linear 2s infinite alternate;
}

Inafanyia mafanikio

Matumizi ya CSS ya kinaanimisha

Tafaniki inayopaswa kwenye @keyframes na kila matumizi ya CSS ya kinaanimisha inaitwa:

Mwako Inasimulia
@keyframes Inauza mtindo wa kinaanimisha.
animation Inauza uendelevu wa sababu ya kinaanimisha wa kila sababu.
animation-delay Inauza wakati anayoweza kuanza kinaanimisha.
animation-direction Inauza kama anapendea kinaanimisha kuingia kwenye kinaanimisha, kumaliza kinaanimisha au kuingia na kumaliza kinaanimisha kila mara.
animation-duration Inauza wakati anayoweza kufikia muda wa kipindi cha kinaanimisha.
animation-fill-mode Inauza mtindo wa maelezo wa kitu kinachotumika kwa sababu ya kinaanimisha (kwenye kuanza, kwenye kumaliza, au zote mbili).
animation-iteration-count Inauza mara anapendea kipendea kina animesheni.
animation-name Inauza jina la @keyframes la kipendea kina animesheni.
animation-play-state Kumekuwa na Vifaa vya Kufikia Anitisheni Kupitia Kusababisha au Kusikitisha
animation-timing-function Kumekuwa na Vifaa vya Kufikia Kina ya Anitisheni