Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Атомарное обновление стилей и DOM (https://javascript.ru/forum/events/39721-atomarnoe-obnovlenie-stilejj-i-dom.html)

alexpts 09.07.2013 14:16

Атомарное обновление стилей и DOM
 
Делаю карусель. На одном из этапов требуется выполнить 2 действия без промежуточной перерисовки страницы.
Переместить первый элемент карусели в конец и сдвинуть всю карусель вбок на ширину первого элемента.

В данный момент на ПК все хорошо, а вот в мобильных браузерах видно на несколько мс промежуточный этап.

Как можно атомарно выполнить несколько операция или на время отключить принудительно перерисовку страницы, а по факту выполнения включить?

dmitriymar 09.07.2013 15:39

не заставлять браузер прерисовывать вызывая offset и прочие вещи заставляющие браузер перерисовываться .

cyber 09.07.2013 15:39

alexpts, карусель перемещается с анимацией?
Цитата:

Сообщение от alexpts
на время отключить принудительно перерисовку страницы, а по факту выполнения включить

если не ошибаюсь, то не как.

dmitriymar 09.07.2013 15:45

Цитата:

Сообщение от cyber
если не ошибаюсь, то не как.

именно всё так и работает -сначала закончил работу скрипт потом перерисовка -если принудительно не заставлять браузер перересовываться, методами скрипта запускающими её, разрывом потока выполнения скрипта таймерами

alexpts 09.07.2013 21:06

Обе операции идут в одной функции и не разрываются таймером (поток выполнения не прерывается). Но ощущение, что на мобильном браузере перерисовка происходит. На ПК все хорошо.

Выглядит логично особенно при выполнении "долгих" скриптов, которые блокируют GUI браузера и при очень долгом выполнении вызывают предупреждение браузера о длительности выполнения скрипта.

Как замерить перерисовку для мобильного устройства можно не подскажите? Andriod/iphone родной браузер.

cyber 10.07.2013 00:03

демку момжно?

alexpts 10.07.2013 16:03

Подготовлю пример и выложу ссылку на http://jsfiddle.net


Часовой пояс GMT +3, время: 23:28.