Semantics

Content tends to become more semtantic as a consequence of employing CSS. Although the HTML tags become more abstract (DIV, SPAN, EM, etc..) the two HTML magic attributes: class and id are in a sense a dynamic mechanism for creating one's own markup language.

Of course, this markup language can have anywhere from a horrible design to superb one. It's up to the author to decide how extensive a vocabulary to build.

Let's clarify what I mean with an example: take a catalog of books. If you were to come up with a markup language, you might end up with xml looking like this:

<book isbn="1234">
 <title>Cooking French</title>
 <author>John Doe</author>
 <abstract>blah..</abstract>
</book>

Now consider an html alternative:

<div class="book" id="1234">
  <span class="title">Cooking French</span>
  <span class="author">John Doe</span>
  <span class="abstract">blah..</span>
</div>

The isbn could have alternatively been specified as an invented attribute. It could also have been made its own element. The span's could also have been div's instead. The point is that the new instruments of HTML: div, span, id, and class can be used as near equivalents to custom tags, all with the benefit of not having to define custom tags.

A major difference of course is that it's all loosely typed, so to speak. There's no xml schema for this "custom" HTML. One could say that the "new and improved" HTML is a mechanism for producing unofficial markup vocabularies.

Back to my original point though: using CSS pushes one to structure their HTML in a manner similar to the above. What we end up with (besides cleaner content) is more semantic content, which is good, and is something worth noticing.