Как можно атомарно выполнить несколько операция обновления DOM, чтобы промежуточные действия не отображались и не выводились на экране?
Например мы хотим удалить элемент со страницы и перемотать страницу. На некоторых устройствах не видно промежуточных результатов, а некоторых видно. Происходит перерисовка страницы, когда первая операция уже выполнена, а вторая еще нет.
Страница передвигается по оси X. В браузерах на ПК не видно, а вот на мобильных устройствах это заметно, на несколько мс видно (дергается или картинка мигает быстро)
Если вы делаете скроллинг через body.scrollTop/scrollLeft (или через jQuery или через плагины к jQuery), то картинка трясется и прыгает, если через Window.scrollTo() то все ок.
Скроллинга не происходит, происходит перемещение контейнера с помощью css translate3D. Дело в том, что при если первый елемент убрать из DOM то все смещается как раз на его высоты и использование таймаута тут ничего не даст, если мы вместе 2 операции без перерисовки не можем выполнить, то таймаут поставит второе действие в конец очереди, и оно выполнится 1+ как только основной поток javascript освободится. Про фрагмент очень похоже на правду. Мы клонируем весь контейнер в нем все меняем и заменяем измененный клон, на оригинальный узел DOM, но обработчики событий при этом отваливаются при этом отваливаются (либо я что-то неверно делаю)