Css開發:動畫效果實現

一、動畫實例

  1、平移效果

<!DOCTYPE html>
<html>
<head>
    <title>測試</title>
    <style>
        .test {
            width: 5px;
            height: 5px;
            background: #000000;
            border-radius: 5px;
            animation: move 1s linear;
        }
        @keyframes move{
            100%{
                margin-left: 50px; 
            }
        }
    </style>
</head>
<body>
    <div class="test"></div>
</body>
</html>

  在div的class類樣式中添加animation屬性則爲添加動畫效果,對應值爲動畫、維持/消耗時間以及一些附屬的屬性

  如上代碼中,通過@keyframes定義動畫效果,move這個效果則是距離左邊距50像素,搭配限制的時間後則爲1秒內完成從左側無邊距到左邊距50的變化,這個過程就是動畫效果的實現。

  附屬屬性中的linear代表勻速移動,其他類似的速度相關屬性還有ease(默認,先慢開始再加快最後變慢結束)、ease-in(先慢開始然後加快結束)、ease-out(先快開始然後變慢結束)、ease-in-out(先慢後快後慢,和ease類似)。

二、動畫屬性詳解

  1、animation-name:

  動畫名稱,添加動畫效果時該屬性必要的,默認爲none,即無動畫效果。

  2、animation-duration:

  執行週期,添加動畫效果時該屬性也是必要的,默認爲0,即無動畫效果。

  3、animation-delay:

  延遲時間,添加動畫效果時該屬性爲動畫播放前的延遲時間,它的值可以是秒、毫秒,默認爲0,即不進行延遲,立即開始動畫。

  4、animation-timing-function:

  執行速度,它的值是貝塞爾曲線,默認值是ease。

  linear代表勻速移動,ease(默認,先慢開始再加快最後變慢結束)、ease-in(先慢開始然後加快結束)、ease-out(先快開始然後變慢結束)、ease-in-out(先慢後快後慢,和ease類似)。

  5、animation-iteration-count:

  循環次數,直接寫數字可以自定義播放動畫的次數,或者使用infinite來設置無限循環播放

  6、animation-fill-mode:

  定義樣式,即動畫結束以後或者未開始前的樣式,默認爲none,就不會額外添加樣式,動畫執行後恢復到原本的樣子。

  forwards表示動畫結束後樣式定格,即取動畫在100%進度時的樣式,不會還原到動畫執行前的樣式。例如在鼠標懸浮到某個元素上需要放大顯示時,可以設置成動畫結束後保留樣式,否則就會在放大結束後回退到放大前的大小。

  backwards表示動畫開始前預置樣式,即取動畫在0%進度時的樣式(通常搭配animation-delay的延遲效果使用,在延遲期間顯示預置的樣式)。

  both表示forwardsbackwards都生效。

  7、animation-direction:

  輪流反向播放,默認值爲normal,正常播放。

  reverse表示動畫反向播放alternate表示動畫奇數次正向播放,偶數次反向播放alternate-reverse表示動畫在奇數次反向播放,偶數次正向播放

三、瀏覽器兼容性

  IE還是一如既往的難以兼容,老版本肯定是不行了,animation-fill-mode這樣的屬性到IE10才兼容。

  其他瀏覽器如Firefox、Opera添加動畫效果時可以通過animation@keyframes來搭配使用,Safari 、 Chrome需要使用-webkit-animation@-webkit-keyframes

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章