据MDN说:
如果未指定
from
/0%
或to
/100%
,则浏览器将使用所有属性的计算值启动或完成动画。
在下面的例子中,height
属性computed value是0px
:
div#parent {
width: 100px;
height: 100px;
outline: 1px solid teal;
}
div#child {
background: tan;
animation: lengthen 2s infinite;
}
@keyframes lengthen {
to {
height: 100px;
}
}
<div id="parent">
<div id="child"></div>
</div>
但浏览器使用height: auto;
,这是specified value元素,这就是动画不起作用的原因。
这里有类似的spec:
如果未指定
0%
或from
关键帧,则用户代理使用动画属性的计算值构造0%
关键帧。如果未指定100%
或to
关键帧,则用户代理使用动画属性的计算值构造100%
关键帧。
但是如果浏览器实际上添加了from {height: 0px;}
,这是计算值,那么动画将正常工作。在上述文档中使用指定值而不是计算值是否更准确?
MDN有权,因为height:auto的计算值是height:auto。 0px是使用的值。
据MDN再次说:
但是,对于某些属性(百分比相对于可能需要布局确定的内容,例如宽度,边距右,文本缩进和顶部),指定值百分比将变为百分比计算值。
MDN是正确的,高度is actually auto的初始值,浏览器显示的“计算”值是特殊关键字和初始值转换为的值。