transition-duration

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 2015 年 9 月以來,該特性已在各大瀏覽器中可用。

transition-duration CSS 屬性設定過渡動畫完成所需的時間長度。預設情況下,該值為 0s,這意味著不會發生動畫。

試一試

transition-duration: 500ms;
transition-property: margin-right;
transition-duration: 2s;
transition-property: background-color;
transition-duration: 2s;
transition-property: margin-right, color;
transition-duration: 3s, 1s;
transition-property: margin-right, color;
<section id="default-example">
  <div id="example-element">Hover to see<br />the transition.</div>
</section>
#example-element {
  background-color: #e4f0f5;
  color: black;
  padding: 1rem;
  border-radius: 0.5rem;
  font: 1em monospace;
  width: 100%;
  transition: margin-right 2s;
}

#default-example:hover > #example-element {
  background-color: #990099;
  color: white;
  margin-right: 40%;
}

您可以指定多個持續時間;每個持續時間將應用於 transition-property 屬性指定為主要列表的相應屬性。如果指定持續時間的數量少於主要列表中的數量,則使用者代理會重複持續時間列表。如果指定持續時間的數量多於主要列表中的數量,則列表將截斷為右側大小。在這兩種情況下,CSS 宣告都保持有效。

語法

css
/* <time> values */
transition-duration: 6s;
transition-duration: 120ms;
transition-duration: 1s, 15s;
transition-duration: 10s, 30s, 230ms;

/* Global values */
transition-duration: inherit;
transition-duration: initial;
transition-duration: revert;
transition-duration: revert-layer;
transition-duration: unset;

<time>

這是一個 <time>,表示屬性從舊值過渡到新值所需的時間。時間為 0s 表示不會發生過渡,也就是說兩種狀態之間的切換將是瞬時的。時間的負值會使宣告無效。

正式定義

初始值0s
應用於所有元素,::before::after 偽元素
繼承性
計算值同指定值
動畫型別不可動畫化

正式語法

transition-duration = 
<time [0s,∞]>#
此語法反映了根據 CSS 過渡的最新標準。並非所有瀏覽器都可能實現了所有部分。有關支援資訊,請參閱瀏覽器相容性

示例

顯示不同持續時間的示例

HTML

html
<div class="box duration-1">0.5 seconds</div>

<div class="box duration-2">2 seconds</div>

<div class="box duration-3">4 seconds</div>

<button id="change">Change</button>

CSS

css
.box {
  margin: 20px;
  padding: 10px;
  display: inline-block;
  width: 100px;
  height: 100px;
  background-color: red;
  font-size: 18px;
  transition-property: background-color, font-size, transform, color;
  transition-timing-function: ease-in-out;
}

.transformed-state {
  transform: rotate(270deg);
  background-color: blue;
  color: yellow;
  font-size: 12px;
  transition-property: background-color, font-size, transform, color;
  transition-timing-function: ease-in-out;
}

.duration-1 {
  transition-duration: 0.5s;
}

.duration-2 {
  transition-duration: 2s;
}

.duration-3 {
  transition-duration: 4s;
}

JavaScript

js
function change() {
  const elements = document.querySelectorAll("div.box");
  for (const element of elements) {
    element.classList.toggle("transformed-state");
  }
}

const changeButton = document.querySelector("#change");
changeButton.addEventListener("click", change);

結果

規範

規範
CSS 過渡
# transition-duration-property

瀏覽器相容性

另見