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?