By R. Christie
Tables got to be one of the most difficult objects to style in the Web, thanks to the cryptic markup, amount of detail we have to look over to, and lack of browser compatibility. A lot of time could be wasted on a single table although it’s just a simple one. This is where this article comes in handy. It will show you ten most easily implemented CSS table designs so you can style your tables in a zap!
First things first
We start with a valid xhtml 1.0 strict markup. Here is an example of a valid table markup:
<!-- Table markup--> <table id="..."> <!-- Table header --> <thead> <tr> <th scope="col" id="...">...</th> ... </tr> </thead> <!-- Table footer --> <tfoot> <tr> <td>...</td> </tr> </tfoot> <!-- Table body --> <tbody> <tr> <td>...</td> ... </tr> ... </tbody> </table>
You can read more about xhtml table markup in HTML Dog’s Table Section. I have tested the tables below in Mozilla Firefox 3, IE 6 and 7, Opera 9.x and Safari. Also note that I apply a light blue color scheme to all of these tables to give the article a consistent look. You can modify the color scheme to match your site — the source package is provided in the end of the article.
Before we start, let’s review the general rule of thumb for styling of tables:
- Tables love space. Set the width of tables carefully, according to the content. If you don’t know the perfect width, simply set the
width
of thetable
to100%
. Tables look nicer when they have “overwidthâ€, and when it comes to tables too much width is definitely better than too little width. - Cells need some distance. Sure, each table cell relates to each other. But it doesn’t mean that we have to pull them too close, right? Define some space between the cells, crammed up table cells are so much harder to read.
- Treat tables the way you treat content. Tables are read similarly to the way we read text — except it’s harder and it takes more time to read a table. So be careful with the amount of contrast you are giving to your table. Use soft colors — it’s easier for the eyes. Don’t treat your table like it’s a graphical decoration. Make sure that the style you apply to it makes the content more readable, not the other way around.
Now that we are all set up let’s get going, shall we?
1. Horizontal Minimalist
Horizontal tables are tables that are read rather horizontally than vertically. Each entity is represented by a row. You can style these types of tables with minimalist style. Simply set enough padding
to the cells (td
and th
) and put a 2 pixel border underneath the header.
Employee | Salary | Bonus | Supervisor |
---|---|---|---|
Stephen C. Cox | $300 | $50 | Bob |
Josephin Tan | $150 | - | Annie |
Joyce Ming | $200 | $35 | Andy |
James A. Pentel | $175 | $25 | Annie |
Because horizontal tables are supposed to be scanned horizontally, clearing the border of the table increases the efficiency of the table. The lack of border, however, makes this table design hard to read if it has too many rows. To counter it we simply add 1 pixel border underneath all td
elements:
Employee | Salary | Bonus | Supervisor |
---|---|---|---|
Stephen C. Cox | $300 | $50 | Bob |
Josephin Tan | $150 | - | Annie |
Joyce Ming | $200 | $35 | Andy |
James A. Pentel | $175 | $25 | Annie |
The tr:hover
rules are very useful to aid people reading a minimally designed tables. When the mouse cursor hovers over a cell, the rest of the cells in the same row highlights immediately, making it easier to track things if your tables have multiple columns.
- Important!
- Carefully finetune the typography and the padding between the cells
- Pros
- Very easy to style, good for simple tables
- Cons
tr:hover
rules don’t work in IE 6, table can be confusing if it has too many columns- Play with
- Color scheme, typography,
tr:hover
effects
2. Vertical Minimalist
Although rarely used, a vertically read table is useful in categorizing or comparing descriptions of objects, with each entity represented by a column. We can style it in minimalist style by creating white space separators between columns.
Comedy | Adventure | Action | Children |
---|---|---|---|
Scary Movie | Indiana Jones | The Punisher | Wall-E |
Epic Movie | Star Wars | Bad Boys | Madagascar |
Spartan | LOTR | Die Hard | Finding Nemo |
Dr. Dolittle | The Mummy | 300 | A Bug’s Life |
Add large size border-left
and border-right
with the same color as background. You can use transparent borders if you want, but IE 6 screws it all up. Since this is a vertically read table, adding tr:hover
does not help, instead hindering the effort to read it. There is perhaps a Javascript way to highlight the whole column when a mouseover
event occurs, but that is beyond the scope of this article.
- Important!
- Carefully fine tune the typography and the padding between the cells, do not add
tr:hover
effect - Pros
- Easy to style, good for simple tables
- Cons
- Cannot be used if background is not a solid block of color, suitable only for some tables
- Play With
- Color scheme and typography
3. Box
The most dependable of all style, the box style works for all kinds of tables. Pick a good color scheme and then distribute background-color
to all the cells. Don’t forget to accentuate the differences of each cell by giving border
as a separator. An example of box style table is as such:
Employee | Salary | Bonus | Supervisor |
---|---|---|---|
Stephen C. Cox | $300 | $50 | Bob |
Josephin Tan | $150 | - | Annie |
Joyce Ming | $200 | $35 | Andy |
James A. Pentel | $175 | $25 | Annie |
Comedy | Adventure | Action | Children |
---|---|---|---|
Scary Movie | Indiana Jones | The Punisher | Wall-E |
Epic Movie | Star Wars | Bad Boys | Madagascar |
Spartan | LOTR | Die Hard | Finding Nemo |
Dr. Dolittle | The Mummy | 300 | A Bug’s Life |
This style is probably the most used style in the internet. The tricky part is actually trying to find the color scheme that matches with your site. If your site is heavy on graphics, it will be pretty hard to use this style.
- Important!
- Choose a color scheme that matches with your site
- Pros
- Easy to style, flexible for large or small tables
- Cons
- Choosing the perfect color scheme could be tricky
- Play with
- Colors and borders, use
dashed
ordotted
to achieve cute effects, typography, icons
4. Horizontal Zebra
Zebra style tables are pretty attractive and usable. The different background color can serve as a visual cue for people when scanning the table. To style a table as zebra, simply put a class="odd"
every odd ordered tr
tags and define a style for it.
... <tr class="odd"> <td>...</td> ... </tr> <tr> <td>...</td> ... </tr> ...
Employee | Salary | Bonus | Supervisor |
---|---|---|---|
Stephen C. Cox | $300 | $50 | Bob |
Josephin Tan | $150 | - | Annie |
Joyce Ming | $200 | $35 | Andy |
James A. Pentel | $175 | $25 | Annie |
- Important!
- Do not put too much contrast on the zebra colors, you can blind your viewer
- Pros
- The zebra pattern can help people scan the table
- Cons
- Adding
class="odd"
manually can be very tedious for large tables, many content management system does not provide even odd features on a table loop, picking the color scheme may be tricky - Play With
- Contrasting color, borders, typography, icons
5. Vertical Zebra Style
Vertical zebra is easier to style than the horizontal one, as we can make use of colgroup
and col
elements to distribute column classes. The code becomes something like this:
<table> <!-- Colgroup --> <colgroup> <col class="vzebra-odd"> <col class="vzebra-even"> <col class="vzebra-odd"> <col class="vzebra-even"> </colgroup> <!-- Table header --> <thead> <tr> < scope="col" id="vzebra-comedy">Employee</th> ... </tr> </thead> ... </table>
The colgroup
element actually applies a style or class to the table, columnwise. Instead of tediously giving class
to the first td
or th
element, we can use a more convenient colgroup
. For more information about colgroup
visit this source.
Comedy | Adventure | Action | Children |
---|---|---|---|
Scary Movie | Indiana Jones | The Punisher | Wall-E |
Epic Movie | Star Wars | Bad Boys | Madagascar |
Spartan | LOTR | Die Hard | Finding Nemo |
Dr. Dolittle | The Mummy | 300 | A Bug’s Life |
Although perhaps more suitable for vertically read table, this zebra style can also be used for any kind of table.
- Important!
- Do not put too much contrast on the zebra colors, you can blind your viewer
- Pros
- Suitable for all types of tables
- Cons
- Choosing the color scheme could be tricky, need to add
colgroup
elements - Play With
- Contrasting color, borders,
colgroup
andcol
, icons and typography
6. One Column Emphasis
In some tables, a column may have higher hierarchy than the rest. If that’s the case, you can use colgroup
and col
to make that particular column stands out. In the example below, the first column serve as the starting point to read, so it is emphasized, just like we emphasize the first letter of the paragraph as drop caps:
Company | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
Microsoft | 20.3 | 30.5 | 23.5 | 40.3 |
50.2 | 40.63 | 45.23 | 39.3 | |
Apple | 25.4 | 30.2 | 33.3 | 36.7 |
IBM | 20.4 | 15.6 | 22.3 | 29.3 |
You can also use one column emphasis technique to point out something important, say the column containing totals of an accounting table, or in a comparison table - for computer specification perhaps, the winning entity (column).
- Important!
- Be careful, don’t overdo the emphasis or the column will jump out, distracting the effort to read the rest of the columns.
- Pros
- Very effective when used in certain kind of tables
- Cons
- The necessary
tr:hover
effect does not work in IE, suitable for certain types of tables only - Play with
- Color scheme, typography, icons and
tr:hover
effects
7. Newspaper
To achieve newspaper effect, apply border
to table
element and play with the cells inside. A quick, minimalist newspaper style can look like this:
Company | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
Microsoft | 20.3 | 30.5 | 23.5 | 40.3 |
50.2 | 40.63 | 45.23 | 39.3 | |
Apple | 25.4 | 30.2 | 33.3 | 36.7 |
IBM | 20.4 | 15.6 | 22.3 | 29.3 |
Simply play with color scheme, borders, padding, backgrounds, and tr:hover
effects of the cells (td
and th
). Other alternatives is presented below:
Company | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
The above data were fictional and made up, please do not sue me | ||||
Microsoft | 20.3 | 30.5 | 23.5 | 40.3 |
50.2 | 40.63 | 45.23 | 39.3 | |
Apple | 25.4 | 30.2 | 33.3 | 36.7 |
IBM | 20.4 | 15.6 | 22.3 | 29.3 |
Favorite | Great | Nice | Bad |
---|---|---|---|
Passion of the Christ | Bourne Ultimatum | Shoot ‘Em Up | Ali |
The Big Fish | The Mummy | Apocalypto | Monster |
Shawshank Redemption | Cold Mountain | Indiana Jones | Dead or Alive |
Greatest Story Ever Told | I Am Legend | Star Wars | Saw 3 |
- Important!
- Be careful with
border-collapse
, do not lose the signature border around the table! - Pros
- Gives a royal, authorative aura to a table easily
- Cons
- Unsuitable for large tables (it loses it’s charm on large tables)
- Play With
- Typography, color scheme, background, border, padding, and
tr:hover
effects
8. Rounded Corner
Rounded corners are slick and modern, and it’s easy to apply it to a table, although you need to fire up your photoshop for this. Create images for all four corners of your table. Theoretically, we can make use of the nesting tr
and td
elements to place the left and right corners of the table without adding additional markup. Unfortunately, IE 6 goes berserk and the table was ugly, so the most stable way to do this is to put ID
or class
to all four corner cells of the table. You can see the example below:
Company | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
The above data were fictional and made up, please do not sue me | Â | |||
Microsoft | 20.3 | 30.5 | 23.5 | 40.3 |
50.2 | 40.63 | 45.23 | 39.3 | |
Apple | 25.4 | 30.2 | 33.3 | 36.7 |
IBM | 20.4 | 15.6 | 22.3 | 29.3 |
- Pros
- Great if you want untraditional table, probably the only viable option you have if your website uses rounded corners heavily
- Cons
- Takes longer time to style, needs images
- Play With
- Color scheme, corner variations, typography,
tr:hover
effects, icons
9. Table Background
If you want a quick and unique way to style your table, simply pick an attractive image or photo related to the subject of your table and set it to be the background-image
of the table
. You can add 50% grey PNG as background-image
of the cells to improve readability, and that means a css hack to make it work in IE 6:
* html table tbody td { /* IE CSS Filter Hack goes here*/ }
The table would look like this:
Employee | Division | Suggestions | |
---|---|---|---|
IE 6 users won’t see the transparent background if the hack is not applied | |||
Stephen C. Cox | Marketing | Make discount offers | |
Josephin Tan | Advertising | Give bonuses | |
Joyce Ming | Marketing | New designs | |
James A. Pentel | Marketing | Better Packaging |
- Important!
- Make sure the image is relevant to the table’s contents
- Pros
- Very easy to style, delivers unique look, if used correctly the image can serve as a symbol that gives outstanding impression on the viewer
- Cons
- Needs hack to get the background work in IE 6, needs images
- Play With
- Background images, transparent PNGs, typography, colors, icons
10. Cell Background
You can apply background-image
to the cells and achieve a consistent look. Say you have at least half an hour to spare - and you want something that’s not too bland. Start your Photoshop and make 1 pixel width gradients, and set them as background-image
of all cells. You’ll end up with a gradient style table:
Employee | Division | Suggestions | Rating |
---|---|---|---|
Give background color to the table cells to achieve seamless transition | |||
Stephen C. Cox | Marketing | Make discount offers | 3/10 |
Josephin Tan | Advertising | Give bonuses | 5/10 |
Joyce Ming | Marketing | New designs | 8/10 |
James A. Pentel | Marketing | Better Packaging | 8/10 |
Similarly, pick a pattern and set it as background-image
and you’ll end up with a pattern style table:
Employee | Salary | Bonus | Supervisor |
---|---|---|---|
Stephen C. Cox | $300 | $50 | Bob |
Josephin Tan | $150 | - | Annie |
Joyce Ming | $200 | $35 | Andy |
James A. Pentel | $175 | $25 | Annie |
Nation | Capital | Language | Unique |
---|---|---|---|
Japan | Tokyo | Japanese | Karate |
South Korea | Seoul | Korean | Ginseng |
China | Beijing | Mandarin | Kung-Fu |
Indonesia | Jakarta | Indonesian | Batik |
- Important!
- Make sure the text stands out of the background
- Pros
- Easy to style, not too bland
- Cons
- Uses images, patterns and gradients might distract reading
- Play With
- Color scheme, patterns, typography, borders, backgrounds, gradients, icons
Final Words
I know I barely scratched the surface when I did this article, so grab the source and play around. Feel free to post your favourite table designs, especially if it’s something I miss out. Over to you.
About the author
R.Christie is studying information systems at college. He viciously juggles activities from college, web design, programming, church, to sport activities. You can say hello to him via e-mail.
Editor’s note
This post is one of the finalists of our guest author contest. Over three weeks selected top-10-lists and discussion articles will be published. To rate the articles we’ll analyze their popularity, users activity, quality of backlinks, traffic and further data.
How good is the post “Top 10 Express CSS Table Designs�
( polls)