In 2009, using clean, semantic markup with CSS is utterly uncontroversial. And yet many of the popular tutorials on the web have never really caught up. If they’ve been updated at all, at best they’ve grafted on a few extra articles about newer concepts.

The result of this sad state of affairs is that if you start learning HTML from scratch today, you’ll probably go through the same learning process as someone who started in the mid-1990s:

  1. Learn old-school HTML 3.2-style markup.
  2. Learn about CSS.
  3. Unlearn about half of your previous markup knowledge.
  4. Learn how to do things the “right” way.

The original “HTML 4.01 Tutorial” was my attempt to cover HTML in an integrated, modern way, incorporating CSS from the start. Even though I stopped working on the tutorial in 2002, over the years it drew many visitors searching for help with font styles, alignment, padding, and other basic HTML and CSS issues. This only increased my sense of guilt for leaving the tutorial unfinished.

Yes, the time has come to dust off the old tutorial and set it on the path to modernity. Here are some of the improvements:

  • Completeness. Yes, this version is actually finished, imagine that! Actually, “finished” is misleading, since no doubt there will be plenty of opportunities to add new sections and improve the old ones. The point is that the new tutorial won’t sort of trail off awkwardly like the old one did.

  • Less cruft. The previous version of the tutorial wasted a lot of verbiage on older browsers such as the infamous Netscape Navigator 4. Now that the lowest-common denominator is Internet Explorer 6, I’ve been able to clean that up.

  • More right stuff, less wrong stuff. Like many of today’s popular HTML guides, the old tutorial labored under an unfortunate confusion over the difference between a “tag” and an “element”. How embarrassing. This and other cringe-inducing errors are now fixed.

  • Relaxed license. The tutorial is available under the Creative Commons Attribution 3.0 Unported license. You are free to redistribute or create derivative works from this book, even for commercial purposes, as long as you attribute me properly. The previous version of the tutorial was also under a Creative Commons license, but a much stricter version.

Okay, that’s all well and good. But what does this tutorial not cover?

  • Javascript. Javascript is much more popular these days than it was back in 2002, but client-side scripting is well beyond the scope of this tutorial.

  • Server-side programming. Languages such as PHP, Perl, and Java are also out of scope. This is too bad, because it’s kind of hard to teach forms without them — you can design a form using HTML, but it doesn’t really do anything.

  • Advanced CSS Positioning. CSS Positioning is large and complicated enough to deserve a book all its own. This tutorial probably should cover some positioning concepts, but it’s such a thorny topic that for now, I’d rather point you to others.

See Also