- From: Sjoerd Visscher <sjoerd@heeten.nl>
- Date: Tue, 29 Feb 2000 18:45:19 +0100
- To: <www-style@w3.org>
And http://www.w3.org/TR/css3-userint#box-sizing does not do what you want? Sjoerd Visscher ----- Original Message ----- From: "Joe Hewitt" <joe@joehewitt.com> To: <www-style@w3.org> Sent: Tuesday, February 29, 2000 4:09 PM Subject: box-sizing alternative > I am of the believe that the defined behavior of sizing in CSS/CSS2 is very > misleading and will result in a good deal of confused developers and broken > layouts. It seems to me that the property "width" (and height also) should > refer to the width of the ENTIRE element, including content, border and > padding, but not margin. As it is defined by the W3C, "width" actually > means "content-width". I believe it would be a good idea to then add an > element called "content-width" to CSS3, and change the meaning of "width". > For the sake of this discussion I will refer to actual, final width as > #WIDTH#. For example: > > <div style="content-width: 100px; padding: 2px; border-width: > 2px;"&rt;Testing</div&rt; > > The above div would have an actual resulting #WIDTH# of "104px". Then, take > this example: > > <div style="width: 100px; padding: 2px; border-width: > 2px;"&rt;Testing</div&rt; > > The above div would have a #WIDTH# of "100px". The "border" and "padding" > would show up inside of the 100 pixel-wide box. Then, take this example: > > <div style="width: 100px; content-width: 50px; padding: 2px; > border-width: 2px;"&rt;Testing</div&rt; > > In this case, the "content-width" would count for nothing, as it doesn't > reach out to the edge of the "width". The width of the content region would > expand to fit inside "width"-("padding"+"border"). Then, take this example: > > <div style="width: 100px; content-width: 150px; padding: 2px; > border-width: 2px;"&rt;Testing</div&rt; > > In this case, the "content-width" is wider than the "width", and so the > width should actually expand to fit the content, and become "150px". The > nice thing about this is that if "content-width" is left at "auto", the > browser must calculate the width of the contained text/elements and put that > value in "content-width", which gives the user the ability to make an > element adapt automatically. > > When "width" is not defined, #WIDTH# = "padding" + "border" + "content". > When it is defined, #WIDTH# will be equal to "width" unless "padding" + > "border" + "content" &rt; "width", in which case #WIDTH# is equal to that > sum. > > Another advantage of this method is that it works the same way that tables > work in HTML, which is something that the web development community at large > is used to. If for example, you had a table like this: > > <TABLE WIDTH="100"&rt; > <TBODY&rt; > <TR&rt; > <TD WIDTH="150"&rt;Testing</TD&rt; > </TR&rt; > </TBODY&rt; > </TABLE&rt; > > Essentially the TABLE's "WIDTH" is the same as CSS "width" while the TD's > "WIDTH" is the same as "content-width". This is the same as my last CSS > example, and the table will expand to fit the TD's size. > > I see not reason to have an attribute like box-sizing. It seems > counter-intuitive to change the definition of sizing. Instead, we should > clearly define these regions and how to control their size. Now the user > can identify that "width" means width of everything, "margin" is a region > outside of the "width", "border" is a region inside the edge of "width", > "padding" is a region inside the edge of "border", and "content" is a region > inside the edge of "padding". Now the user has firm control over the size > of all of these regions, with the ability to over-ride them all with > "width". > > Does this make sense to anybody? > > > > > > > > >
Received on Tuesday, 29 February 2000 12:45:35 UTC