Объединить / пакетировать несколько обновлений CSS в разных элементах DOM, чтобы уменьшить количество перерисовок / перерисовок? - PullRequest
2 голосов
/ 18 марта 2012

Фон:
У меня есть HTML-страница, которая использует холст WebGL для отображения некоторого 3D-контента.Наложены несколько <div>, которые размещаются встроенным CSS с position: absolute и соответствующими размерами для top и left.

Вопрос:
Когда я обновляю представлениев 3D-контенте (например, немного повернуть все), мне также нужно переместить все наложенные <div> так, чтобы они, казалось, остались в одном месте в трехмерном пространстве.
Как я могу обновить веб-страницу, чтобыпроизойдет только одна перекраска?

Когда я сначала перекрашиваю WebGL, а затем перебираю n <div>, я получаю n + 1 перекрашивание вРамка.Это не очень хорошо во время анимации, которая должна получить по крайней мере 30 кадров в секунду ...

Примечание:
Я также знаю другие вопросы, такие как:
Есть лиспособ применить несколько стилей CSS в пакете, чтобы избежать многократных перекомпоновок? - но это говорит о объединении нескольких параметров CSS в одном элементе (я использую это уже здесь, чтобы получить от 2 n +От 1 до n + 1 ...)
Несколько обновлений DOM за одну перерисовку / перекомпоновку? - но я не уверен, может ли это помочь здесь, как я полагаюУ меня также было бы n + 1 перерисовок ...

PS: jQuery разрешен, так как он уже используется в этом проекте.

1 Ответ

2 голосов
/ 05 апреля 2012

Если относительно друг друга положение ваших div'ов не меняется, вы можете сделать следующее:

  1. Создать одного родителя с абсолютной / относительной / фиксированной позицией
  2. Добавить все ваши div.к этому родителю и установите в CSS их положение (положение будет относительно родителя)
  3. Перемещение родительского div и изменение стиля для родительского div
...