根据MDN:
如果
from
/0%
或to
/100%
未指定,浏览器将使用所有属性的计算值开始或结束动画。
在以下示例中,height
属性计算值为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;
,这是元素指定的值,这就是动画不起作用的原因。
这是规范上的类似内容:
如果未指定关键帧
0%
或from
关键帧,则用户代理0%
使用正在动画的属性的计算值构造关键帧。如果未指定关键帧100%
或to
关键帧,则用户代理100%
使用正在动画的属性的计算值构造关键帧。
但是如果浏览器实际添加from {height: 0px;}
了计算值,那么动画就会正常工作。在上述文档中使用指定值而不是计算值不是更准确吗?