HTML5 semantic elements CSS
We doctors are a bunch of chums using HTML5 and writing about how we do it. Apart from spurious requests for medical advice, the questions we receive most are about using the section element, and we realise that we’ve been using the section element incorrectly all this time.
What we’ve been doing wrong is using section to wrap content in order to style it, or to demarcate the main content area from the nav, header, footer etc. These are jobs for div, not section.
The section element represents a generic document or application section…The section element is not a generic container element. When an element is needed only 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.
section is a blob of content that you could store as an individual record in a database. It generally looks like this (and note that the heading goes inside the section element, not immediately before it):
The theme of each section should be identified, typically by including a heading (h1–h6 element) as a child of the section element.
Check your work in the HTML 5 outliner tool. If you see any instances of “untitled section” that corresponds to a section, you’re probably doing it wrong. (It’s fine for a nav or aside element to be untitled, however).
Section is also the most generic of the sectioning elements. Make certain that you don’t really need an article, which is defined as
a complete, or self-contained, composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, a user-submitted comment, an interactive widget or gadget, or any other independent item of content.
What about main content?
Use the main element to mark up the main content area of a document. Dr. Rich Clark explains how to use The main element
Rules of thumb for using section
Of course, there are always exceptions, but these should give useful guidance for 99% of cases:
- Don’t use it just as hook for styling or scripting; that’s a div
- Don’t use it if article, aside or nav is more appropriate
- Don’t use it unless there is naturally a heading at the start of the section
- The revised spec (as of ) says:
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.
As blogposts and comments are often syndicated (by being pulled into other blogs or being linked via twitter, reddit etc) they should be articles.