CSS3 動畫屬性

CSS3新增動畫屬性「@keyframes」,從字面就可以看出其意義——關鍵幀,這與Flash中的意義一致。利用CSS3製作動畫效果其原理與Flash一樣,我們需要定義關鍵影格處的狀態效果,由CSS3來驅動產生動畫效果。

語法

@keyframes animationname {keyframes-selector {css-styles;}}
animationname 必要。定義動畫的名稱。
keyframes-selector
必備。動畫時長的百分比。
合法的值:
0-100%
from(與 0% 相同)
to(與 100% 相同)
css-styles 必要。一個或多個合法的 CSS 樣式屬性。

定義和用法
透過 @keyframes 規則,您能夠建立動畫。
創建動畫的原理是,將一套 CSS 樣式逐漸改變為另一套樣式。
在動畫過程中,您能夠多次改變這套 CSS 樣式。
以百分比來規定改變發生的時間,或透過關鍵字 "from" 和 "to",等價於 0% 和 100%。
0% 是動畫的開始時間,100% 動畫的結束時間。
為了獲得最佳的瀏覽器支持,您應該始終定義 0% 和 100% 選擇器。
註解:請使用動畫屬性來控制動畫的外觀,同時將動畫與選擇器綁定。

瀏覽器支援狀況

目前瀏覽器都不支援 @keyframes 規則。
Firefox 支援替代的 @-moz-keyframes 規則。
Opera 支援替代的 @-o-keyframes 規則。
Safari 和 Chrome 支援替代的 @-webkit-keyframes 規則。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>php中文网(php.cn)</title> 
    <style type="text/css">
        div {
            width: 100px;
            height: 100px;
            background: #ff72cc;
            position: relative;
            animation: mymove 5s infinite;
            -moz-animation: mymove 5s infinite; /* Firefox */
            -webkit-animation: mymove 5s infinite; /* Safari and Chrome */
            -o-animation: mymove 5s infinite; /* Opera */
        }
        @keyframes mymove {
            0% {
                top: 0px;
            }
            25% {
                top: 200px;
            }
            75% {
                top: 50px
            }
            100% {
                top: 100px;
            }
        }
        @-moz-keyframes mymove /* Firefox */
        {
            0% {
                top: 0px;
            }
            25% {
                top: 200px;
            }
            75% {
                top: 50px
            }
            100% {
                top: 100px;
            }
        }
        @-webkit-keyframes mymove /* Safari and Chrome */
        {
            0% {
                top: 0px;
            }
            25% {
                top: 200px;
            }
            75% {
                top: 50px
            }
            100% {
                top: 100px;
            }
        }
        @-o-keyframes mymove /* Opera */
        {
            0% {
                top: 0px;
            }
            25% {
                top: 200px;
            }
            75% {
                top: 50px
            }
            100% {
                top: 100px;
            }
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>

CSS3 動畫

當在 @keyframes 建立動畫,把它綁定到一個選擇器,否則動畫不會有任何效果。

指定至少這兩個CSS3的動畫屬性綁定定向一個選擇器:

規定動畫的名稱

規定動畫的時長

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>php中文网(php.cn)</title> 
    <style type="text/css">
            div {
            width: 100px;
            height: 100px;
            background: red;
            position: relative;
            animation: mymove 5s infinite;
            -moz-animation: mymove 5s infinite; /* Firefox */
            -webkit-animation: mymove 5s infinite; /* Safari and Chrome */
            -o-animation: mymove 5s infinite; /* Opera */
        }
        @keyframes mymove {
            0% {
                top: 0px;
                background: red;
                width: 100px;
            }
            100% {
                top: 200px;
                background: yellow;
                width: 300px;
            }
        }
        @-moz-keyframes mymove /* Firefox */
        {
            0% {
                top: 0px;
                background: red;
                width: 100px;
            }
            100% {
                top: 200px;
                background: yellow;
                width: 300px;
            }
        }
        @-webkit-keyframes mymove /* Safari and Chrome */
        {
            0% {
                top: 0px;
                background: red;
                width: 100px;
            }
            100% {
                top: 200px;
                background: yellow;
                width: 300px;
            }
        }
        @-o-keyframes mymove /* Opera */
        {
            0% {
                top: 0px;
                background: red;
                width: 100px;
            }
            100% {
                top: 200px;
                background: yellow;
                width: 300px;
            }
        }
    </style>
</head>
<body>
  <p><b>注释:</b>本例在 Internet Explorer 中无效。</p>
  <div></div>
</body>
</html>

CSS3的動畫屬性

下面的表格列出了@keyframes 規則和所有動畫屬性:

屬性        描述           CSS

@keyframes    規定動畫。    3    

animation    所有動畫屬性的簡寫屬性,除了 animation-play-state 屬性。    3    

animation-name    規定 @keyframes 動畫的名稱。    3    

animation-duration    規定動畫完成一個週期所花費的秒或毫秒。預設是 0。    3    

animation-timing-function    規定動畫的速度曲線。預設是 "ease"。    3    

animation-delay    規定動畫何時開始。預設是 0。    3    

animation-iteration-count    規定動畫被播放的次數。預設是 1。    3    

animation-direction    規定動畫是否在下一週期反向播放。預設是 "normal"。    3    

animation-play-state    規定動畫是否正在運作或暫停。預設是 "running"。    3    

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>php中文网(php.cn)</title> 
    <style type="text/css">
        div {
            width: 100px;
            height: 100px;
            background: red;
            position: relative;
            animation: mymove 5s infinite;
            -moz-animation: mymove 5s infinite; /* Firefox */
            -webkit-animation: mymove 5s infinite; /* Safari and Chrome */
            -o-animation: mymove 5s infinite; /* Opera */
           }
        @keyframes mymove {
            0% {
                top: 0px;
                left: 0px;
                background: red;
            }
            25% {
                top: 0px;
                left: 100px;
                background: blue;
            }
            50% {
                top: 100px;
                left: 100px;
                background: yellow;
            }
            75% {
                top: 100px;
                left: 0px;
                background: green;
            }
            100% {
                top: 0px;
                left: 0px;
                background: red;
            }
        }
        @-moz-keyframes mymove /* Firefox */
        {
            0% {
                top: 0px;
                left: 0px;
                background: red;
            }
            25% {
                top: 0px;
                left: 100px;
                background: blue;
            }
            50% {
                top: 100px;
                left: 100px;
                background: yellow;
            }
            75% {
                top: 100px;
                left: 0px;
                background: green;
            }
            100% {
                top: 0px;
                left: 0px;
                background: red;
            }
        }
        @-webkit-keyframes mymove /* Safari and Chrome */
        {
            0% {
                top: 0px;
                left: 0px;
                background: red;
            }
            25% {
                top: 0px;
                left: 100px;
                background: blue;
            }
            50% {
                top: 100px;
                left: 100px;
                background: yellow;
            }
            75% {
                top: 100px;
                left: 0px;
                background: green;
            }
            100% {
                top: 0px;
                left: 0px;
                background: red;
            }
        }  
        @-o-keyframes mymove /* Opera */
        {
            0% {
                top: 0px;
                left: 0px;
                background: red;
            }
            25% {
                top: 0px;
                left: 100px;
                background: blue;
            }
            50% {
                top: 100px;
                left: 100px;
                background: yellow;
            }
            75% {
                top: 100px;
                left: 0px;
                background: green;
            }
            100% {
                top: 0px;
                left: 0px;
                background: red;
            }
        }
    </style>
</head>
<body>
  <p><b>注释:</b>本例在 Internet Explorer 中无效。</p>
  <div></div>
</body>
</html>


繼續學習
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <style type="text/css"> div { width: 100px; height: 100px; background: red; position: relative; animation: mymove 5s infinite; -moz-animation: mymove 5s infinite; /* Firefox */ -webkit-animation: mymove 5s infinite; /* Safari and Chrome */ -o-animation: mymove 5s infinite; /* Opera */ } @keyframes mymove { 0% { top: 0px; background: red; width: 100px; } 100% { top: 200px; background: yellow; width: 300px; } } @-moz-keyframes mymove /* Firefox */ { 0% { top: 0px; background: red; width: 100px; } 100% { top: 200px; background: yellow; width: 300px; } } @-webkit-keyframes mymove /* Safari and Chrome */ { 0% { top: 0px; background: red; width: 100px; } 100% { top: 200px; background: yellow; width: 300px; } } @-o-keyframes mymove /* Opera */ { 0% { top: 0px; background: red; width: 100px; } 100% { top: 200px; background: yellow; width: 300px; } } </style> </head> <body> <p><b>注释:</b>本例在 Internet Explorer 中无效。</p> <div></div> </body> </html>