CSS動畫基礎:常用動畫效果的設置


      設頁面中有<div class=”shape”></div>,若定義.shape的樣式規則為:

  .shape

  {

    position: absolute;

    left:125px;

    top:75px;

    width: 150px;

    height: 150px;

    border-radius:10% 50% 10% 50%;

    border:2px solid #f00;

    background-color: #ff0;

  }

可在頁面中顯示如圖1所示的圖形。

 

圖1  動畫基本圖形

      以這個圖形作為參與動畫的對象,為其定義關鍵幀anim,並設置animation屬性,使之產生動畫效果。

例如,定義如下的關鍵幀anim

  @keyframes anim

  {

    0%,15% { transform: rotate(0); }

    100%   { transform: rotate(360deg);  }

  }

可在頁面中呈現如圖2所示的動畫,圖形旋轉起來了。

 

圖2  圖形旋轉效果

編寫的HTML文件內容如下。

<!DOCTYPE html>

<html>

<title>圖形的動畫效果</title>

<head>

<style>

  .container

  { 

    position: relative;

    margin: 50px auto;

    width: 400px;

    height:300px;

    background:#d8d8d8;

    overflow:hidden;

    border: 4px solid rgba(255, 0, 0, 0.9);

    border-radius: 10%;

  }

  .shape

  {

    position: absolute;

    left:125px;

    top:75px;

    width: 150px;

    height: 150px;

    border-radius:10% 50% 10% 50%;

    border:2px solid #f00;

    background-color: #ff0;

    animation:anim 5s linear infinite;

  }

  @keyframes anim

  {

    0%     { transform: rotate(0); }

    100%   { transform: rotate(360deg);  }

  }

</style>

</head>

<body>

<div class="container">

  <div class="shape"></div>

</div>

</body>

</html>

1.閃爍

      閃爍動畫效果的設置主要利用opacity屬性為參與動畫的對象設置一個透明度級別。其基本格式為:opacity: value;

      其中,屬性值value指定不透明度。從0.0(完全透明)到1.0(完全不透明)。

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%,50%,100%   {opacity:1;}

    25%,75%       {opacity:0;}

  }

則在頁面中呈現如圖3所示的閃爍動畫效果。

 

圖3  閃爍

2.淡入淡出

利用opacity屬性還可以實現淡入淡出的動畫效果。

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%    {  opacity:1;  transform:translateY(0);  }

    100%  {  opacity:0;  transform:translateY(-225px);  }

  }

則在頁面中呈現如圖4所示的向上淡出動畫效果。

 

圖4  向上淡出

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%    {  opacity:0;  transform:translateX(-275px);  }

    100%  {  opacity:1;  transform:translateX(0);  }

  }

則在頁面中呈現如圖5所示的從左淡入動畫效果。

 

圖5  從左淡入

      仿照上面的例子,大家可以試試向下淡出、向左淡出、向右淡出、從上淡入、從下淡入、從右淡入等動畫效果的設置。甚至可以設置從四個角向中心的淡入、從中心向四個角淡出的動畫效果。

3.飛入

      利用變換屬性transform:translate();讓對象的位置進行變化,可以實現飛入動畫效果。

若修改關鍵幀anim如下:

   @keyframes anim

  {

    0%    { transform:translate(-275px,-225px);  }

    100%  { transform:translate(0,0);  }

  }

則在頁面中呈現如圖6所示的從左上角飛入動畫效果。

 

圖6  從左上角飛入

4.縮放

縮放主要是利用變換屬性transform:scale(n)進行設置。

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%,100%   { transform:scale(1);}

    50%  { transform:scale(1.8);}

  }

則在頁面中呈現如圖7所示的放大與縮小動畫效果。

 

圖7  放大與縮小

5.翻轉

      利用屬性transform: rotateX(n);或transform: rotateY(n);可以實現翻轉動畫效果。

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%   {transform:perspective(400px) rotateY(0);}

    100% {transform:perspective(400px) rotateY(360deg);}

  }

則在頁面中呈現如圖8所示的水平(左右)翻轉動畫效果。

 

圖8  水平翻轉

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%   {transform:perspective(400px) rotateX(0);}

    100% {transform:perspective(400px) rotateX(360deg);}

  }

則在頁面中呈現如圖9所示的垂直(上下)翻轉動畫效果。

 

圖9  垂直翻轉

若修改關鍵幀anim如下:

  @keyframes anim

  {

     0%  { transform:perspective(400px) rotateY(0);}

    40% { transform:perspective(400px) rotateY(170deg) scale(1.5);}

    50% { transform:perspective(400px) rotateY(190deg) scale(1.5);}

    80% { transform:perspective(400px) rotateY(360deg) scale(1);}

    100% {transform:perspective(400px) scale(1);}

  }

則在頁面中呈現如圖10所示的縮放翻轉動畫效果。

 

圖10  縮放式翻轉

6.搖擺

讓對象在一個較小范圍內進行旋轉,可以實現搖擺的動畫效果。

若修改關鍵幀anim如下:

  @keyframes anim

  {

    20%  { transform:rotate(15deg); }

    40%  { transform:rotate(-15deg); }

    60%  { transform:rotate(8deg);}

    80%  { transform:rotate(-8deg); }

    100% { transform:rotate(0); }

  }

則在頁面中呈現如圖11所示的搖擺動畫效果。

 

圖11  搖擺

若在搖擺過程同時讓對象左右適當平移,修改關鍵幀anim如下:

  @keyframes anim

  {

    0%,100%   { transform:translateX(0);}

    15%  { transform:translateX(-100px) rotate(-5deg);}

    30%  { transform:translateX(80px) rotate(5deg);}

    45%  { transform:translateX(-65px) rotate(-3deg);}

    60%  { transform:translateX(40px) rotate(3deg);}

    75%  { transform:translateX(-20px) rotate(-1deg);}

  }

則在頁面中呈現如圖12所示的左右搖擺動畫效果。

 

圖12  左右搖擺

若在搖擺過程同時讓對象進行適當縮放,修改關鍵幀anim如下:

  @keyframes anim

  {

    0%,100%  {  transform:scale(1)  rotate(0);}

    10%,20%  { transform:scale(0.9) rotate(-8deg);}

    30%,50%,70%,90% { transform:scale(1.1) rotate(8deg);}

    40%,60%,80%  { transform:scale(1.1) rotate(-8deg);}

  }

則在頁面中呈現如圖13所示的晃動動畫效果,它也像在振鈴。

 

圖13  晃動

7.往復運動

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%,100%  {  transform:translateX(0); }

    10%,30%,50%,70%,90%  {  transform:translateX(-15px); }

    20%,40%,60%,80%  {  transform:translateX(15px); }

  }

則在頁面中呈現如圖14所示的左右往復運動動畫效果。

 

圖14  左右往復運動

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%,20%,50%,80%,100% { transform:translateY(0);}

    40% { transform:translateY(-50px); }

    60% { transform:translateY(50px); }

  }

則在頁面中呈現如圖15所示的上下彈跳動畫效果。

 

圖15  上下彈跳

若修改關鍵幀anim如下:

  @keyframes anim

  {

    0%,100% { transform:translate(-20px,-20px); }

    25%     { transform:translate(-20px,20px); }

    50%     { transform:translate(20px,20px); }

    80%     { transform:translate(20px,-20px); }

  }

則在頁面中呈現如圖16所示的四周循環往復動畫效果。

 

圖16  四周循環往復運動

8.旋入

若修改關鍵幀anim如下:

  @keyframes anim

  {

     0%   { transform-origin:left bottom;transform:rotate(-180deg); opacity:0; }

    100%  { transform-origin:left bottom;transform:rotate(0); opacity:1;}

  }

則在頁面中呈現如圖17所示的從左下角旋入動畫效果。

 

圖17  從左下角旋入


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM