The CSS standard has already conceded the point that tables can do things that pre-table CSS couldn't do. It's over. The pro-CSS side, at least in the way it is being argued (as if the IE subset is CSS, rather than the standard), is just wrong and totally out of date. They've been abandoned by CSS itself. Quite a long time ago, actually.
As for their assertions that this is for "tabular relationships between data" in the standard, who cares? Table support is implemented as certain boxes with certain behaviors. If you need those behaviors in your layout, use them. They are well defined. And since content and presentation are so darned separate, it's not like it actually hurts anything, right?
(That's a critical point. If you move all the table stuff into CSS, that's fundamentally different than using the standard table tag. That's presentation in CSS and content in HTML, exactly as it "should" be!)
Getting all huffy about the fact that somebody declared that some behavior should "only be for tables" is really missing the point. The behavior simply exists, regardless of what it was "designed" for, and if you need it, use it. Besides, just read about the table support... if you can't see how that stuff might be useful in a layout, I can't imagine how your mind works.
The CSS table support is actually pretty rich, better than the conventional table tag by a lot, or at least, more flexible.
There is this strange myth that "the pro-CSS side" is somehow against tabular or grid-based layouts, or believe that this kind of layout should only be used for "tabular data". That is a fundamental misunderstanding.
Note that CSS does not say that disply:table is only for tabluar data. The whole point of CSS is that you can use it any way you like, since it doesn't change the semantics of the document. This is totally different from HTML which indeed states that HTML tables should only be used for tabular data.
CSS has not "conceded" anything by including display:table - rather this is the whole point of CSS: to allow you to use grid-like layouts for other things than just tabular data.
I was Div-only and now I think mixing Tables and Div can be good, even preferable.
"One of the problems with criticising CSS is that it's very hard to write good CSS, so pointing out problems with CSS begs the question of whether this is an indictment of CSS or one's coding ability. The problem is particularly pernicious for layout. (One indication of this is how many CSS layout tutorials there are on the web.)"
This sealed it. The tool should the servant, not a thing that always trying to learn more about. Anything that really is inherently hard to use is bad, plain bad. There's no excuse. Things that are until you learn something can be great.
I've done complicate layout in CSS and the process of trying to make it work never got easier or clearer. At a certain point, you have to say "this is just a bad way to do things".
It would be nice if CSS/html somehow added objects which had the virtues of both Divs and tables. BUT I now realize that design mantra "never use tables, always use divs" was just ideological nonesense. Not that I would always use a table but I will certainly consider both options from now on
I realize now that one of the truly evil aspect of divs is that they keep you from having localized object on your page. Want to guarantee that you will have three column on your page, good friggin' luck.
True, it hasn't changed my mind away from being pro-CSS. It has however, made me realize how much of a learning curve CSS must be for many programmers compared to tables, much more than I thought, so I'm less likely to debate the finer points with coders that use tables and just stick to enjoying the benefits of stylesheets for myself.
It took me all of 5 minutes to learn how to use tables back in oh... '94 or so, I remember the tutorial by some lady working for the fledgling netscape corporation.
To this date - and I don't think I qualify as stupid - I haven't fully grokked the css way of doing layout, there is always the little 'clear' or some other detail that keeps me from getting it right in one go. CSS works, but it is harder than it should be, the idea of something new superceding something older is that it is better and easier to use at the same time.
If CSS was really that great we wouldn't be having these debates, people would have switched en masse years ago and the 'table' tag would have been deprecated. I think any such attempt by w3c would be met with a fairly serious revolt.
I'm pro-CSS as well, but the OP made a great point. There are many important bugs in the implementation that stop us from completely separating content from presentation, yet it's the platform with largest userbase, and all that causes. Loads of viewers competing against each other, add-ons, Javascript, tons of different technologies with the same purpose, and it gets really hard to standardize anything in this environment.
I believe in the W3C. I think we need a better way to separate content from presentation, and we need less permissive standards, but that also make it easy for less techy people to use the Web. And the most used browser is incredibly buggy. So it's a mess.
I would like to use CSS instead of tables, but CSS is not quite perfect yet.
> I doubt a single person will change their mind either way
I changed my mind (a while back). i learned about web dev and read you should use CSS not tables. so i made some layouts with css and generally believed that.
then i found some pure css vs tables arguments here. and i decided tables are fine.
Front-end/Web design has evolved into a discipline of its own.
If you come from a different field, say programming, I can see how CSS looks like a bad solution to an already solved problem. So you're incentive is to stick to what you know and use tables for everything.
However, there's much more to front-end design that just having text and images show up where you want: user-agent targeting, SEO, accessibility, typography, graphic design, etc... There's a lot to learn, and CSS is just a small part of it.
Context-sensitive Presentation, Better Accessibility,
and the most complex designs are easier with CSS. These seem to fall under the YAGNI rule. In particular, if it took me a couple of hours to build using tables versus a couple of weeks using CSS (see the Ron Garret post), the above listed benefits would be cold comfort for the wasted time.
The first rule should be to get something working quickly, even if it's suboptimal. And the jury seems to still be out on the suboptimal part.
The amount of time it takes, and how suboptimal the result is depends on the design. There is no reason you can't create a decent design in a few hours using either.
By all mean, do what you feel more comfortable with, but working with CSS is not necessarily slower than using table layouts. You just need to get over the learning curve.
It seems illogical to me that the most complex designs are easier with CSS alone and no tables. Pragmatically, there's no room for a multidisciplinary approach?
And I must vent about the you-poor-thing defense, which was only mildly present in the article but has popped up loads of times in the discussion of the past few days.
Hockey-stick learning curves are inherent, objective flaws for software interfaces, not subjective ones that don't matter once the cretin beginners have been sufficiently shamed to overcome them. Interfaces are for humans. They should make "easy things easy and hard things possible." When they don't, there is a general feeling of malaise. Steep learning curves actively foreclose productivity and decrease user enthusiasm. Let us not forget the lessons of Kathy Sierra:
Furthermore, defending steep learning curves in general puts one in poor company and makes people wary. We've all seen people defend their sunk investments in genuinely crummy systems with a zeal which, seen from the outside, is comparable only to Stockholm syndrome.
I have to admit, I default to tables for layout (not a designer, obviously). Hopefully once all of the major browsers support CSS3 (and more specifically CSS tables), this argument will be moot. Of course, the only major browser that doesn't is IE (prior to 8), so we probably have quite a while before IE 6 & 7 disappear from general use.
This article won't load on my Blackberry. All of the pro-tables articles looked fine... (To be fair, it's probably a .js issue)
I haven't read much of the what's so wrong with tables argument in this debate. A lot people saying x is possible with divs and css is different from saying it's faster, better, cheaper. The div approach is harder to debug, the tables approach fails to set you apart from the hoi polloi...end of story?
To me this argument itself is wrong; One of the reasons why using CSS is considered difficult by some developers is because of the different levels of support shown by different browsers.
The whole argument that CSS has a learning curve, or that we need hacks, etc - all point to the same problem. The reason it takes such a long time to get the layout just right is because there is some browser out there (typically IE6) that does not behave the way you want it to.
We would not even be having this "war" if all the browsers were standards compliant, so my gripe as a developer is - why are we not fighting the correct war? As a developer, I must be able to write code, whether using div tags or table tags, and expect that it works just as it is supposed to, and not have to waste hours trying to hack it to work with non-compliant browsers!!
CSS frameworks are great way to get the job done quickly, with no need to worry about the different browsers and their issues.
CSS extermists will tell you how using those frameworks is evil, lame, etc. I think the problem is that web developers feel threatened of loosing their jobs (gigs), since regular Joe Sixpack can now go and create a decent looking website in XHTML/CSS with minimal effort.
It's funny that this issue will only come up with someone who doesn't have to code designs for living or at least regularly. No offense, but if you actually got out of your little shell people and worked on some real designs, created by great designers, you would understand why CSS is superior.
[+] [-] jerf|17 years ago|reply
The CSS standard has already conceded the point that tables can do things that pre-table CSS couldn't do. It's over. The pro-CSS side, at least in the way it is being argued (as if the IE subset is CSS, rather than the standard), is just wrong and totally out of date. They've been abandoned by CSS itself. Quite a long time ago, actually.
As for their assertions that this is for "tabular relationships between data" in the standard, who cares? Table support is implemented as certain boxes with certain behaviors. If you need those behaviors in your layout, use them. They are well defined. And since content and presentation are so darned separate, it's not like it actually hurts anything, right?
(That's a critical point. If you move all the table stuff into CSS, that's fundamentally different than using the standard table tag. That's presentation in CSS and content in HTML, exactly as it "should" be!)
Getting all huffy about the fact that somebody declared that some behavior should "only be for tables" is really missing the point. The behavior simply exists, regardless of what it was "designed" for, and if you need it, use it. Besides, just read about the table support... if you can't see how that stuff might be useful in a layout, I can't imagine how your mind works.
The CSS table support is actually pretty rich, better than the conventional table tag by a lot, or at least, more flexible.
[+] [-] olavk|17 years ago|reply
Note that CSS does not say that disply:table is only for tabluar data. The whole point of CSS is that you can use it any way you like, since it doesn't change the semantics of the document. This is totally different from HTML which indeed states that HTML tables should only be used for tabular data.
CSS has not "conceded" anything by including display:table - rather this is the whole point of CSS: to allow you to use grid-like layouts for other things than just tabular data.
[+] [-] ejs|17 years ago|reply
Things not to bother arguing about in public (since no one will change their mind):
Religion
Politics
CSS vs Tables for layout...?
[+] [-] joe_the_user|17 years ago|reply
I was Div-only and now I think mixing Tables and Div can be good, even preferable.
"One of the problems with criticising CSS is that it's very hard to write good CSS, so pointing out problems with CSS begs the question of whether this is an indictment of CSS or one's coding ability. The problem is particularly pernicious for layout. (One indication of this is how many CSS layout tutorials there are on the web.)"
This sealed it. The tool should the servant, not a thing that always trying to learn more about. Anything that really is inherently hard to use is bad, plain bad. There's no excuse. Things that are until you learn something can be great.
I've done complicate layout in CSS and the process of trying to make it work never got easier or clearer. At a certain point, you have to say "this is just a bad way to do things".
It would be nice if CSS/html somehow added objects which had the virtues of both Divs and tables. BUT I now realize that design mantra "never use tables, always use divs" was just ideological nonesense. Not that I would always use a table but I will certainly consider both options from now on
I realize now that one of the truly evil aspect of divs is that they keep you from having localized object on your page. Want to guarantee that you will have three column on your page, good friggin' luck.
[+] [-] alabut|17 years ago|reply
[+] [-] jacquesm|17 years ago|reply
To this date - and I don't think I qualify as stupid - I haven't fully grokked the css way of doing layout, there is always the little 'clear' or some other detail that keeps me from getting it right in one go. CSS works, but it is harder than it should be, the idea of something new superceding something older is that it is better and easier to use at the same time.
If CSS was really that great we wouldn't be having these debates, people would have switched en masse years ago and the 'table' tag would have been deprecated. I think any such attempt by w3c would be met with a fairly serious revolt.
[+] [-] nx|17 years ago|reply
[+] [-] xenophanes|17 years ago|reply
I changed my mind (a while back). i learned about web dev and read you should use CSS not tables. so i made some layouts with css and generally believed that.
then i found some pure css vs tables arguments here. and i decided tables are fine.
[+] [-] joshwa|17 years ago|reply
[+] [-] Devilboy|17 years ago|reply
[+] [-] newt0311|17 years ago|reply
[+] [-] cedsav|17 years ago|reply
If you come from a different field, say programming, I can see how CSS looks like a bad solution to an already solved problem. So you're incentive is to stick to what you know and use tables for everything.
However, there's much more to front-end design that just having text and images show up where you want: user-agent targeting, SEO, accessibility, typography, graphic design, etc... There's a lot to learn, and CSS is just a small part of it.
[+] [-] briancooley|17 years ago|reply
The first rule should be to get something working quickly, even if it's suboptimal. And the jury seems to still be out on the suboptimal part.
[+] [-] KrisJordan|17 years ago|reply
The rule of getting something working quickly should not increase the cost of doing it right in the future.
[+] [-] GHFigs|17 years ago|reply
[+] [-] cedsav|17 years ago|reply
[edited]
[+] [-] zach|17 years ago|reply
And I must vent about the you-poor-thing defense, which was only mildly present in the article but has popped up loads of times in the discussion of the past few days.
Hockey-stick learning curves are inherent, objective flaws for software interfaces, not subjective ones that don't matter once the cretin beginners have been sufficiently shamed to overcome them. Interfaces are for humans. They should make "easy things easy and hard things possible." When they don't, there is a general feeling of malaise. Steep learning curves actively foreclose productivity and decrease user enthusiasm. Let us not forget the lessons of Kathy Sierra:
http://headrush.typepad.com/creating_passionate_users/2005/1...
Furthermore, defending steep learning curves in general puts one in poor company and makes people wary. We've all seen people defend their sunk investments in genuinely crummy systems with a zeal which, seen from the outside, is comparable only to Stockholm syndrome.
[+] [-] soyverde|17 years ago|reply
[+] [-] ivankirigin|17 years ago|reply
[+] [-] mattmcknight|17 years ago|reply
I haven't read much of the what's so wrong with tables argument in this debate. A lot people saying x is possible with divs and css is different from saying it's faster, better, cheaper. The div approach is harder to debug, the tables approach fails to set you apart from the hoi polloi...end of story?
[+] [-] lbrandy|17 years ago|reply
Someone fix it, please.
[+] [-] quantumhobbit|17 years ago|reply
[+] [-] nshah|17 years ago|reply
The whole argument that CSS has a learning curve, or that we need hacks, etc - all point to the same problem. The reason it takes such a long time to get the layout just right is because there is some browser out there (typically IE6) that does not behave the way you want it to.
We would not even be having this "war" if all the browsers were standards compliant, so my gripe as a developer is - why are we not fighting the correct war? As a developer, I must be able to write code, whether using div tags or table tags, and expect that it works just as it is supposed to, and not have to waste hours trying to hack it to work with non-compliant browsers!!
[+] [-] braindead_in|17 years ago|reply
[+] [-] cedsav|17 years ago|reply
[+] [-] uniwiz|17 years ago|reply
CSS extermists will tell you how using those frameworks is evil, lame, etc. I think the problem is that web developers feel threatened of loosing their jobs (gigs), since regular Joe Sixpack can now go and create a decent looking website in XHTML/CSS with minimal effort.
[+] [-] sh1mmer|17 years ago|reply
Or you could just make your CSS render out tables (http://www.digital-web.com/articles/everything_you_know_abou...).
[+] [-] anatoli|17 years ago|reply
This isn't even an argument.
[+] [-] mjnaus|17 years ago|reply