Re: [css-overflow] interaction between "overflow-x" and "overflow-y", when one of them is "clip"

> On 06 Jul 2015, at 18:08, Daniel Holbert <dholbert@mozilla.com> wrote:
> 
> On 07/03/2015 02:14 PM, Florian Rivoal wrote:
>>> On 03 Jul 2015, at 20:45, Daniel Holbert <dholbert@mozilla.com> wrote:
>>> So you're proposing that "contain:paint", on its own, would just end up
>>> producing "overflow:auto"?
> [...]
>>> I don't think that matches the intent of "contain:paint"... the point is
>>> to "contain painting", i.e. to clip.
>> 
>> From the definition of contain:paint:
>> 
>> "This ensures that the descendants of the containing element don’t display outside its bounds"
>> 
>> I'm still ensuring that. 
> 
> But the whole point of the "contain" property is to enable
> optimizations.  And the spec's two suggested optimizations don't make
> any sense with this suggested "overflow:auto" change.  Particularly the
> second one.
> 
> The first suggested optimization: "If the containing element is
> off-screen or obscured, the UA can directly skip trying to paint". In
> this scenario (which I think is a large use-case for contain:paint),
> your concerns about authors not having considered font-size differences
> etc. are not really worrisome, because the content isn't visible anyway.

I see this the other way around. This first optimization works just fine with my suggested change. If the element is offscreen, paint containment will work just as well with overflow:auto as with overflow:clip. You can skip the whole thing and you're good. If you're on screen, then this optimization does not apply either way, and overflow:auto avoids content getting lost.

> The second suggested optimization: "the UA can reserve 'canvas' space
> for the element exactly the element’s size."  This optimization can't
> actually be performed, if scrolling is possible.  (If scrolling is
> possible, browsers may need to overpaint to be able to respond quickly
> to scrolling, so they'll need to reserve a larger 'canvas'.)

This optimization does indeed need both contain:paint and overflow:clip.
If this were the only effect of contain:paint, I'd be fine with it, because doing this would explicitly be the goal of this property. But since containt:paint has other useful and observable effects, I think there is a fair chance that this one might happen accidentally, on element that weren't meant to overflow, because the author environment and the user environment differ, and then we get unintended content loss.

 - Florian

Received on Tuesday, 7 July 2015 21:12:10 UTC