【发布时间】:2016-08-27 11:32:09
【问题描述】:
我在div 上使用transform scaleY 动画,以廉价地为其hegiht 设置动画,但是当应用box-shadow 时效果不佳。
div {
width: 300px;
height: 100px;
transform: scaleY(1);
transition: all 2000ms;
transform-origin: 0 0;
background-color: yellow;
box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14),
0 1px 10px 0 rgba(0, 0, 0, 0.12),
0 2px 4px -1px rgba(0, 0, 0, 0.4);
}
div:hover {
transform: scaleY(5);
}
<div></div>
你可以看到 box-shadow 也被缩放了。不仅如此,它捕捉在动画的结尾,看起来很丑。
关于如何在不缩放阴影的同时保持这个快速的 60fps transform 动画的任何建议?
对高度进行动画处理可以获得所需的效果,但在移动设备上会滞后很多。
已经尝试过
将阴影应用于div::after 伪元素并转换div 不起作用,因为阴影也会被缩放。
【问题讨论】:
-
您最终的代码是否会在
div中包含一些也需要缩放的内容?还是你只想改变div的高度? -
假设我们不关心这里的内容会发生什么。
-
我忽略了你写的动画
height不是一个选项。至此,我认为现在还没有真正解决您的问题的方法。缩放阴影是恕我直言,因为scaleY会缩放属于对象及其内容的所有内容。而且你在动画结束时看到的效果看起来像是渲染引擎的一个错误。 -
谢谢你,我在上次编辑中使
height参数更清晰。 -
我想到的唯一可以尝试的解决方法是使用边框图像而不是框阴影并为高度设置动画。但不知道性能会不会更好。
标签: css performance transform css-animations box-shadow