CSS3動畫

移動端的開發也有這種hack,來解決可能的卡頓問題:css

css-webkit-transform: translate3d(0, 0, 0);
html


css3動畫大體分三類:css3


1.變形


說明

transform屬性能對元素對象進行變形操做,主要包括如下幾種:旋轉rotate、縮放scale、移動translate、傾斜skew以及矩陣變形matrix。web

取值

none:表示不進行變換;css3動畫

<transform-function>:表示一個或多個變換函數,以空格分開,所以能夠同時對一個元素進行transform的多種屬性操做。ide

  • 1.rotate(<angle>):旋轉元素
  • 2.scale(<number>[, <number>]):縮放元素
  • 3.translate(<translation-value>[, <translation-value>]):移動元素
  • 4.skew(<angle> [,<angle>]):傾斜元素
  • 5.matrix(<number>,<number>,<number>,<number>,<number>,<number>):矩陣變形
  • 6.perspective(length):透視

示例:transform:rotate(90deg) scale(1.5,0.8) translate(100px,50px) skew(45deg,45deg);函數


實例代碼:

css
  1. .demo_rotate{
  2.     -webkit-transition:1s ease all;
  3.     -moz-transition:1s ease all;
  4.     padding:10px;
  5.     margin:90px auto;
  6. }
  7. .demo_rotate:hover{
  8.     -webkit-transform:rotate(360deg) scale(1.2,1.2);
  9.     -moz-transform:rotate(360deg) scale(1.2,1.2);
  10.     background:#ff9900;
  11. }
  HTML
  
  
  
  
  1. <div class="demo_box demo_rotate">鼠標通過變大1.2倍、旋轉360度並改變背景色。</div>          

2.過渡


transform呈現的是一種變形結果,而Transation呈現的是一種過渡,通俗點說就是一種動畫轉換過程,如漸顯、漸弱、動畫快慢等。transition和transform是兩種不一樣的動畫模型。http://www.w3.org/TR/css3-transitions/性能

transition能夠和Transform同時使用。動畫

transition是一個複合屬性,能夠同時定義transition-property、transition-duration、transition-timing-function、transition-delay子屬性值。spa


實例代碼

CSS
      
      
      
      
  1. .transition_property_1{
  2.     -webkit-transition:0.5s ease;
  3.     -moz-transition:0.5s ease;
  4.     -webkit-transition-property:all;
  5.     -moz-transition-property:all;
  6.     position:absolute;
  7.     left:10px;
  8.     top:50px;
  9. }
  10. .transition_property_2{
  11.     -webkit-transition:0.5s ease;
  12.     -moz-transition:0.5s ease;
  13.     -webkit-transition-property:none;
  14.     -moz-transition-property:none;
  15.     position:absolute;
  16.     left:250px;
  17.     top:50px;
  18. }
  19. .transition_property_3{
  20.     -webkit-transition:0.5s ease;
  21.     -moz-transition:0.5s ease;
  22.     -webkit-transition-property:width;
  23.     -moz-transition-property:width;
  24.     position:absolute;
  25.     left:480px;
  26.     top:50px;
  27. }

  28. .transition_property_1:hover,
  29. .transition_property_2:hover,
  30. .transition_property_3:hover{
  31.     width:500px;
  32.     height:300px;
  33. }

     
     
     
     
<div class="demo_box transition_property_1">變換全部的屬性</div><div class="demo_box transition_property_2">不變換任何屬性</div><div class="demo_box transition_property_3">只變換寬度屬性</div>
效果預覽http://runjs.cn/detail/s3k5rfg0


3.動畫


說明

檢索或設置對象所應用的動畫名稱,必須與規則@keyframes配合使用,由於動畫名稱由@keyframes定義 若是提供多個屬性值,以逗號進行分隔。

如何開始進行動畫

@keyframes至關於一個命名空間,後面跟一個名詞,若是在class中的animation-name定義了與之對應的name,那麼就能夠執行動畫了。定義動畫時,簡單的動畫能夠直接使用關鍵字from和to,即從一種狀態過渡到另外一種狀態:如:

@-webkit-keyframes demo{
    from{left:0;}
    to{left:400px;}
}

複雜動畫:

@-webkit-keyframes demo{
    0%{left:0;}
    50%{left:200px;}
    100%{left:400px;}
}

這裏面的百分百有點像flash裏幀的概念。表示設置某個時間段內任意時間點的樣式。    

實例代碼

CSS
       
       
       
       
  1. .animation_name{
  2.     left:0;
  3.     top:100px;
  4.     position:absolute;
  5.     -webkit-animation:0.5s 0.5s ease infinite alternate;
  6.     -webkit-animation-name:demo;
  7.     -moz-animation:0.5s 0.5s ease infinite alternate;
  8.     -moz-animation-name:demo;
  9. }
  10. @-webkit-keyframes demo{
  11.     0%{left:0;}
  12.     100%{left:400px;}
  13. }
HTML
       
       
       
       
  1. <div class="demo_box animation_name">看我沒事來回跑</div>                    

預覽下效果:http://runjs.cn/code/uajpxech


說明

transform的參照點默認爲元素的中心點,若是要改變這個參照點,能夠是用transform-origin屬性進行自定義。

受影響變形函數:rotate()


      
      
      
      
  1. .origin_1{
  2.     -webkit-transform-origin:center center;
  3.     -moz-transform-origin:center center;
  4.     -webkit-transition:0.5s ease all;
  5.     -moz-transition:0.5s ease all;
  6.     position:absolute;
  7.     left:10px;
  8.     top:50px;
  9. }
  10. .origin_2{
  11.     -webkit-transform-origin:left top;
  12.     -moz-transform-origin:left top;
  13.     -webkit-transition:0.5s ease all;
  14.     -moz-transition:0.5s ease all;
  15.     position:absolute;
  16.     left:250px;
  17.     top:50px;
  18. }
  19. .origin_3{
  20.     -webkit-transform-origin:100% 100%;
  21.     -moz-transform-origin:100% 100%;
  22.     -webkit-transition:0.5s ease all;
  23.     -moz-transition:0.5s ease all;
  24.     position:absolute;
  25.     left:480px;
  26.     top:50px;
  27. }
  28. .origin_4{
  29.     -webkit-transform-origin:20px 60px;
  30.     -moz-transform-origin:20px 60px;
  31.     -webkit-transition:0.5s ease all;
  32.     -moz-transition:0.5s ease all;
  33.     position:absolute;
  34.     left:250px;
  35.     top:160px;
  36. }
  37. .origin_1:hover,
  38. .origin_2:hover,
  39. .origin_3:hover,
  40. .origin_4:hover{
  41.     -webkit-transform:rotate(45deg);
  42.     -moz-transform:rotate(45deg);
  43. }                        
HTML
      
      
      
      
  1. <div class="demo_box origin_1">在中心點旋轉45度</div>
  2. <div class="demo_box origin_2">在左上角旋轉45度</div>
  3. <div class="demo_box origin_3">用百分百值來來設置旋轉點旋轉45度</div>
  4. <div class="demo_box origin_4">用長度值來設置旋轉點旋轉45度</div>                        




相關文章
相關標籤/搜索