- From: Anton Prowse <prowse@moonhenge.net>
- Date: Mon, 14 Feb 2011 20:44:22 +0100
- To: "www-style@w3.org" <www-style@w3.org>
- CC: fantasai <fantasai.lists@inkedblade.net>, Bert Bos <bert@w3.org>
On 11/02/2011 02:20, fantasai wrote: > There were too many mismatches in the edits for Issue 60 for me to put > them all in > the issues list, so I am sending a separate email. > > I would like Anton and Sylvain to review these mismatches and evaluate > which changes > are editorially equivalent or superior, and which are real problems. The bulk of these mismatches stem from Bert's desire to view the list of painting layers as forming the components of the "current" stacking context which itself forms part of an assumed, referenced, but undefined "tree of stacking contexts". This is editorial equivalent to the old approach in which the list of painting layers formed the components of the (unstated) closest ancestor stacking context, without implicit reference to a tree of stacking contexts. (Sylvain's and my proposed wording is faithful to the old approach.) Note that such a tree does exist, if one believes that a box tree exists. However, I prefer the old approach if the tree is to go unstated. Moreover, the new approach gives rise to dodgy wording (see Mismatch E, below) which needs fixing IMO. However, the choice of approach is a purely editorial decision; both are technically valid. > === Mismatch A === > > The proposal specified: > | 2. the stacking contexts of descendants with negative stack levels (most > | negative first). > The current spec reads: > % 2. the child stacking contexts with negative stack levels (most negative > % first). > > The change is from > stacking contexts of descendants > to > child stacking contexts > > I am unsure whether this is a problem. > > The same change is present in mismatches C and D. Here, "child" is used with respect to the tree of stacking contexts. In some ways it's less sloppy than the proposed/old wording ("descendants", when what was really meant was "dependants" as defined in [1]; my proposal to fix that was rejected). However, given that the tree goes unstated, I think that the new wording is still not crystal clear. > === Mismatch B === > > The proposal specified: > | 4. non-positioned floats. > The current spec reads: > % 4. the floating descendants. > > This is most definitely an error. As Anton points out, it's a regression of > Issue 60a. > http://lists.w3.org/Archives/Public/www-style/2010Jul/0077.html > http://wiki.csswg.org/spec/css2.1#issue-60a > > This error is also present in Mismatch E. Agreed. > === Mismatch C === > > The proposal specified: > | 6. positioned descendants and stacking contexts with stack level '0'. > The current spec reads: > % 6. the child stacking contexts with stack level 0, and the positioned > % descendants with 'z-index: auto'. > > This change exhibits change A. As above. > It also replaces > with stack level 0 > with > with 'z-index: auto' > in the case of positioned descendants This is a purely editorial decision. However, I prefer our proposed wording (assuming the addition of the word "child" in line with the new approach). The raw 'z-index' property translates to the friendly "stack level" concept, and I see no need to re-introduce z-index into the list of painting layers, when the stack level concept can be used instead. There is value is separating the model from the delivery mechanism. Note that descendants (actually, dependants) with stack level 0 are precisely the stacking contexts with stack level 0 and the positioned descendants (dependants), and so the proposed sentence was correct and more concise. > === Mismatch D === > > The proposal specified: > | 7. the stacking contexts of descendants with positive stack > | levels (least positive first). > The current spec reads: > % 7. the child stacking contexts with positive stack levels (least > % positive first). > > This is an instance of change A. As above. > === Mismatch E === > > The proposal specified: > | The contents of positioned elements with 'z-index: auto', > | non-positioned floats, inline blocks and inline tables are > | stacked as if they generated new stacking contexts, except that > | any positioned elements and any elements that actually create > | new stacking contexts take part in the parent stacking context. > The current spec reads: > % Positioned elements with 'z-index: auto' (in layer 6), > % floats (layer 4), inline blocks (layer 5), and inline tables > % (layer 5), are painted as if those elements generated new > % stacking contexts, except that their positioned descendants > % and any child stacking contexts take part in the current > % stacking context. > > This mismatch exhibits several changes: > > 1. The change from > non-positioned floats > to > floats (layer 4) > is error B. > > This is definitely wrong. Agreed. > 2. The verb has been changed from > stacked > to > painted > > I am unsure whether this is a problem. This reflects the difference between the two different approaches. Our proposed wording is identical to the old spec as concerns this issue, and what it is saying is: The contents of <some types of element> are stacked [composited] as if they [the <some types of element>] generated new stacking contexts, except <conditions>. Bert's new wording says: <some types of element> are painted [their painting layers (ie contents) are composited] as if those elements generated new stacking contexts, except <conditions> The new wording is clearer IMO, since "they" was ambiguous in the old wording. (My original proposal to clarify that word was rejected.) > 3. The last phrase > parent stacking context > has been changed to > current stacking context See above; in the old approach, "parent" stacking context really meant closest ancestor stacking context and the elements being discussed in this paragraph were not being viewed as belonging to a "current" stacking context; rather, the viewpoint was external to the tree. In the new approach, we're assuming that the action is taking place inside the "current" stacking context. Hence the new wording makes sense in the context of the new approach. However, the new wording of the paragraph lacks a certain clarity to that effect. > 4. The subject of the sentence is changed from > The contents of positioned elements > to > Positioned elements > > I'm unsure whether this is a problem or not. Not that the subject in the > proposal does not include the backgrounds of the element in question, > whereas the current phrasing does. See my response to point 2. Backgrounds were in fact taken account of in the old wording, but the sentence was not very clear. > (I have to say, the removal of this sentence from the original spec: > # They are then painted atomically in the inline stacking level. > makes this paragraph very, very confusing. Would have preferred a > correction.) But that sentence is no longer accurate under either our proposal or Bert's new wording, since the paragraph is no longer concerned with just inline-level items (non-positioned inline blocks and non-positioned inline tables) but rather all items which form "pseudo–stacking contexts" including non-positioned floats and positioned elements with 'z-index: auto'. Instead, I think the confusion with the new paragraph lies in its use of the phrase "child stacking contexts": 5. The last clause contains a change from any elements that actually create new stacking contexts to any child stacking contexts "child stacking contexts" is very misleading here; it's talking about closest descendant stacking contexts of <some types of element> but of course the <some types of element> don't actually form stacking contexts; they form pseudo–stacking contexts (which is of course the whole point of the paragraph). Hence these latter elements don't form part of the stacking context tree, and hence it's pretty much incorrect to talk about their "child" stacking contexts. Indeed, what the paragraph is trying to say is that these supposed "child" stacking contexts are children of the current stacking context [in the stacking context tree], and do not belong to the intervening "pseudo–stacking contexts". In other words, the paragraph is implicitly trying to reinforce the idea that "pseudo–stacking contexts" do not feature in the stacking context tree. I strongly feel that if Bert's approach is to be used then the stacking context tree needs to be made explicit, and that the misleading paragraph needs to be clarified. The latter might be achieved as follows: | <ins>Within each stacking context, </ins>positioned elements with | 'z-index: auto' (in layer 6), floats (layer 4), inline blocks | (layer 5), and inline tables (layer 5), are painted as if those | elements <ins>themselves</ins> generated new stacking contexts, | except that their positioned descendants and any <ins>would- | be</ins> child stacking contexts take part in the current stacking | context. If those changes were to be made, I think I would prefer Bert's approach. Either way, there's still some editorial work needed here. [1] http://dev.moonhenge.net/css21/spec/z-index/#descendant Cheers, Anton Prowse http://dev.moonhenge.net
Received on Monday, 14 February 2011 19:45:00 UTC