【发布时间】:2016-05-20 07:01:56
【问题描述】:
我有一个带有动画条的音乐播放器,它显示歌曲中的当前位置。它使用requestAnimationFrame 渲染,并将div 的width 样式更改为X%,其中X 是当前歌曲播放时间的百分比。
我相信这会在 Chrome 中导致大量 CPU 使用,因为每帧都会进行持续的回流工作。我可以使用哪些其他选项来消除回流和减少 CPU?
另外两个要求:此网页是后端音乐服务器上的 Web UI。它没有使用任何 HTML5 媒体元素。因此,页面可能会在歌曲部分结束时加载,因此位置不会始终在 0 到 100 之间进行动画处理。
下面的小提琴在我的机器上显示大约 30% 的 CPU,这对于动画矩形来说似乎有点高。
var pos = 0;
var s = document.getElementById('i');
f = function() {
window.requestAnimationFrame(f);
pos += .03;
s.style.width = pos + '%';
}
f();
#i {
background-color: red;
position: absolute;
}
<div id="i">
</div>
【问题讨论】:
-
为什么是
setAttribute?只需使用s.style.width = pos + '%'; -
@Oriol 改为那个;没有任何帮助
-
@RayonDabre 因为我不知道其他方式。
标签: javascript css reflow