【发布时间】:2015-10-23 18:44:43
【问题描述】:
当我将鼠标悬停在带有动画 box-shadow 的元素上时,我注意到我的页面出现了延迟。使用 Chrome 的 Devtools,当我将鼠标悬停在元素上时,我注意到整个页面正在重新绘制。重绘需要 40 多毫秒,或大约 3 帧。 transition 持续大约半秒,因此在半秒内有明显的延迟。
如何将重绘限制在有框阴影的区域?
这是一个演示:http://jsfiddle.net/8sa41xfL/
html,body{
height:100%;
}
#test{
background:red;
height:100px;
width:200px;
transition:box-shadow 0.5s;
}
#test:hover{
box-shadow:0 0 3px 3px rgba(0,0,0,0.3);
}
<div id=test></div>
transform:translateZ(0) 在我的页面上不起作用,但它在小提琴中起作用。除了transform:translateZ(0),还有其他解决方法吗?
【问题讨论】:
-
在 Iceweasel (Firefox) 中看不到重绘/滞后。
-
我在 JSFiddle 和 Chrome 上的内联 sn-p 中都看到了重绘,可能只是一个 Chrome 错误。
-
@BlagoEreš:是的(在 Chrome 上)。从 Chrome 开发工具中激活“显示绘制矩形”选项,然后查看每次都重新绘制的区域。您很可能会看到一个红色/绿色闪烁的矩形(取决于 Chrome 版本)。
-
它现在不会用 chrome 重新绘制整个页面,(版本 64)
标签: html css css-transitions google-chrome-devtools