Hacker News new | ask | show | jobs
by jdwissler 4784 days ago
In my own experience I find them to be very inflexible and unpredictable.

There are still scenarios when you need them though, so I wouldn't call them 'poor practice' so much as something that should only be used if it makes sense.

1 comments

What is the most optimal method to use instead of tables?

[Edit] Added to my original post.

It really depends on what you are trying to do, I don't really know how to answer the question, it is too broad.

But like I said, I don't think tables are 'bad'. I think the main stigma against tables was that back in the old days they were used to layout pages that had column layouts, but I didn't program back then so I don't really know.

Using tables for layout is bad, full stop, no quotes.

Tables for tabular data are the only reason you should use the <table> element.

What qualifies tabular data?

GMail uses a table for laying out emails, is that tabular? (Maybe it is, I don't know, which is why I'm asking.)

What if you have an element which has 5 children that are in a row and you want the one in the middle to take up all the remaining width while the rest just take the width they need? I'm actually curious because I haven't figured it out. (Besides using table cells that is)

It's tricky to define exactly, but I like this article's take on it: http://webdesign.about.com/od/tables/a/aa122605.htm

A list of emails can be thought of as tabular data. In Gmail, you have columns (selection, star, important, participants, subject, and date) with one row per email. That's a table without explicit headers.

Yeah, with current css specs in browsers you need to resort to table-cell stylings like display:table-row and display:table-cell. But that can be done without using actual <table> elements.

I see. I don't think we actually disagree on anything, but were just thinking of different semantics.

I should have qualified that I rarely use the table tag and use display:table-cell.

I was thinking of them as effectively the same as using a table for layout.