- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Thu, 22 Apr 2010 19:40:52 -0700
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: <www-style@w3.org>
-------------------------------------------------- From: "Tab Atkins Jr." <jackalmage@gmail.com> Sent: Thursday, April 22, 2010 10:54 AM To: "Andrew Fedoniouk" <news@terrainformatica.com> Cc: <www-style@w3.org> Subject: Re: [CSS3] horizontal/vertical-align ? > On Thu, Apr 22, 2010 at 9:39 AM, Andrew Fedoniouk > <news@terrainformatica.com> wrote: >> Sorry, but my question still stands - >> what does vertical-align mean here: >> >> span >> { >> display: table-cell; >> vertical-align: bottom; >> } >> ? > > The element is a table-cell, and thus the table-cell rules apply. > > >> If it is a content of the span alignment then how to apply >> its vertical alignment in line box as here: >> span >> { >> display: inline-block; >> vertical-align: bottom; >> } > > The element is not a table-cell, and thus the normal text rules apply. > > >> This bug in specification prevents vertical-align >> to be used with any other elements that establish >> float layout context. E.g. flexboxes of David Baron >> or elements under the 'flow' container as in my case. > > I don't understand what you mean here, or what the problem is. Consider this markup: <p>One <span>two</span> three</p> With these styles: p { line-height:40px; } span { height:10px; border:1px solid; display: table-cell; vertical-align: bottom; } This style should force the span to behave as an inline-table (or table?) and the table-cell at the same time. As a table in inline context this element should use vertical-align: bottom; to align the block to bottom of line box. And as a table cell vertical-align: bottom instructs it to align content to the bottom. So either these display:table-*** things are conceptually wrong or assigning the same name (vertical-align) to completely different entities was very bad decision at that time. I suspect that both of them have design flaws. Ideally we should be able to define that span as: span { border: 1px solid; display: inline-block; /* or block */ vertical-align: bottom; content-align: middle; [content-]flow: vertical; /* or table, horizontal, etc. */ } > > >>> The main use-cases for horizontal-align are addressed by flexbox, >>> which is a layout mode very similar to static layout, but designed >>> more for the layout of blocks than of text. >>> >> >> flexbox is about free space concept and when element >> overflows there is no such space at all. >> >> Yes, you can say >> >> cont { flow:vertical; } >> cont > elem { margin-left:*; width:XXXpx; margin-right:0; } >> >> to right-align elem box horizontally but this does not address >> case when 'cont' overflows . >> >> Flow/flexes and vertical/horizontal-align makes the layout >> system complete as these are parts of the same >> algorithm/functionality. > > Making an element stick to one side or the other is done with the > box-align property. > > Overflow is indeed not addressed by box-align; it's currently defined > directly by the direction of the flow. I have an open question about > flexbox asking exactly which overflow-direction is best, given a > particular flow direction (put another way, which direction should be > before/after, given a particular start/end direction). I suspect that > I'll end up adding a property to allow manual control of this, > precisely so you can, say, have a vertical flexbox on both the left > and right of a page, and have both of them overflow toward the center > of the page. > > For normal text flow, the stickiness on blocks can be done by setting > an appropriate margin to auto. Overflow is addressed by the direction > property. > 'direction' has no such thing as horizontal-align: center. 'direction' primarily defines text order. Yes it has side effect of behaving as if horizontal-align: right is defined when direction is 'rtl' and 'left' in case of 'ltr' but again carving this side-effect in the stone of specification was bad idea. There are cases when you need to say: ul { direction: rtl; flow: horizontal; horizontal-align: center; } -- Andrew Fedoniouk. http://terrainformatica.com
Received on Friday, 23 April 2010 02:41:21 UTC