1. 程式人生 > 實用技巧 >CSS 動畫學習筆記

CSS 動畫學習筆記

該筆記中,主要記錄CSS動畫的:transition animation

一丶Transition

transition 從它本身的意思來說就是 過渡,在css3引入transition前,css的狀態變化都是即時完成的,例如我們平時若是不使用UI庫的情況下,做類似於摺疊面板的元件時,我們通常會用display的none和block來進行顯示&隱藏的控制;有時用到偽類或者點選進行即時樣式更改,頁面上的效果也是即時變化,通常是沒有動畫過渡效果,如下例:

註釋:這是一個通過點選控制高度變化的塊

身為前端,當然是想做一些頁面效果好的東西,而我們就可以通過transition對上面進行改進,效果如下:

註釋:這是添加了transition之後的效果

實現上述的程式碼如下:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .block_wrap {
            width: 500px;
            height: 500px;
            background: #e3e3e3;
            /*設定動畫過渡時間和其所需要的過渡的屬性*/
            transition
: 1s height; margin: 0 auto; } /*通過點選事件新增/刪除該樣式進行高度控制*/ .pick { height: 100px } </style> </head> <body> <div id="block_wrap" class="block_wrap"> </div> </body> <script type="text/javascript"> // 獲取標題元素
var block_wrap = document.getElementById('block_wrap') //給標題元素新增點選事件,通過點選控制class的新增&去除達成動畫效果 block_wrap.onclick = function() { // 獲取標題元素className集合 let classArray = this.className.split(/\s+/) if (classArray.includes('pick')) { block_wrap.classList.remove('pick') return } else { block_wrap.classList.add('pick') return } } </script> </html>

如若我們需要動畫效果的不止高度呢?那也可以,可以將樣式程式碼改成這樣

 1 .block_wrap {
 2     width: 500px;
 3     height: 500px;
 4         background: #e3e3e3;
 5     /*可以設定多個屬性,並且每個屬性的過渡時間都可不同*/
 6         transition: 1s height, 0.5s width; 
 7     margin: 0 auto;
 8 }
 9 /*通過點選事件新增/刪除該樣式進行高度&寬度控制*/
10 .pick {
11     height: 100px;
12     width: 100px
13 }

改進之後的效果:

註釋:點選時,控制高度&寬度變化

還有更加花裡胡哨一些的,可以讓動畫效果延遲(delay),效果見下圖: