DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS3基礎 >> 11.2 @keyframes
11.2 @keyframes
編輯:CSS3基礎     

一、@keyframes簡介

從上一節我們知道,使用animation屬性定義CSS3動畫需要2步:

  • (1)定義動畫;
  • (2)調用動畫;

在CSS3中,在使用動畫之前,我們必須使用@keyframes規則定義動畫。

語法:

 
@keyframes 動畫名
{
    0%
    {
        ……
    }
    ……
    100%
    {
        
    }
}

說明:

0%表示動畫的開始,100%表示動畫的結束。0%和100%是必須的,不過在一個@keyframes規則中可以由多個百分比構成,每一個百分比都可以定義自身的CSS樣式,從而形成一系列的動畫效果。

小技巧:使用@keyframes規則時,如果僅僅只有0%和100%這兩個百分比的話,這時0%和100%還可以使用關鍵詞from和to來代表,其中0%對應的是from,100%對應的是to。

舉例:

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>CSS3 @keyframes</title>
    <style type="text/css">
        @-webkit-keyframes mycolor
        {
            0%{background-color:red;}
            30%{background-color:blue;}
            60%{background-color:yellow;}
            100%{background-color:green;}
        }
        div
        {
            width:100px;
            height:100px;
            border-radius:50px;
            background-color:red;
        }
        div:hover
        {
            -webkit-animation-name:mycolor;
            -webkit-animation-duration:5s;
            -webkit-animation-timing-function:linear;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

在浏覽器預覽效果如下:

分析:

(1)定義動畫

這裡我們使用@keyframes規則定義了一個名為mycolor的動畫,剛剛開始時背景顏色為紅色,從0%到30%之間背景顏色從紅色變為藍色,然後從30%到60%之間背景顏色從藍色變為黃色,最後在60%到100%之間背景顏色從藍色變為綠色。動畫執行完畢,背景顏色回歸紅色(初始值)。

很多新手會有疑問,這些百分比是什麼意思,是相對什麼來說的呢?哪還有什麼,肯定是相對“持續時間animation-duration”啦!例如這個例子裡面,我們定義持續時間為5s,則0%指的是0s(開始時),30%指的是1.5s的時候,60%指的是3s的時候,100%則指的是5s(結束時)。假如我們定義持續時間為10s,那麼0%指的是0s(開始時),30%指的是3s的時候,60%指的是6s的時候,而100%則指的是10s(結束時)。以此類推。

(2)調用動畫

我們可以使用@keyframes規則定義動畫,但是這樣定義的動畫並不會自動執行,我們還需要“調用動畫”,這樣動畫才會生效。其實這就跟JavaScript的函數一樣,首先必須定義函數,然後只有調用函數,函數才會執行生效。這個例子中,我們設置在鼠標移動到div元素時(div:hover)使用animation-name屬性調用動畫名,然後使用animation-duration屬性定義動畫持續總時間、animation-timing-function屬性定義動畫函數等。這些屬性在接下來的課程都會有詳細地講解。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved