What is DOM reflow?

2019-01-04 08:35发布

I was reading about difference between two css properties display:none and visibility:hidden and encountered DOM reflow term.

The statement was

display: none causes DOM reflow where is visibility: hidden doesn't.

So my question is:

What is DOM reflow and how it works?

3条回答
等我变得足够好
2楼-- · 2019-01-04 09:08

It means, that if you will set dinamically display: none;, your browser will recalculate positions of DOM elements, if visisbility: hidden; - not. Think, it because visibility: hidden; does not change element sizes in dom.

查看更多
手持菜刀,她持情操
3楼-- · 2019-01-04 09:11

Reflow is the name of the web browser process for re-calculating the positions and geometries of elements in the document, for the purpose of re-rendering part or all of the document.

https://developers.google.com/speed/articles/reflow

display:none hide the div as if the div is not rendered whereas visibility:hidden only hides but the space is still occupied

查看更多
闹够了就滚
4楼-- · 2019-01-04 09:29

A reflow computes the layout of the page. A reflow on an element recomputes the dimensions and position of the element, and it also triggers further reflows on that element’s children, ancestors and elements that appear after it in the DOM. Then it calls a final repaint. Reflowing is very expensive, but unfortunately it can be triggered easily.

Reflow occurs when you:

  • insert, remove or update an element in the DOM
  • modify content on the page, e.g. the text in an input box
  • move a DOM element
  • animate a DOM element
  • take measurements of an element such as offsetHeight or getComputedStyle
  • change a CSS style
  • change the className of an element
  • add or remove a stylesheet
  • resize the window
  • scroll

For more information, please refer here: Repaints and Reflows: Manipulating the DOM responsibly

查看更多
登录 后发表回答