- From: Simon Fraser <smfr@me.com>
- Date: Sun, 16 Aug 2015 14:08:42 -0700
- To: "L. David Baron" <dbaron@dbaron.org>
- Cc: "www-style@w3.org list" <www-style@w3.org>
> On Aug 16, 2015, at 1:20 pm, L. David Baron <dbaron@dbaron.org> wrote:
>
> On Sunday 2015-08-16 12:22 -0700, Simon Fraser wrote:
>>> On Aug 16, 2015, at 12:17 pm, Simon Fraser <smfr@me.com> wrote:
>>>
>>> Consider:
>>>
>>> <span style=“will-change: transform;”>...<span>
>>>
>>> The span, as a non-atomic inline, does not support the transform property. Should will-change trigger stacking context in this example?
>>
>> A more compelling testcase is:
>>
>> <div style=“will-change: z-index;"></div>
>>
>> z-index only applies to positioned elements so does “will-change:z-index” alone create stacking context? If no, does this:
>>
>> <div style=“will-change: position, z-index;"></div>?
>
> Without having an opinion on whether it *should*, I'll comment that
> Gecko currently causes the stacking context behavior when
> will-change has any properties in a list of properties that can
> cause stacking contexts, without considering whether they currently
> apply. (Our current list is clip-path, filter, isolation, mask,
> mix-blend-mode, perspective, position, transform, transform-style,
> and z-index; in the code this is the bit
> CSS_PROPERTY_CREATES_STACKING_CONTEXT.)
Comparing with WebKit’s list, I think you’re missing opacity.
During testing, I also noticed that Firefox treats “will-change: will-change;” as valid, which the spec says it should not.
As to the original question, I would like to prevent:
* { will-change: transform; }
from making all inlines be stacking contexts (which causes WebKit to
allocate additional data structures). So I would prefer we spec it such that
will-change creates stacking context only if the specified properties actually
apply to the element.
However, that raises the point that you could say
* { will-change: display, transform; }
and then transform may have an effect at some point later when display:block is applied,
which is then essentially the same as the position/z-index example.
Simon
Received on Sunday, 16 August 2015 21:09:13 UTC