W3C home > Mailing lists > Public > www-style@w3.org > November 2007

Re: Alignment property proposal

From: James Elmore <James.Elmore@cox.net>
Date: Tue, 6 Nov 2007 08:08:34 -0800
Message-Id: <6592157A-1CFC-4FF2-8DBF-3F1AB819A176@cox.net>
To: CSS <www-style@w3.org>, w3c-css-wg@w3.org


On Nov 6, 2007, at 7:30 AM, Jens Meiert wrote:

>
>> Allow centering of content within a containing block.
>
> It sounds like you mean something like the "auto" value [1] of the  
> "margin" property?
>
>> ' alignment'
>> Value:          left |center | right | inherit
>
> Like "margin: auto" equaling "alignment: center"?
>
>
> [1] http://www.w3.org/TR/CSS21/ 
> visudet.html#Computing_widths_and_margins
>
> -- 
> Jens Meiert
> http://meiert.com/en/
>
>

Sometimes designers like to think in terms of how much space to use  
on either side of an object. For this, "margin" is perfect. It can be  
set to "auto" to keep the object in the middle, or it can accept  
fixed values (e.g., "12px" or "0.5in") or percentages.

However, sometimes designers think in terms of positioning and  
alignment.

"Alignment: center" would correspond with "margin: auto". There is  
clearly a correspondence between the two, the real difference is in  
the way the user thinks of the problem. I would like to see both  
"margin" and "alignment" included in CSS and that would allow the  
user to think about the problem in whichever terms he/she wants.

This proposal lacks a little of being able to fulfill that  
correspondence. There is no way to align objects vertically or both  
vertically and horizontally within a block. There is also no  
consideration of the possibility that a user might want the aligned  
block fixed ("2.54cm") or relative ("20%"). Since the two ways of  
considering layout (margins and alignment) correspond, there is  
little extra effort in allowing both, the main coding (actual layout)  
would be in a single place and probably already exists; only the  
front end (the user interface, the CSS parsing, whatever you want to  
call it) would be added.

What about:

align, align-horizontal, align-vertical: start | end | center | auto  
| {fixed-units} | {percentages}

Align-horizontal and align-vertical accept one or two values. Start,  
end, and center would be a single value, related to the direction of  
block layout flow and would place the aligned object at the obvious  
place within the block. Either one or two of the auto, {fixed-units},  
or {percentages} would be allowed. The first one would apply to the  
start of the block and the second one would apply to the end.  
Disambiguating and constraining rules similar to those for "margin"  
would be applied if the aligned block were too small or too large to  
fit within the alignment requests.

Align accepts one, two, three, or four values, relating to horizontal  
and vertical alignment. I'm not sure of the best order, only that it  
might be nice to have a shorthand, similar to margin.

If I'm using the wrong terminology, I apologize. {fixed-units} are  
like px, cm, in. Do we also want to allow em, ex, and so on?

There are more details to decide on, but I don't want to write a  
novel unless there is interest. I can fill out this proposal a little  
more if someone asks for it.


James Elmore
Received on Tuesday, 6 November 2007 16:15:38 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:54:56 GMT