When to use div’s and when not to

Standard
This post is over 11 years old and is probably out of date.

A common question in #web on Freenode IRC, goes something like this:

“Should I use

‘s or tables for my layout?”

The answer is, neither.

What most people call “using

‘s” is actually, CSS-P – CSS Positioning. This is the correct way to markup a page for styling using CSS, rather than putting all the display information into the page using tables. You should always use CSS-P for styling your website, this does not mean that you should never use tables, but that you should only use tables for tabular data.

You should also never use a

when another tag will do. Think about the following examples:

Using the following CSS, the following two HTML examples display the same:

  1.  #header {
  2.      color: red;
  3.      background-color: grey;
  4.      font-size: 32px;
  5.  }
  1.  <div id=header>
  2.      Welcome to my site!
  3.  div>
  1.  <h1 id=header>
  2.      Welcome to my site!
  3.  h1>

So why – you ask – does it matter which I use? Well, just looking at the two examples, the second one obviously denotes the text a 1st level header. The top one doesn’t give any information about the text contained in it.

This doesn’t mean you should never use a

, there are situations where you are styling something where you have no content (say, a drop-shadow on a paragraph which itself is marked up using

and has a different style).

I know I haven’t gone into much depth here, but thats the long and short of it as I see it. I hope that helps someone.

– Davey