CSS was originally intended as a text formatting language and it serves that purpose adequately.. not exceptionally but adequately. This is why box widths are internal: it was assumed that the content of a box is more important than its position on the page.
The great tragedy was overloading CSS as a layout language, a purpose for which it is laughably ill-suited. The most trivial layout tasks are so difficult that their implementations must be crafted by master alchemists, named and disseminated to the helpless masses. Even layout tasks that don't require ridiculous hacks must often misuse the language e.g. using float to create horizontal stacks.
The intuitive way to express a layout is something of this sort:
"Box A expands horizontally to fill the page with a maximum width of ### and minimum width of ###. Box A and B both expand vertically to contain their content and the shorter one expands so it's bottom bound is equal to the longer one. Box C is horizontally and vertically centered in box B and has 1/2 its width."
There is absolutely no reason that a formal layout language should not allow you to express yourself this simply. A constraint based language does exactly that. A grid based engine requires more translation effort but is still intuitive and complete. This model is used by most GUI toolkits.
Why do we accept the pathetically underpowered CSS as progress? Perhaps it is the geek tendency to create mental challenges.. or the human tendency to associate suffering with doing good.. or just the job security instinct.
I have a friend who is not technically savvy but has enough of a grasp of tables to make web pages with them, which she used to do quite a bit. Now, she doesn't make sites because CSS layout is beyond her abilities and she feels that the stigma of tables is too opressive. I try to convince her that she is being paranoid but I can't deny that there are many out there who do indeed feel that she should not contribute to the web at all if she can't do it with CSS. This seems to violate the open, inclusive spirit of the web and leaves me sad and frustrated.
The great tragedy was overloading CSS as a layout language, a purpose for which it is laughably ill-suited. The most trivial layout tasks are so difficult that their implementations must be crafted by master alchemists, named and disseminated to the helpless masses. Even layout tasks that don't require ridiculous hacks must often misuse the language e.g. using float to create horizontal stacks.
The intuitive way to express a layout is something of this sort:
"Box A expands horizontally to fill the page with a maximum width of ### and minimum width of ###. Box A and B both expand vertically to contain their content and the shorter one expands so it's bottom bound is equal to the longer one. Box C is horizontally and vertically centered in box B and has 1/2 its width."
There is absolutely no reason that a formal layout language should not allow you to express yourself this simply. A constraint based language does exactly that. A grid based engine requires more translation effort but is still intuitive and complete. This model is used by most GUI toolkits.
Why do we accept the pathetically underpowered CSS as progress? Perhaps it is the geek tendency to create mental challenges.. or the human tendency to associate suffering with doing good.. or just the job security instinct.
I have a friend who is not technically savvy but has enough of a grasp of tables to make web pages with them, which she used to do quite a bit. Now, she doesn't make sites because CSS layout is beyond her abilities and she feels that the stigma of tables is too opressive. I try to convince her that she is being paranoid but I can't deny that there are many out there who do indeed feel that she should not contribute to the web at all if she can't do it with CSS. This seems to violate the open, inclusive spirit of the web and leaves me sad and frustrated.