H5中須要掌握的 ANIMATION 動畫效果

 CSS3的動畫在PC網頁上或者APP上用得愈來愈多,好比H5頁面的應用,目前在營銷傳播上的意義比較大,還有企業官網或者APP主要介紹也用得比較多,固然還有不少地方都用到.因此學習css的動畫也迫在眉睫.那咱們就進入主題!css

 

animation 屬性在CSS中可使用其餘的css屬性,來實現動畫,例如color,background-color,height或者width.每個動畫須要定義@keyframes 動畫名,做爲animation的屬性值,例如:html

 

 
.element {
  animation: pulse 5s infinite;
}
@keyframes pulse {  0% {    background-color: #001F3F;  }  100% {    background-color: #FF4136;  }

}

咱們來實現下面這個動做:web

HTML結構:安全

 
[html]  view plain copy
 
  1. <div class="element"></div>  

 

CSS代碼:微信

 
[css]  view plain copy
 
  1. .element {  
  2.       width100%;  
  3.    height100%;  
  4.    animation: pulse 5s infinite;  
  5. }  
  6. @keyframes pulse {  
  7.   0% {  
  8.     background-color#001F3F;  
  9.   }  
  10.   100% {  
  11.     background-color#FF4136;  
  12.   }  
  13. }  

 

每個 @keyframes 屬性規則的定義,都會在指定的時間內發生動做.例如,動做從0%開始,到100%結束.keyframes 能夠用簡寫方式,animation屬性來控制,或者其餘八個子屬性,控制keyframes如何運做..ide

子屬性

  • animation-name: 申明動畫@keyframes的名稱.性能

  • animation-duration: 動畫在多久內完成一個週期.學習

  • animation-timing-function: 設置預加速度曲線動畫,例如 ease 或者linear.flex

  • animation-delay: 動畫延遲執行的時間.動畫

  • animation-direction: 設定動畫執行完成後的方向.默認是起始開始執行.

  • animation-iteration-count: 動畫執行的次數.

  • animation-fill-mode:設定動畫是執行以前仍是以後.
    例如,你能夠設置動畫保持在最後的狀態,或者也能夠切換回動畫開始的狀態.

  • animation-play-state: 開始或者暫停動畫

這些屬性能夠這樣使用:

 
@keyframes stretch {
  /* declare animation actions here */
}
.element {  animation-name: stretch;  animation-duration: 1.5s;  animation-timing-function: ease-out;  animation-delay: 0;  animation-direction: alternate;  animation-iteration-count: infinite;  animation-fill-mode: none;  animation-play-state: running;
}
/*  is the same as: */
.element {  animation:    stretch    1.5s    ease-out    0    alternate    infinite    none    running;

}

咱們來看下這個動畫:


HTML結構:

 
[html]  view plain copy
 
  1. <div class="element"></div>  

 

CSS代碼:

 
[css]  view plain copy
 
  1. .element {  
  2.     height250px;  
  3.     width250px;  
  4.     margin0 auto;  
  5.     background-colorred;  
  6.     animation-name: stretch;  
  7.     animation-duration: 1.5s;  
  8.     animation-timing-function: ease-out;  
  9.     animation-delay: 0;  
  10.     animation-direction: alternate;  
  11.     animation-iteration-count: infinite;  
  12.     animation-fill-mode: none;  
  13.     animation-play-state: running;  
  14. }  
  15. @keyframes stretch {  
  16.     0% {  
  17.         transform: scale(.3);  
  18.         background-colorred;  
  19.         border-radius: 100%;  
  20.     }  
  21.     50% {  
  22.         background-color: orange;  
  23.     }  
  24.     100% {  
  25.         transform: scale(1.5);  
  26.         background-color: yellow;  
  27.     }  
  28. }  
  29. body,  
  30. html {  
  31.     height100%;  
  32. }  
  33. body {  
  34.     display: flex;  
  35.     align-items: center;  
  36.     justify-contentcenter;  
  37. }  

 

下面是子屬性可使用的全部值列表:

animation-timing-function ease, ease-out, ease-in, ease-in-out, linear, cubic-bezier(x1, y1, x2, y2) (例如. cubic-bezier(0.5, 0.2, 0.3, 1.0))
animation-duration Xs 或者 Xms
animation-delay Xs 或者 Xms
animation-iteration-count X
animation-fill-mode forwards, backwards, both, none
animation-direction normal, alternate
animation-play-state paused, running, running

合併寫法

若是動畫有着一樣的開始和結束屬性,能夠用逗號分隔0%和100%:

 
@keyframes pulse {
  0%, 100% {
    background-color: yellow;
  }
  50% {
    background-color: red;
  }

}

多個動畫

一個選擇器能夠同時申明多個動畫,它們之間用逗號隔開.下面的例子,使用了兩個keyframe,也就是2個動畫的效果

 
.element {
  animation: 
    pulse 3s ease infinite alternate, 
    nudge 5s linear infinite alternate;
}

咱們看下下面這個動畫


HTML代碼結構

 
[html]  view plain copy
 
  1. <div class="element"></div>  

 

CSS代碼:

 
[css]  view plain copy
 
  1. .element {  
  2.     height400px;  
  3.     width400px;  
  4.     background-colorred;  
  5.     animation:  
  6.     pulse 3s ease infinite alternate,  
  7.     nudge 5s linear infinite alternate;  
  8.     border-radius: 100%;  
  9. }  
  10. @keyframes pulse {  
  11.     0%100% {  
  12.         background-colorred;  
  13.     }  
  14.     50% {  
  15.         background-color: orange;  
  16.     }  
  17. }  
  18. @keyframes nudge {  
  19.     0%100% {  
  20.         transform: translate(00);  
  21.     }  
  22.     50% {  
  23.         transform: translate(150px0);  
  24.     }  
  25.     80% {  
  26.         transform: translate(-150px0);  
  27.     }  
  28. }  
  29. html, body {  
  30.     height100%;  
  31. }  
  32. body {  
  33.     display: flex;  
  34.     align-items: center;  
  35.     justify-contentcenter;  
  36. }  

性能

多數動畫屬性都存在着性能問題,所以,咱們在使用它們的時候,須要謹慎的去處理.能夠,咱們也能夠和下面的安全性動畫一塊兒使用:

  • transform: translate()

  • transform: scale()

  • transform: rotate()

  • opacity

 

 本文屬於吳統威的博客,微信公衆號:bianchengderen 的原創文章,轉載時請註明出處及相應連接:http://www.wutongwei.com/front/infor_showone.tweb?id=151 ,歡迎你們傳播與分享.

 

相關文章
相關標籤/搜索