How To Make a Web Site the Modern Way. Part 11: The New HTML5 Elements

I promised one last post on HTML elements. This is it. This one will be a quick tour through some of the new semantic HTML5 elements. I’ve been using them regularly for a while now and I’m still trying to wrap my head around the best way to use some of them (in this, I’m not alone.) Hopefully sharing what I’ve learned will help jump start your own work with the new stuff and will help my clarify my own thoughts on the new elements.

This should really be fun.

header

This is one of the most straightforward of the new elements. <div id="header"> becomes <header>. Done. When I’ve presented on HTML5 people just nod when I point this element out. Hopefully this one just makes sense.

One experimental note

One thing we’ve been experimenting with at work is using multiple headers on a page. The pattern looks like this:

<!DOCTYPE html>
<html lang="en">
<body> <header> <h1>site logo</h1>
</header> <section id="posts">
<header> <h1>This is our section header</h1> </header> <article> <header> <h1>This is our article header</h1> </header> <p>this is our article</p> <footer> <p>this is the post footer</p> </footer> </article> <section> <footer>
<p>site footer</p>
</footer> </body> </html>

The idea being- this is truly a copy and paste waiting to happen. The article is truly standalone. I’m not quite sure if I like it or not yet, but it’s a perfect example of why I’ve started using HTML5 wherever possible. There’s a lot to take in, so I figure the best way to wrap your head around it all is to roll up your sleeves and write some code.

footer

If header makes sense, footer should as well. There are a lot of <div id="footer">s out there.

nav

nav is for navigation elements. Looking at my markup for the blog@drunkenfist.com, you’ll see where I like to use nav and where I’ll stick to an unadorned UL.

I use it for the main site navigation (the clearest use), for the post-navigation (back and next, another clear use) and for the social media/contact links (the weakest use.) The first two are perfect, I think. The third use is a weaker case to me and looking at it today, I’m tempted to remove it from that section. The idea there was that it’s meta navigation, dealing with the breadth of my internet presence, not just the site. Chewing on that one…

I don’t use it for the WordPress archive and links lists. I don’t really feel like those are navigation. They’re more informational. So, no nav.

section

Section is defined like this:

The section element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content, typically with a heading.

Examples of sections would be chapters, the various tabbed pages in a tabbed dialog box, or the numbered sections of a thesis. A Web site’s home page could be split into sections for an introduction, news items, contact information.

Authors are encouraged to use the article element instead of the section element when it would make sense to syndicate the contents of the element.

The section element is not a generic container element. When an element is needed for styling purposes or as a convenience for scripting, authors are encouraged to use the div element instead. A general rule is that the section element is appropriate only if the element’s contents would be listed explicitly in the document’s outline.

So the general rule of thumb I use is to try to define the section, in terms of the content contained therein, before actually using one. That separates out a lot of structural uses. To look at DrunkenFist.com again, I use sections on my home page for events, site updates and my little collection of blog updates:

The outline is pretty good:

  1. Rob Larsen
    1. Home
      1. Art Portfolio
        1. Graffiti Art
        2. Comic Book Art
        3. Color Art
        4. Black and White Art
        5. Pencil Drawings
      2. Movies
        1. Hong Kong Cinema Articles, Reviews and Interviews
        2. Hollywood Film Reviews and Interviews
        3. Japanese Cinema Reviews
        4. Independent and Foreign Film Reviews
        5. An Index of Every Film Reviewed on The Site
      3. No Mod Required, Rob’s blog
      4. More about Rob Larsen and DrunkenFist.com
    2. Upcoming Speaking Engagements
    3. Current Art Shows
    4. New at the Site
    5. Blog Headlines
      1. No Mod Required
      2. HTML + CSS + JavaScript
      3. It’s All Just Comics
    6. Untitled Section
      1. Links:
    7. Untitled Section

More on the untitled sections later.

article

If it’s content and I can imagine someone copying and pasting the entire <article>…</article> then it’s an article.

One thing I haven’t tried is this, suggested in the spec:

When article elements are nested, the inner article elements represent articles that are in principle related to the contents of the outer article. For instance, a blog entry on a site that accepts user-submitted comments could represent the comments as article elements nested within the article element for the blog entry.

One of the ongoing debates is how to mark up blog comments. This is an interesting approach to that particular issue. Maybe on my current project?

Yes.

If you want an in-depth view of the differences between article and section, then check out Bruce Lawson’s article on the subject.

time

time represents, well, time. One thing to note is when using it within an article you should set the pubdate flag to indicate that it’s a publication date.

Here’s what that looks like:

<h1>How To Make a Web Site the Modern Way. Part 11: The New HTML5 Elements</h1>
    <p class="date">
      <time datetime="2010-05-08T09:18:49-04:00" pubdate>May 8th, 2010</time>
      by Rob Larsen  
    </p>  

aside

aside is a tricky one. Is it a sidebar? The more I think about it, the less I think it is. One reason is visible above. The first of the “Untitled sections” in the outline is an aside. So that mixed with a closer reading of the spec have lead me away from using asides for most generic sidebars. Depending on the content, some of them still might be asides, some might be sections, some might be navs and plenty will be generic divs.

One place I am comfortable with asides is visible in the context of a movie review on Drunkenfist.com.

To me, that seems like a good use case as defined in the spec:

[an aside is] a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content.”

figure

A figure, combined with a figcaption is meant to mark up a note, be it text or visual, illustrating a portion of an article. The figure is the added content and the figcaption is a semantically linked text accompanying caption. The figure can contain text, image(s) or video(s).


And that’s that.

The above is clearly not a comprehensive introduction to HTML5. There are a lot of pieces of the specification that it ignores. Still it should give you a good sense of the new semantic elements and how they’re used. I can’t stress how easy and how useful it is to start using these elements right now. There’s a lot to learn about and starting as soon as possible is the way to go.


And with that, we end our tour of HTML elements. It’s taken a while, but I think it’s been worth it.


Now, time for CSS

2 thoughts on “How To Make a Web Site the Modern Way. Part 11: The New HTML5 Elements

Leave a Reply

Your email address will not be published. Required fields are marked *