У меня есть музыкальный проигрыватель с анимированной полосой, отображающей текущую позицию в песне. Он визуализируется с помощью requestAnimationFrame
и работает путем изменения стиля width
элемента div на X%, где X — это процент времени в текущей песне.
Я полагаю, что это вызывает огромную загрузку ЦП в Chrome из-за постоянной работы по перекомпоновке, выполняемой в каждом кадре. Какие другие варианты я могу использовать, чтобы устранить перекомпоновки и снизить нагрузку на ЦП?
Два других требования: эта веб-страница представляет собой веб-интерфейс над фоновым музыкальным сервером. Он не использует никаких мультимедийных элементов HTML5. Таким образом, страница может быть загружена, когда песня уже частично закончилась, поэтому позиция не всегда будет анимироваться между 0 и 100.
Приведенная ниже скрипка показывает примерно 30% загрузки процессора на моей машине, что кажется немного большим для анимации прямоугольника.
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 + '%';
- person Oriol   schedule 10.02.2016