В чем разница между оплавлением и перекраской?
Мне немного непонятна разница между reflow + repaint (если есть какая-то разница вообще)
похоже, что reflow может сдвигать положение различных элементов DOM, где repaint просто отображает новый объект. Например, оплавление будет происходить при удалении элемента и перекрашивание будет происходить при изменении его цвета.
Это правда?
4 ответа:
этот постинг, кажется, чтобы покрыть оплавления против перекрашивать проблемы с производительностью
Что касается определений, из этого поста:
A перекрашивать происходит при внесении изменений к элементам кожи, которая изменяется заметно, но не влияет на его макет.
примеры этого включают
outline
,visibility
,background
, илиcolor
. Согласно опере, перекраска-это дорого, потому что браузер должен проверьте видимость всех остальных узлы в дереве DOM.A reflow is еще более важно для производительности потому что это включает в себя изменения, которые влияет на компоновку части страница (или вся страница).
примеры, которые вызывают перепрошивки включают в себя: добавление или удаление содержимого, явное или неявное изменение
width
,height
,font-family
,font-size
и многое другое.узнайте, какие css-свойства эффект перекрасить и обзор на http://csstriggers.com
на мой взгляд, перекраска просто влияет на сам DOM, но reflow влияет на всю страницу.
перекраска происходит, когда некоторые изменения, которые только его стили кожи, такие как цвет и видимость.
оплавление происходит, когда страница DOM изменяет свой макет.
недавно я нашел сайт, который может искать, какой атрибут вызовет перекраску или переплавку. http://csstriggers.com/
вот еще один отличный пост: http://blog.letitialew.com/post/30425074101/repaints-and-reflows-manipulating-the-dom
перерисовка или перерисовка проходит через все элементы и определяет их видимость, цвет, контур и другие свойства визуального стиля, а затем обновляет соответствующие части экрана.
a reflow вычисляет макет страницы. Оплавление на элементе пересчитывает размеры и положение элемента, и он также запускает дальнейшие отражения на дочерних элементах, предках и элементах, которые появляются после него в DOM. Затем он вызывает окончательную перекраску. Оплавление очень дорого.
Он также введен, когда происходит оплавление и как минимизировать оплавление.
Reflow происходит, когда есть изменения в планировке дом. Оплавление очень дорого вычислительно, так как размеры и положения элементов страницы должны быть вычислены снова, тогда экран будет перекрасился.
пример чего-то, что вызовет оплавление
for (let i = 1; i <= 100; i++ { const newEle = document.createElement('p'); newEle.textContent = 'newly created paragraph element'; document.body.appendChild(newEle); }
приведенный выше код очень неэффективен, вызывая 100 процессов оплавления для каждого нового добавленного элемента абзаца.
вы можете смягчить это вычислительно стрессовый процесс с помощью
.createDocumentFragment()
const docFrag = document.createDocumentFragment(); for (let i = 1; i <= 100; i++ { const newEle = document.createElement('p'); newEle.textContent = 'newly created paragraph element'; docFrag.appendChild(newEle); } document.body.appendChild(docFrag);
приведенный выше код теперь будет использовать только процесс 1X reflow для создания 100 новых элементов абзаца.
перекрашивать это просто изменение пикселей на мониторе, в то время как все еще облагая налогом это меньшее из двух зол, так как оплавление включает в себя перекраску в своей процедуре.