- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Thu, 22 Apr 2010 08:18:01 -0700
- To: Andrew Fedoniouk <news@terrainformatica.com>
- Cc: www-style@w3.org
On Wed, Apr 21, 2010 at 11:46 PM, Andrew Fedoniouk <news@terrainformatica.com> wrote: > Are there any plans to > a) fix 'vertical-align' property b) and to introduce something like > 'horizontal-align' ? > > Consider this: > > span { > display: table-cell; /* or display:inline-block */ > vertical-align: bottom; /* ?????? */ > } > > It is not clear what vertical-align: bottom means here. > > vertical-align has completely different meanings in different contexts. > In display:table-cell it means alignment of element's content and in inline > context - alignment of the element itself. > > I am considering this as a bug of specification. > > In principle it has to be separate property like content-vertical-align > or vertical-align should accept two values: self-alignment and > content-alignment. vertical-align is the way it is for mysterious legacy reasons, and can't be changed at this point. Far too much content depends on vertical-align acting the way it does for table-cells and inlines. CSS2.1 does define exactly what it means to use it in the two contexts, though; in the vertical-align entry, it specifically calls out that the property has a different meaning on table cells, and points you to the table chapter for details. > There is also a need for horizontal-align with the meaning of content > alignment. > > Consider this: > > div { horizontal-align: right; overflow-x: hidden; } > div > p { width: 200px; } > > P elements inside the div should "stick" to right side of the div. > If content of the div overflows (e.g. its used width is less than 200 px) > then we should see right sides of P elements. Currently all UAs exhibit > left alignment when content overflows > and there is simply no way to change this in CSS. > overflow-y/vertical-align should demonstrate the same behavior. > > There are cases, e.g. while animating when such overflow/align beahvior is > highly desirable. > And yet, having it we can define in default CSS of HTML the following: > > [dir="rtl"] > { > direction: rtl; > text-align: right; > horizontal-align: right; > } > [dir="ltr"] > { > direction: ltr; > text-align: left; > horizontal-align: left; > } 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. ~TJ
Received on Thursday, 22 April 2010 15:18:53 UTC