- From: Bert Bos <bert@w3.org>
- Date: Wed, 07 May 2008 14:25:09 +0100
- To: "www-style@w3.org" <www-style@w3.org>
Alex Mogilevsky wrote: > Thanks Fantasai, now I can recall the discussion. > > Attached is a draft text for property definition which reflects what I believe we have agreed on or have considered. It also calls out a few open issues. > > Please comment! 0) Re the name 'block-vertical-align' The word "vertical" is useful to remind one of the similar but different 'vertical-align' property, but in the light of use in vertical text, maybe it is nevertheless better to omit that word and call the property 'block-align'? 1) Re 'justify': Equally spacing a series of boxes might be nice, but maybe it can be simulated sufficiently with 'leader(space)' from the GCPM Module as follows. If the document fragment is like this: <div class=container> <div>...</div> <div>...</div> ... <div>...</div> </div> the style may be like this: div.container {height: 40em; block-progression: rl} div.container > div {block-progression: tb; display: inline-block} div.container > div::before {content: leader(space)} div.container > div:first-child::before {content: none} (OK, it's complex, and I'm not even sure it is complete... :-) ) Extended margin properties may be another approach still, see point 5 below. 2) Re priority over 'vertical-align': The text should probably explain better what that means. I think it means that the 'auto' value, when applied to a table cell, defers to the value of 'vertical-align'. 3) Re when content is bigger than the container: Why make this exception? Why can't content be aligned to the top, middle or bottom when it is bigger than the content box? Indeed, this seems a very useful feature: you can create a box with a scrolling mechanism and initialize it to show the center part of the content. Moreover, if you have several boxes side by side, all of which have 'block-vertical-align: middle', it will look rather ugly if one of them is *not* centered. 4) Re vertical text: I think we also need values 'left' and 'right'. Those values can be treated as 'top' when in horizontal text (and, conversely, 'top' and 'bottom' can be treated as 'right' in 'rl' and as 'left' in 'lr). Treating them as 'auto' is probably less desirable, because 'auto' doesn't create a flow root ("block formatting context root" in CSS 2.1 terminology). I've never seen a use case for 'start'/'end' (or 'before'/'after') and I can't imagine anybody creating a style that can just be rotated 90 degrees and still look good. People's eyes are side by side, and thus reading vertical text requires different typography than reading horizontal text. But learning two more keywords is a relatively low cost for users, so if somebody finds a use case, they are easy to add to the spec. 5) Doing without the property: For the horizontal position (or more generally: line progression direction), we use 'auto' margins on child boxes to align content to the edges or the center of a container box. (Although that functionality is broken for large boxes since CSS 2.1.) Maybe we should have the same method for aligning block children horizontally and vertically. If one uses the margins, than so should the other (and if one uses a property, than so should the other). If we use the margins, we could have keywords such as 'fill' or 'any' (as 'auto' is unfortunately not reliable anymore): /* Prohibit margin collapsing and insert an elastic margin */ div { margin-top: fill } The metaphor for 'fill' may be a spring: it's attached somewhere high above the DIV and is pushing the DIV down as far as it can go. If there is a spring at the bottom as well, the result is to push the DIV to the center. The 'leader()' value from GCPM is a similar idea. /* Align to the right */ div { margin-left: fill } If we use a property, e.g., 'block-align', it could look like this: div { block-align: center left } div { block-align: auto } /* default */ div { block-align: bottom right } (But using a property interferes with the existing 'auto' margins. It can get rather confusing and using auto margins as fallback for old browsers doesn't work as well as the 'fill' solution.) Bert -- Bert Bos ( W 3 C ) http://www.w3.org/ http://www.w3.org/people/bos W3C/ERCIM bert@w3.org 2004 Rt des Lucioles / BP 93 +33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Wednesday, 7 May 2008 13:25:55 UTC