前端課程——過渡

過渡

什麼是過渡

此屬性同樣存在瀏覽器兼容問題:

/* WebKit引擎的瀏覽器(Chrome、Safari、Opera) */  -webkit-transition : <single-transition>;  /* Gecko引擎的瀏覽器(Firefox) */  -moz-transition : <single-transition>;  /* Trident引擎的瀏覽器(IE 10+) */  -ms-transition : <single-transition>;  /* Presto引擎的瀏覽器(Opera) */  -o-transition : <single-transition>;

過渡子屬性

  • ltransition-property 屬性:用於定義過渡效果中的樣式屬性名稱。
  • ltransition-duration 屬性:用於定義過渡效果執行動畫的時長。
  • ltransition-timing-function 屬性:用於定義過渡效果計算的函數。
    • ease:默認值,元素樣式從初始狀態過渡到終止狀態時速度由快到慢。
    • linear:元素樣式從初始狀態過渡到終止狀態時速度是勻速。
    • ease-in:元素樣式從初始狀態過渡到終止狀態時速度由慢到快。
    • ease-out:元素樣式從初始狀態過渡到終止狀態時速度由快到慢。
    • ease-in-out:元素樣式從初始狀態過渡到終止狀態時,先加速再減速。
    • step:將整個過渡過程劃分成相同大小的間隔,每個間隔是相等的。
  • ltransition-delay 屬性:用於定義過渡效果開始的延遲時間。

觸發過渡的方式

成功設置過渡的條件

  1. 具有一個CSS屬性在過渡效果中的開始樣式和最終樣式
  2. 通過transition-property指定過渡效果要執行的樣式屬性名稱
  3. 通過transition-duration 設置過渡效果執行的時長
  4. 偽類觸發過渡
    • 使用子屬性 各屬性之間(多個屬性時)用逗號分隔例如transition-property: background-color,width; 每個屬性與時間一一對應,如果指定的時長的個數小於屬性的個數,則時長列表會被重複,以與屬性的個數匹配;如果指定的時長的個數大於屬性的個數,則時長列表會被裁減。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box{ width: 200px; height: 200px; border: 1px solid gray; /* 設置執行過渡效果開始的樣式 */ background-color: lightcoral; /* 用來執行過渡效果的樣式屬性 */ transition-property: background-color,width; /* */ transition-duration: 1s,2s; } /* 觸發過渡效果的方式 */ .box:hover{ /* 設置執行過度效果最終的樣式 */ background-color: lightyellow; width: 300px; } </style> </head> <body> <div class="box"></div> </body> </html>
    • 使用合屬性 用逗號分隔每個過渡。例如transition: width 2s linear,height 2s linear;表示2秒勻速過渡. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box{ width: 200px; height: 200px; background: lightcoral; transition: width 2s,height 2s; } .box:hover{ width: 400px; height: 400px; } </style> </head> <body> <div class="box"></div> </body> </html>
  5. JavaScript觸發過渡 推薦使用css

檢測過渡是否完成

須使用JavaScript使用.

  <!DOCTYPE html>  <html lang="en">    <head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>transitionEnd事件</title>    <style>      .box {        width: 200px;        height: 200px;        border: 1px solid gray;        background: lightcoral;        transition-property: background;        transition-duration: 2s;      }        .box:hover {        background: lightyellow;      }    </style>  </head>    <body>    <div id="box" class="box"></div>    <script>      var box = document.getElementById('box');      box.addEventListener('transitionend', function () {        console.log('這個過渡執行完畢了......')      })    </script>  </body>    </html>