transition
transition
CSS 属性是 简写属性,用于 transition-property
、transition-duration
、transition-timing-function
、transition-delay
和 transition-behavior
。
试一试
组成属性
语法
css
/* Apply to 1 property */
/* property name | duration */
transition: margin-right 4s;
/* property name | duration | delay */
transition: margin-right 4s 1s;
/* property name | duration | easing function */
transition: margin-right 4s ease-in-out;
/* property name | duration | easing function | delay */
transition: margin-right 4s ease-in-out 1s;
/* property name | duration | behavior */
transition: display 4s allow-discrete;
/* Apply to 2 properties */
transition:
margin-right 4s,
color 1s;
/* Apply to all changed properties */
transition: all 0.5s ease-out allow-discrete;
transition: 200ms linear 50ms;
/* Global values */
transition: inherit;
transition: initial;
transition: revert;
transition: revert-layer;
transition: unset;
transition
属性值指定为以下之一
- 特殊值
none
,它指定此元素上不会发生任何过渡。这是默认值。 - 一个或多个单属性过渡,用逗号分隔。
每个单属性过渡描述应用于单个属性或所有属性的过渡。它包括
- 零个或一个值,表示应用过渡的属性或属性。这可以设置为
- 表示单个属性的
<custom-ident>
。 - 特殊值
all
,它指定过渡将应用于元素状态更改时发生更改的所有属性。 - 无值,在这种情况下,将推断值为
all
,并且指定的过渡仍将应用于所有更改的属性。
- 表示单个属性的
- 零个或一个
<easing-function>
值,表示要使用的缓动函数 - 零个、一个或两个
<time>
值。可以解析为时间的第一值分配给transition-duration
,可以解析为时间的第二值分配给transition-delay
。 - 零个或一个值,声明是否为动画行为为 离散 的属性启动过渡。如果存在,该值是关键字
allow-discrete
或关键字normal
。
如果您将 all
指定为一个单属性过渡的过渡属性,但随后使用 <custom-ident>
值指定后续的单属性过渡,则这些后续过渡将覆盖第一个过渡。例如
css
transition:
all 200ms,
opacity 400ms;
在这种情况下,元素状态更改时发生更改的所有属性都将以 200ms 的持续时间过渡,除了 opacity
,它将花费 400ms 进行过渡。
请参阅 属性值列表长度不同的处理方式。简而言之,超出实际正在动画处理的属性数量的额外过渡描述将被忽略。
正式定义
初始值 | 作为简写属性的每个属性
|
---|---|
应用于 | 所有元素、::before 和 ::after 伪元素 |
继承 | 否 |
计算值 | 作为简写属性的每个属性 |
动画类型 | 不可动画化 |
正式语法
transition =
<single-transition>#
<single-transition> =
[ none | <single-transition-property> ] ||
<time> ||
<easing-function> ||
<time>
<single-transition-property> =
all |
<custom-ident>
<easing-function> =
linear |
<linear-easing-function> |
<cubic-bezier-easing-function> |
<step-easing-function>
<linear-easing-function> =
linear( <linear-stop-list> )
<cubic-bezier-easing-function> =
ease |
ease-in |
ease-out |
ease-in-out |
cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )
<step-easing-function> =
step-start |
step-end |
steps( <integer> , <step-position>? )
<linear-stop-list> =
[ <linear-stop> ]#
<step-position> =
jump-start |
jump-end |
jump-none |
jump-both |
start |
end
<linear-stop> =
<number> &&
<linear-stop-length>?
<linear-stop-length> =
<percentage>{1,2}
示例
基本示例
在此示例中,当用户将鼠标悬停在元素上时,在 background-color
过渡发生之前会有半秒(500ms
)的延迟。
HTML
html
<a class="target">Hover over me</a>
CSS
我们包含两个 <time>
值。在 transition
简写中,第一个 <time>
值是 transition-duration
。第二个时间值是 transition-delay
。如果省略,两者都默认为 0s
。
css
.target {
font-size: 2rem;
background-color: palegoldenrod;
transition: background-color 2s 500ms;
}
.target:hover {
background-color: darkorange;
}
规范
规范 |
---|
CSS 过渡 # transition-shorthand-property |
浏览器兼容性
BCD 表格仅在浏览器中加载