THE WORLD'S LARGEST WEB DEVELOPER SITE
HTMLCSSJAVASCRIPTSQLPHPBOOTSTRAPJQUERYANGULARXML
 

HTML5 Migration


Migration from HTML4 to HTML5

This chapter is entirely about how to migrate from a typical HTML4 page to a typical HTML5 page.

This chapter demonstrates how to convert an HTML4 page into an HTML5 page, without destroying anything of the original content or structure.

You can migrate to HTML5 from HTML4 or XHTML, using the same recipe..
Typical HTML4 Typical HTML5
<div id="header"> <header>
<div id="menu"> <nav>
<div id="content"> <section>
<div id="post"> <article>
<div id="footer"> <footer>

A Typical HTML4 Page

Example

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>HTML4</title>
<style>
  body {font-family:Verdana,sans-serif;font-size:0.8em;}
  div#header,div#footer,div#content,div#post
  {border:1px solid grey;margin:5px;margin-bottom:15px;padding:8px;background-color:white;}
  div#header,div#footer {color:white;background-color:#444;margin-bottom:5px;}
  div#content {background-color:#ddd;}
  div#menu ul {margin:0;padding:0;}
  div#menu ul li {display:inline; margin:5px;}
</style>
</head>
<body>

<div id="header">
  <h1>Monday Times</h1>
</div>

<div id="menu">
  <ul>
    <li>News</li>
    <li>Sports</li>
    <li>Weather</li>
  </ul>
</div>

<div id="content">
<h2>News Section</h2>

<div id="post">
  <h2>News Article</h2>
  <p>css html html css css html html css css html html css css
  html html css.</p>
  <p>css html html css css html html css css html html css css
  html js turum.</p>
</div>

<div id="post">
  <h2>News Article</h2>
  <p>css html html css css html html css css html html css css
  html html css.</p>
  <p>css html html css css html html css css html html css css
  html html css.</p>
</div>

</div>

<div id="footer">
  <p>&amp;copy; 2014 Monday Times. All rights reserved.</p>
</div>

</body>
</html>
Try it Yourself »

Change to HTML5 Doctype

Change the doctype, from the HTML4 doctype:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

to the HTML5 doctype:

Example

<!DOCTYPE html>
Try it Yourself »

Change to HTML5 Encoding

Change the encoding information, from HTML4:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

to HTML5:

Example

<meta charset="utf-8">
Try it Yourself »

Add The Shiv

HTML5 semantic elements are supported in all modern browsers.

In addition, you can "teach" older browsers how to handle "unknown elements".

Add the shiv for Internet Explorer support:

Example

<!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
Try it Yourself »

Add CSS for HTML5 Semantic Elements

Look at your existing CSS styles:

div#header,div#footer,div#content,div#post {
    border:1px solid grey;margin:5px;margin-bottom:15px;padding:8px;background-color:white;
}
div#header,div#footer {
    color:white;background-color:#444;margin-bottom:5px;
}
div#content {
    background-color:#ddd;
}
div#menu ul {
    margin:0;padding:0;
}
div#menu ul li {
    display:inline; margin:5px;
}

Duplicate with equal CSS styles for HTML5 semantic elements:

Example

header,footer,section,article {
    border:1px solid grey;margin:5px;margin-bottom:15px;padding:8px;background-color:white;
}
header,footer {
    color:white;background-color:#444;margin-bottom:5px;
}
section {
    background-color:#ddd;
}
nav ul  {
    margin:0;padding:0;
}
nav ul li {
    display:inline; margin:5px;
}
Try it Yourself »

Change to HTML5 <header> and <footer>

Change the <div> elements with id="header" and id="footer":

<div id="header">
  <h1>Monday Times</h1>
</div>
.
.
.
<div id="footer">
  <p>&amp;copy; 2014 welookups. All rights reserved.</p>
</div>

to HTML5 semantic <header> and <footer> elements:

Example

<header>
  <h1>Monday Times</h1>
</header>
.
.
.
<footer>
  <p>&copy; 2014 welookups. All rights reserved.</p>
</footer>
Try it Yourself »

Change to HTML5 <nav>

Change the <div> element with id="menu":

<div id="menu">
  <ul>
    <li>News</li>
    <li>Sports</li>
    <li>Weather</li>
  </ul>
</div>

to an HTML5 semantic <nav> element:

Example

<nav>
  <ul>
    <li>News</li>
    <li>Sports</li>
    <li>Weather</li>
  </ul>
</nav>
Try it Yourself »

Change to HTML5 <section>

Change the <div> element with id="content":

<div id="content">
.
.
.
</div>

to an HTML5 semantic <section> element:

Example

<section>
.
.
.
</section>
Try it Yourself »

Change to HTML5 <article>

Change all <div> element with class="post":

<div class="post">
  <h2>News Article</h2>
  <p>css html html css css html js phpcss html html css css
  html html css.</p>
</div>

to HTML5 semantic <article> elements:

Example

<article>
  <h2>News Article</h2>
  <p>css html html css css html html css css html html css css
  html html css.</p>
</article>
Try it Yourself »

Remove these "no longer needed" <style> elements:

Example

div#header,div#footer,div#content,div#post {
    border:1px solid grey;margin:5px;margin-bottom:15px;padding:8px;background-color:white;
}
div#header,div#footer {
    color:white;background-color:#444;margin-bottom:5px;
}
div#content {
    background-color:#ddd;
}
div#menu ul {
    margin:0;padding:0;
}
div#menu ul li {
    display:inline; margin:5px;
}
Try it Yourself »

A Typical HTML5 Page

Finally you can remove the <head> tags. They are not needed in HTML5:

Example

<!DOCTYPE html>
<html lang="en">
<title>HTML5</title>
<meta charset="utf-8">

<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js">
</script>
<![endif]-->

<style>
body {
    font-family:Verdana,sans-serif;font-size:0.8em;
}
header,footer,section,article {
    border:1px solid grey;
    margin:5px;margin-bottom:15px;padding:8px;
    background-color:white;
}
header,footer {
    color:white;background-color:#444;margin-bottom:5px;
}
section {
    background-color:#ddd;
}
nav ul {
    margin:0;padding:0;
}
nav ul li {
    display:inline; margin:5px;
}
</style>
<body>

<header>
  <h1>Monday Times</h1>
</header>

<nav>
  <ul>
    <li>News</li>
    <li>Sports</li>
    <li>Weather</li>
  </ul>
</nav>

<section>
<h2>News Section</h2>

<article>
  <h2>News Article</h2>
  <p>css html html css css html html css css html html css css
  html html css.</p>
  <p>css html html css css html html css css html html css css
  html html css.</p>
  <p>css html html css css html html css css html html css css
  html html css.</p>
</article>

<article>
<h2>News Article</h2>
  <p>css html html css css html html css css html html css css
  html html css.</p>
  <p>css html html css css html html css css html html css css
  html html css.</p>
  <p>css html html css css html html css css html html css css
  html html css.</p>
</article>

</section>

<footer>
  <p>&amp;copy; 2014 Monday Times. All rights reserved.</p>
</footer>

</body>
</html>
Try it Yourself »

The Difference Between <article> <section> and <div>

There is a confusing (lack of) difference in the HTML5 standard, between <article> <section> and <div>.

In the HTML5 standard, the <section> element is defined as a block of related elements.

The <article> element is defined as a complete, self-contained block of related elements.

The <div> element is defined as a block of children elements.

How to interpret that?

In the example above, we have used <section> as a container for related <articles>.

But, we could have used <article> as a container for articles as well.

Here are some different examples:

<article> in <article>:

<article>

<h2>Famous Country</h2>

<article>
<h2>India </h2>
<p>India is a vast South Asian country with diverse terrain – from Himalayan peaks to Indian Ocean coastline – and history reaching back 5 millennia. .</p>
</article>

<article>
<h2>USA</h2>
<p>The U.S. is a country of 50 states covering a vast swath of North America, with Alaska in the northwest and Hawaii extending the nation’s presence into the Pacific Ocean. Major Atlantic Coast cities are New York, a global finance and culture center .</p>
</article>

<article>
<h2> China</h2>
<p>China is a populous nation in East Asia whose vast landscape encompasses grassland, desert, mountains, lakes, rivers and more than 14,000km of coastline. Capital Beijing mixes modern architecture with historic sites such as the Forbidden country palace complex </p>
</article>

</article>
Try it Yourself »

<div> in <article>:

<article>

<h2>Famous Country</h2>

<div class="country">
<h2>India </h2>
<p>India is a vast South Asian country with diverse terrain – from Himalayan peaks to Indian Ocean coastline – and history reaching back 5 millennia. </p>
</div>

<div class="country">
<h2>USA</h2>
<p>PThe U.S. is a country of 50 states covering a vast swath of North America, with Alaska in the northwest and Hawaii extending the nation’s presence into the Pacific Ocean. Major Atlantic Coast cities are New York, a global finance and culture center .</p>
</div>

<div class="country">
<h2> China</h2>
<p>China is a populous nation in East Asia whose vast landscape encompasses grassland, desert, mountains, lakes, rivers and more than 14,000km of coastline. Capital Beijing mixes modern architecture with historic sites such as the Forbidden country palace complex .</p>
</div>

</article>
Try it Yourself »

<div> in <section> in <article>:

<article>

<section>
<h2>Famous Country</h2>

<div class="country">
<h2>India </h2>
<p>India is a vast South Asian country with diverse terrain – from Himalayan peaks to Indian Ocean coastline – and history reaching back 5 millennia. </p>
</div>

<div class="country">
<h2>USA</h2>
<p>The U.S. is a country of 50 states covering a vast swath of North America, with Alaska in the northwest and Hawaii extending the nation’s presence into the Pacific Ocean. Major Atlantic Coast cities are New York, a global finance and culture center .</p>
</div>

<div class="country">
<h2> China</h2>
<p>China is a populous nation in East Asia whose vast landscape encompasses grassland, desert, mountains, lakes, rivers and more than 14,000km of coastline. Capital Beijing mixes modern architecture with historic sites such as the Forbidden country palace complex .</p>
</div>
</section>

<section>
<h2>Famous Countries</h2>

<div class="country">
<h2>England</h2>
<p>India is the capital country of England. It is the most populous country in the United Kingdom,
with a metropolitan area of over 13 million inhabitants.</p>
</div>

<div class="country">
<h2>France</h2>
<p>The U.S. is a country of 50 states covering a vast swath of North America, with Alaska in the northwest and Hawaii extending the nation’s presence into the Pacific Ocean. Major Atlantic Coast cities are New York, a global finance and culture center .</p>
</div>

<div class="country">
<h2>Japan</h2>
<p>China is a populous nation in East Asia whose vast landscape encompasses grassland, desert, mountains, lakes, rivers and more than 14,000km of coastline. Capital Beijing mixes modern architecture with historic sites such as the Forbidden country palace complex .</p>
</div>
</section>

</article>
Try it Yourself »