Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Standard HTML5 Semantic Layout
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Title</title>
<link href="stylesheets/main.css" rel="stylesheet" />
</head>
<body>
<header>
<hgroup>
<h1>Header</h1>
<h2>Subheader</h2>
</hgroup>
</header>
<nav>
<ul>
<li><a href="#">Menu Option 1</a></li>
<li><a href="#">Menu Option 2</a></li>
</ul>
</nav>
<section>
<article>
<header>
<h1>Article #1</h1>
</header>
<section>
This is the first article.
</section>
</article>
<article>
<header>
<h1>Article #2</h1>
</header>
<section>
This is the second article.
</section>
</article>
</section>
<aside>
<section>
<h1>Links</h1>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
</ul>
</section>
<figure>
<img width="85" height="85"
src="http://domain.tld/path/to/image.jpg"
alt="foobar" />
<figcaption>Foobar</figcaption>
</figure>
</aside>
<footer>Footer</footer>
</body>
</html>

notes

  1. You may omit the <header> and it's decendants if it's only a sole headline and replace it with <h1>.
  2. In this example the navigation <nav> is a page specific navigation, hence after the page header <header>. If the <nav> is a global navigation, it might also be before the first page header <header>.
+-----------------------------------+
| header |
+-----------------------------------+
| nav |
+---------------------+-------------+
| | |
| section | aside |
| | |
| | |
| +-----------------+ | |
| | article | | |
| +-----------------+ | |
| | article | | |
| +-----------------+ | |
+---------------------+-------------+
| footer |
+-----------------------------------+
@ve3

This comment has been minimized.

Copy link

commented Jun 3, 2016

What about <main> element?
http://www.w3schools.com/html/html5_semantic_elements.asp said Specifies the main content of a document
Html5doctor also use <main> element for content area (section in your example).
http://html5doctor.com/the-main-element/

Which one is better for use in main column position?

@yumyo

This comment has been minimized.

Copy link

commented Jul 5, 2016

Sadly, it could not be considered best practice anymore as the HTML 5.1 specification

requires developers to use h1-h6 to convey document structure. The simple reason for this change is that the HTML5 document outline is not implemented and despite efforts to get it implemented, the general response from user agent developers has not been enthusiastic.

References:

Computer says NO to HTML5 document outline
HTML 5.1 specification

@neochrisneo

This comment has been minimized.

Copy link

commented May 2, 2017

You're going to want to use main for ARIA accessibility reasons

@serdarakkilic

This comment has been minimized.

Copy link

commented Jan 11, 2018

BTW
The only section in this example have to have some meaningful content besides the articles inside it. Otherwise articles will not add any value to the web sites content. You have to consider article as an independent content which will never change the meaning of a web page if removed completely.

if your page telling something about an "A subject", having articles about "A Subject" will add a value. However if you remove the articles, your page should still needs to tell about the "A subject". Otherwise the page will not be considered as a page that gives information about "A Subject". It will be considered as a page that lists articles about "A subject".

This is very important that you need to consider articles as independent content.

Also sections inside a page needs to tell about different things. Every section needs to have a heading that defines what it is telling about. do not afraid to use div's for your layouts. all the html5 tags has meanings and you have to use them correctly to receive its rewards.

@zrayev

This comment has been minimized.

Copy link

commented Mar 31, 2018

hgroup - depricated html tag

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.