Why does a browser repaint require re-checking the visibility of all DOM nodes?

Viewed 9

Recently I read this description of the browser repaint process:

A repaint occurs when changes are made to elements that affect visibility but not the layout. For example, opacity, background-color, visibility, and outline. Repaints are expensive because the browser must check the visibility of all other nodes in the DOM — one or more may have become visible beneath the changed element.

I was a little surprised by the last sentence. Why must a (Webkit-based) browser re-check the visibility of all nodes in the render tree for any and every repaint? Even of an item in its own render layer?

0 Answers
Related