- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Fri, 29 Apr 2011 12:55:21 -0700
- To: Andrew Fedoniouk <news@terrainformatica.com>
- Cc: Alex Mogilevsky <alexmog@microsoft.com>, Brad Kemper <brad.kemper@gmail.com>, www-style list <www-style@w3.org>
On Fri, Apr 29, 2011 at 9:33 AM, Andrew Fedoniouk <andrew.fedoniouk@live.com> wrote: >> From: Tab Atkins Jr. Sent: Thursday, April 28, 2011 11:04 PM To: Andrew >> Fedoniouk Cc: Alex Mogilevsky ; Brad Kemper ; www-style list Subject: Re: >> box-align >> On Thu, Apr 28, 2011 at 9:35 PM, Andrew Fedoniouk >> <andrew.fedoniouk@live.com> wrote: >>> >>> "if it's current definition were not so complicated already" >>> >>> and what exactly is so complex there? >>> >>> "If there is a new kind of alignment, it should be a new property." >>> >>> Umm... Alignment is alignment. I am not sure I understand you here... >> >> 'vertical-align' is not usable for block-level alignment. It already >> has a well-defined meaning - it aligns inline-level elements within >> the linebox. >> >> Aligning block-level children of an element is something quite >> different, and thus should be a separate property. >> > > It would be a true statement if not vertical-align in table-cell elements > where it defines exactly > what you are going to use for the box-align. > Conceptually table-cells replaced in table-row are > very close to what is expected from flow:horizontal > and vertical alignment there. The re-use of 'vertical-align' to do content alignment in table cells was inarguably a mistake. >>> Are you saying that you expect to see something like: >>> >>> inline-box { >>> vertical-align: baseline; >>> box-align:top right; >>> } >>> >>> ? What would be the final alignment then? >> >> Yes, those two work together just fine. The element in question is >> baseline-aligned within its linebox, and then its children are aligned >> to the top and right of it. > > But what will be the baseline of such setup? > > Consider this markup: > > <p>Sample <inline-box> > <div>1</div> <div font-size:200%>2</div> > </inline-box> text</p> > > What will be computed first: > a) vertical alignment inside inline-box (and so inner boxes '1' and '2' > will not have common baseline) and then an attempt to align these jagged > baseline inside line box, or > b) vertical alignment inside line box using > some yet unknown baseline and then alignment inside the inline-box. Where > will be the baseline after that? > In short I would like to see visualization of "those two work together just > fine" using the markup > above. This is fairly simple. The inline-layout model asks the inline-block for its baseline. The baseline of an inline-block is defined as the baseline of its last in-flow linebox. So then you need to lay out the inline-block. Do so, respecting the alignment, and return the position of the last linebox. Then, align the inline-block within its line accordingly. This is precisely the same as what you would do *without* 'box-align'. The 'box-align' property doesn't add any complexity whatsoever to the overall process - it's just one more step in laying out the inline-block before you can return the baseline. > From implementation standpoint the only reasonable interpretation of > 'vertical-align' is that it defines inner-alignment inside flex block (as in > table-cell). No, the reasonable interpretation of 'vertical-align' is that it doesn't apply to flexbox items, as they're not in a linebox, just like how it doesn't apply to display:block elements. 'vertical-align' only controls alignment of inline-level elements within a linebox (excepting the one mistaken exception of table-cells). ~TJ
Received on Friday, 29 April 2011 19:56:08 UTC