top | item 41765214

(no title)

taraparo | 1 year ago

why is a manual property needed. why is the browser engine not able to figure out what is off-screen?

discuss

order

alenmilk|1 year ago

Because of inline css and different fonts on different os-es and generally no guarantees about render size. In short, you have no idea how big a block is without rendering it.

kevindamm|1 year ago

That would be a good point, as the C in CSS should stand for complicated, but this recommended setting is "auto" (changed from the default of "visible"). Setting it to auto turns on layout containment, style containment, and paint containment for the element. It allows the browser to skip rendering but still keep the elements available to, e.g. tab order. It's like a hybrid of visible and hidden.

https://www.w3.org/TR/css-contain-2/#content-visibility

I think the answer to the GP's question is that the browser does know how to compute this before starting the render pass, but the additions to the spec that allow for placing fences around the layout- and style-related containment was too new for all browsers yet, so the default is to assume all rendering is done, and the HTML/CSS author can opt in to turning this on (which in early days may have had the risk of bugs in implementation or inconsistencies across browsers).

edflsafoiewq|1 year ago

The design of CSS is such that pretty much any element in the document can affect any other element. Therefore determining what is off-screen generally requires processing the entire document.

The manual property changes the behavior of CSS so that elements in a subtree cannot affect elements outside the subtree, allowing the browser to quickly discard whole subtrees instead.