- From: James Elmore <James.Elmore@cox.net>
- Date: Sat, 5 Jan 2008 22:30:30 -0800
- To: Brad Kemper <brkemper@comcast.net>, CSS <www-style@w3.org>
- Message-Id: <5B7434DA-A2C7-4388-9209-C69EAC967421@cox.net>
On Jan 5, 2008, at 5:02 PM, Brad Kemper wrote: > I don't know if this subject has been broached before... > > Using absolute positioning to center an element is not as simple as > it should be. I can position the element by setting its top, > bottom, right, and left. But if I set "left:50%; top:50%;", but to > center the whole element (instead of just the top left corner) I > have to know its height and width, divide them in half, and use > them as negative margin. It would be much simpler if I could set > "center-x:50%; center-y:50%" instead of top, left, and negative > margin. > > I know there are a couple of other ways to get the items to center, > but they are no simpler, or have other limitations. Being able to > position items by center would be so much simpler. > > I posted something about this on November 6th. Alignment/positioning is a complex subject, but basically the user needs to either: set the margins of an object (to 'auto' for centering, for example) or pick a point in the block being positioned, name another block (the parent, for example) and pick a point in that block as well. Edges can also be aligned/positioned. In this case, it takes specifying two (adjacent) edges of the positioned block and two (adjacent) edges of the other (possibly parent) block to complete the positioning. Simple defaults can make this specification much simpler. In some cases, it makes sense to set margins to position an element, in others it is clearer (at least to me) to speak in terms of aligning points or edges. Both ways can be equivalent -- aligning the center point of an element with the center point of its parent block is essentially the same as setting margins on all four sides of the centered element to 'auto.' If we decide to allow alignment/ positioning by aligning points/edges as well as by setting margins, it would allow users different ways of doing the same thing. This makes using CSS easier, as some positioning is easier to understand in terms of margins (1.0in, 1.0in) and some is easier to understand in terms of aligning with another element (align center to center is much clearer to me than 'margin: auto auto auto auto;') As for implementors, I can see that they might decide to implement all alignments in terms of margin sizes, and just translate any positioning instructions into margin changes, or the reverse. James Elmore
Received on Sunday, 6 January 2008 06:30:43 UTC