W3C home > Mailing lists > Public > www-style@w3.org > September 2011

Re: [css-2010] spec for positioning text by its baseline

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Tue, 6 Sep 2011 08:41:37 -0700
Message-ID: <CAAWBYDDb9cW_yiKk9zRT2zWgq_24G9dO8OFuVhTrXerzxsbMnQ@mail.gmail.com>
To: Joshua Richardson <jric@yahoo.com>
Cc: "www-style@w3.org" <www-style@w3.org>
On Thu, Sep 1, 2011 at 10:17 AM, Joshua Richardson <jric@yahoo.com> wrote:
> Can that "something else" to which I can align my baseline be a fixed-position block?  In reading the flex-box draft, I couldn't see how it would be done.  The most relevant portion seems to be:
>
> "...all flexbox items on the line with ‘flex-align:baseline’ ... are aligned such that their baselines align, and the item with the largest distance between its baseline and its cross-start margin edge is placed flush against the cross-start edge of the line."
>
> The way I read that is that I can have my text aligned at the ^top^.  It's an improvement, but it still leaves the user-agent to figure out where the baseline will be.  If it can be done, would you mind showing how you would envision achieving the result from my previous example, using flex-box layout?  This is the html example, using an imaginary "baseline" attribute:
>
> <style type="text/css"> p {margin:0;padding:0} </style>
>
> <img src="myimg.jpg" position="absolute" top="100px" width="50px" height="75px"/>
> <div style="position:absolute;top:100px;left:55px;width:500px;height:75px">
> <p style="position:absolute;top:0px;">This caption is aligned with the top of the image!</p>
> <p style="position:absolute;bottom:0px;">The tail of my "g" is aligned with the bottom of the image!</p>
> <p style="position:absolute;baseline:0px;">The non-descending (majority) of the glyphs in the bottom line of this caption are sitting at the bottom of the image!</p>
> </div>

No, flexbox would allow you to align flexbox items at their baseline.
It wouldn't affect absolutely positioned elements at all.

Note, though, that the baseline of a block element is the baseline of
its first line, iirc.  You'd need an additional control to make it
instead report its last line as its baseline.

(Your example also doesn't quite work - the <img> isn't in the
wrapping <div>, so it doesn't contribute to the <div>'s own lines.
The 'baseline' <p> would just be aligning to the <div>'s phantom
linebox, since it doesn't contain any actual text.  You'd just need to
put the <img> into the <div>, and leave it as an ordinary inline
element.)

While I don't like the mechanics of the 'baseline' property ('top' and
'bottom' interact with 'height' when any of them are auto.  How do any
of those three interact with 'baseline'?), I think the idea of
aligning more things in the box is useful.  I'll keep this in mind as
we work on the Positioning spec.

~TJ
Received on Tuesday, 6 September 2011 15:42:25 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:44 GMT