【发布时间】:2019-06-03 06:09:00
【问题描述】:
我为具有以下样式的 div 创建了一个合成层:
div {
position: absolute;
height: 50px;
width: 50px;
background: #900;
top: 100px;
left: 200px;
will-change: transform;
transform: translateZ(0);
}
然后我使用 Web Animation API 对其应用动画:
document.getElementById("box").animate(
[
{ transform: 'rotate(0) translate3D(-50%, -50%, 0)' },
{ transform: 'rotate(360deg) translate3D(-50%, -50%, 0)' }
], {
duration: 500,
iterations: Infinity
}
);
据我了解,此动画现在由 GPU 处理,并且该层独立于其他层,因此 GPU 可以单独对其进行操作,而不必担心计算页面其他部分的几何形状。
我不明白的是,如果我调用一个 CPU 密集型函数,该动画将在函数运行时完全停止,并在函数退出时再次启动:
function mySlowFunction(baseNumber) {
console.time('mySlowFunction');
var result = 0;
for (var i = Math.pow(baseNumber, 10); i >= 0; i--) {
result += Math.atan(i) * Math.tan(i);
};
console.timeEnd('mySlowFunction');
return result;
}
setTimeout(() => mySlowFunction(5), 3000);
有什么办法可以防止这种情况发生吗?
【问题讨论】:
标签: javascript css css-animations