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

浏览器兼容性

另见