DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS3基礎 >> 11.3 調用動畫animation-name屬性
11.3 調用動畫animation-name屬性
編輯:CSS3基礎     

一、animation-name屬性

在CSS3中,使用@keyframes規則定義的動畫並不會自動執行,我們還需要使用animation-name屬性來調用動畫,之後動畫才會生效。

語法:

animation-name:動畫名;

說明:

注意,animation-name 調用的動畫名需要和@keyframes規則定義的動畫名稱完全一致(區分大小寫),如果不一致將不具有任何動畫效果。為了浏覽器兼容性,針對Chrome和Safari浏覽器需要加上-webkit-前綴,而針對Firefox浏覽器需要加上-moz-。

舉例:

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

在浏覽器預覽效果如下:

分析:

這裡我使用@keyframes規則定義了2個動畫:mycolor和mytransform。但是我們只使用animation-name調用動畫名為mytransform的動畫。因此,名為mytransform的動畫就會生效,而名為mycolor的動畫不會生效。

在mytransform動畫中,0%到50%的之間div元素border-radius屬性值實現從0變成50px,然後在50%到100%之間保持border-radius屬性值不變並且水平向右移動50px。

大家自行測試一下當mytransform定義成以下幾種方式,然後跟站長的例子比較一下有何不同?看看大家的觀察能力如何。

方式(1):

 
@-webkit-keyframes mytransform
{
    0%{border-radius:0;}
    50%{border-radius:50px;-webkit-transform:translateX(0);}
    100%{-webkit-transform:translateX(50px);}
}

方式(2):

 
@-webkit-keyframes mytransform
{
    0%{border-radius:0;}
    50%{border-radius:50px;}
    100%{-webkit-transform:translateX(50px);}
}

初學者往往都會有疑問,每次我們都是定義:hover偽類 定義鼠標移動到元素上時,動畫才開始,假如我們想要打開網頁的第一時間動畫就能自動執行,那該怎麼辦呢?

其實很簡單,我們去除鼠標指針停留在div元素上時的樣式,並把樣式中的代碼改寫為div元素本身的樣式,成為如下所示的代碼,則動畫將在頁面打開時就立刻進行播放。

 
div
{
    width:100px; 
    height:100px;
    background-color:red;
    -webkit-animation-name:mytransform;
    -webkit-animation-duration:5s;
    -webkit-animation-timing-function:linear;
}

舉例:

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

在浏覽器預覽效果如下:

分析:

看完這個,那麼問題又來了,假如我想要網頁打開的時候就開始執行動畫,並且想讓動畫一直持續下去,又該怎麼做呢?這個我們可以使用動畫播放次數的animation-iteration-count屬性,在後續課程我們會詳細給大家講解。

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