- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Mon, 31 Aug 2009 11:45:28 -0400
- To: Bert Bos <bert@w3.org>
- CC: www-style@w3.org
Bert Bos wrote:
> In the above, "siblings" and "children" include both normal elements
> and :before/:after pseudo-elements.
Makes the [1] reference a little confusing, but other than that, looks good.
> We haven't defined yet what :before/:after on a replaced element means
> (according to the note in 12.1). Do we expect
>
> IMG:before {content: "Boo!"; display: block}
>
> to show a block element above the image?
You're right; this is currently undefined. We could define it both ways
here, or try to define the whole thing on boxes instead of elements, I
guess... The latter seems like it might be simpler in this case. :(
> In that case, rule c is correct
> as it is, because that block inhibits its parent from being run-in. If
> we expect ':before' to simply not apply to replaced elements, then rule
> c is correct as well.
Doesn't look like that to me. Consider the following HTML markup:
<object>
<div>Some fallback content</div>
</object>
Since this is all being defined on _elements_, not boxes, the <object>
in fact has a display:block child and so would inhibit its parent from
being run in per the existing rule c, even if the <object> is
display:inline. That seems wrong to me...
> The added condition is "inline or run-in" instead of just "inline"
Oh, good catch.
Though this brings up another issue. A "display:run-in" child should
inhibit run-in behavior in all cases (so should be added to part (a)
here). Indeed, either it doesn't run in (and then is a block and should
inhibit run-in behavior) or it does run in (and then is followed by a
block or list-item which would inhibit run-in behavior anyway).
> ---------------------------------------------------------------------------
> [Definition:] An element or pseudo-element C inhibits run-in behavior if
> one of the following is true. (Note that the definition is
> recursive.)
>
> a. C is not floating and not absolutely positioned[3] and the
> computed value of its 'display' is one of 'block', 'list-item'
> or 'table'.
>
> b. C has a computed value for 'display' of 'inline' or 'run-in' and
> it has one or more children that inhibit run-in behavior.
> (Where "children" includes both normal elements and :before/:after
> pseudo-elements.)
> ---------------------------------------------------------------------------
I like this, if we add 'run-in' to the list in part (a) and deal with
the replaced element issue....
-Boris
Received on Monday, 31 August 2009 15:46:14 UTC