Re: [css2.1] Issue 199 proposal

On Tue, Sep 14, 2010 at 1:46 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:
> On Tue, Sep 7, 2010 at 5:06 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:
>> This email is meant to address issue 199 on CSS2.1, which I
>> volunteered to propose text for.
>> http://wiki.csswg.org/spec/css2.1#issue-199
>
>
> Urgh, I meant to do this last week.  New proposal, based on discussion
> in the telcon:
>
> | Line boxes that contain no text, no preserved white space, no
> | inline elements with non-zero margins, padding, or borders, and
> | no other in-flow content (such as images, inline blocks or
> | inline tables), and do not end with a line feed must be treated
> | as zero-height line boxes for the purpose of positioning the
> | elements inside of them, and must be treated as not existing
> | for any other purpose.
>
> Change from current spec is just the last bit.  The current spec says
> to always treat such lineboxes as zero-height; my edit narrows it to
> only treat them as such for positioning, and for all other purposes to
> just pretend they don't exist.
>
> Now, I'm not sure this actually resolves the issues.  Given Boris's
> testcase, slightly altered:
>
> <div style="display:table">
>  <div style="display:table-row">
>    <div style="display:table-cell;background:red">
>      <div style="width:150px;height:150px;background:blue">
>        <span style="position:absolute;"></span>
>      </div>
>    </div>
>    <div style="display:table-cell;background:green">a<br/>b</div>
>  </div>
> </div>
>
> ...what does it actually mean to say that the linebox exists for the
> purpose of positioning the span?  I can't really figure it out.
>
> Perhaps a proper edit would be to say that such elements are
> positioned in the top start corner of the parent, and the lineboxes
> just don't exist?
>
> Am I right in thinking that these lineboxes can only be created as the
> sole linebox of an element?  It seems that if there's another linebox
> with actual content in it, then the type of contents that would appear
> in this "phantom linebox" would instead just be collapsed together at
> the end of the real linebox, right?

Assuming that I was correct in my assumption immediately above, then I
propose the following edit instead:

| If an element contains no text, no preserved white space, no
| inline elements with non-zero margins, padding, or borders, and
| no other in-flow content (such as images, inline block, or
| inline tables), then no line boxes are generated inside the
| element.  Any child elements that rely on the element for
| positioning are treated as being in the "before start" corner
| of the element.


~TJ

Received on Wednesday, 20 October 2010 16:26:49 UTC