HTML5 fundamentals, Part 1: Getting your feet wet

HTML5 reflects the monumental changes in the way you now do business on the web and in the cloud. This article is the first in a four-part series designed to spotlight changes in HTML5, beginning with the new tags and page organization and providing high-level information on web page design, the creation of forms, the use and value of the APIs, and the creative possibilities that Canvas provides.

Grace Walker, IT Consultant, Walker Automated Services

Grace Walker, a partner in Walker Automated Services in Chicago, Illinois, is an IT consultant with a diverse background and broad experience. She has worked in IT as a manager, administrator, programmer, instructor, business analyst, technical analyst, systems analyst, and Web developer in various environments, including telecommunications, education, financial services, and software.



24 May 2011

Also available in Chinese Russian Japanese Vietnamese Spanish

HTML5 is a language designed to organize web content. It is intended to make web design and development easier by creating a standardized and intuitive UI markup language. HTML5 provides the means to dissect and compartmentalize your pages, and it allows you to create discrete components that are not only designed to organize your site logically but are also created to give your site syndication capabilities. HTML5 could be called the "information mapping approach to website design" because it incorporates the essence of information mapping, dividing and labeling information to make it easy to use and understand. This is the foundation of HTML5's dramatic semantic and aesthetic utility. HTML5 gives designers and developers of all levels the ability to publish to the world everything from simple text content to rich, interactive multimedia.

Frequently used acronyms

  • API: Application programming interface
  • CSS3: Cascading style sheet version 3
  • GUI: Graphical user interface
  • HTML: Hypertext Markup Language
  • HTML5: HTML version 5
  • SQL: Structured Query Language
  • UI: User interface

HTML5 provides effective data management, drawing, video, and audio tools. It facilitates the development of cross-browser applications for the web as well as portable devices. HTML5 is one of the technologies driving the advances in mobile cloud computing services, as it allows for greater flexibility, permitting the development of exciting and interactive websites. It also introduces new tags and enhancements, including an elegant structure, form controls, APIs, multimedia, database support, and significantly faster processing speed.

The new tags in HTML5 are highly evocative, encapsulating their role and use. Past versions of HTML used rather nondescript tags. However, HTML5 has highly descriptive, intuitive labels. It provides rich content labels that immediately identify the content. For example, the overworked <div> tag has been supplemented by the <section> and <article> tags. The addition of the <video>, <audio>, <canvas>, and <figure> tags also provides a more precise description of the specific type of content.

Develop skills on this topic

This content is part of a progressive knowledge path for advancing your skills. See HTML5 fundamentals.

HTML5 provides:

  • Tags that describe exactly what they are designed to contain
  • Enhanced network communications
  • Greatly improved general storage
  • Web Workers for running background processes
  • The WebSocket interface to establish continuous connection between the resident application and the server
  • Better retrieval of stored data
  • Improved page saving and loading speeds
  • Support for CSS3 to manage the GUI, which means that HTML5 can be content oriented
  • Improved browser form handling
  • An SQL-based database API that allows client-side, local storage.
  • Canvas and video, for adding graphics and video without installing third-party plug-ins
  • The Geolocation API specification, which uses smart phone location capabilities to incorporate mobile cloud services and applications
  • Enhanced forms that reduce the need to download JavaScript code, allowing more efficient communication between mobile devices and cloud servers

HTML5 creates a more engaging user experience: Pages designed using HTML5 can provide an experience similar to desktop applications. HTML5 also provides enhanced multiple platform development by combining the capability of APIs with the ubiquity of the browser. Using HTML5, developers can provide a modern application experience that smoothly crosses platforms.

When you say HTML5, you are using shorthand for continuous innovation. New tags, new methodologies, and a general development framework resting on the interplay of HTML5 and it two counterparts, CSS3 and JavaScript. This is the core of the client-centered application processing phenomena. In addition to the many desktop deployments of HTML5 technology's techniques and methods, HTML5 can be implemented in feature-rich web mobile phone browsers—a growing market, as witnessed by the popularity and pervasiveness of the Apple iPhone, Google Android, and phones running Palm webOS.

A critical aspect of HTML5's power is the information mapping—or content blocking, if you prefer—that produces a much more comprehensible process. You can see how effective this tool has become for design and development by its increasing domination of the web processing world.

HTML5 heralds the advent of a more effective semantic process at the text level and greater control over the construction and use of forms. All of these qualities and the many other fine points of HTML5 innovation are the basis for the growing domination of this paradigm. Many agency entities, commercial and otherwise—even many of those organizations most remotely involved with information processing and communications as their primary agency activity—are to one degree or another seized by the development of this growing phenomena.

HTML5 is not a magic lamp, and there is no genie. However, its technical and methodological assets have made it the next best thing to rubbing a lamp.

Plan the page

You are going to create a simple web page. During this process, I discuss several of the new tags that have been introduced in HTML5. To create an effective as well as an efficient web page, you must develop a plan that considers all the components you want to craft.

The page you create will have the high-level design shown in Figure 1. The page design contains a Header area, a Navigation area, an Article area that contains three sections, an Aside area, and, finally, the Footer area. This page is designed to work in the Google Chrome browser, eliminating some of the visual clutter that can accompany browser-compatibility issue rectification as well as hamper understanding of basic structure. The goal is to create a page that clearly delineates the use of the new HTML5 tags, showing how you can use them to create well-formed code and elegant page design.

Figure 1. Acme United web page plan
Box with smaller boxes within it showing the various components of the page.

In the process of creating this page, I touch on CSS3, which is required to properly render HTML5 pages. CSS3 is essential for the styling, navigation, and general feel of the HTML5 page. Its property groups, which you can find at the W3Schools CSS3 reference site (see Resources), includes some useful elements such as background, font, marquee, and animation.

Before you begin the page construction, however, you need to learn about a few of the new HTML5 tags.


The example Header area contains the page title and subtitle. You use the <header> tag to create the content for the Header area of the page. The <header> tag can contain the opening information about a <section> and an <article> in addition to the web page itself. The web page created here has a Header area for the page, which is shown in the high-level design, as well as a Header area inside the Article and Section areas. Listing 1 provides a <header> tag markup example.

Listing 1. <header> tag example
<header>
    <h1>Heading Text</h1>
    <p> Text or images can be included here</p>
    <p> Logos are frequently placed here too</p>
</header>

The <header> tag can also contain an <hgroup> tag, as shown in Listing 2. The <hgroup> tag groups headings together, using the <h1> to <h6> heading levels shown here with a main heading and a sub-heading.

Listing 2. <hgroup> tag example
<header>
    <hgroup>
          <h1>Main Heading</h1>
          <h2>Sub-heading </h2>
    </hgroup>
    <p> Text or images can be included here</p>
</header>

You create the Navigation area of the page using the <nav> tag. The <nav> element defines an area specifically intended for navigation. The <nav> tag should be used for the main site navigation, not to hold links contained in other areas of the page. The Navigation area can contain code like that shown in Listing 3.

Listing 3. <nav> tag example
<nav>
     <ul>
          <li><a href="#">Home</a></li>
          <li><a href="#">About Us</a></li>
          <li><a href="#">Our Products</a></li>
          <li><a href="#">Contact Us</a></li>
     </ul>
</nav>

The Article and Section areas

The page you are designing contains one Article section, which holds the actual content of the page. You use the <article> tag to create this area, and the tag defines content that can be used independently of the other content found on the page. For example, if you want to create an RSS feed, you can use <article> to uniquely identify the content. The <article> tag identifies content that can be removed and placed in another context and be completely understandable.

The Article area in the Acme United plan contains three Section areas. You create these areas using the <section> tag. A <section> contains related component areas of web content. The <section> tag—and the <article> tag, as well—can contain headers, footers, or any other components required to complete the section. The <section> tag is for grouping content. The content for both the <section> tag and the <article> tag usually starts with a <header> and ends with a <footer>, with the content for the tag in between.

The <section> tag can also contain <article> tags, just as the <article> tag can contain the <section> tag. The <section> tag should be used to group similar information, and the <article> tag should be used for information such as an article or a blog that can be removed and placed in a new context without affecting the meaning of the content. The <article> tag, as its name implies, provides a complete packet of information. In contrast, the <section> tag contains related information, but the information cannot be placed in a different context by itself, because its meaning would be lost.

See Listing 4 for an example of <article> and <section> tag usage.

Listing 4. <article> tag and <section> tag example
<article>
     <section>
          Content
     </section>
     <section>
          Content
     </section>
</article>
<section>
     <article>
          Content
     </article>
     <article>
          Content
     </article>
</section>

Image elements

Both the <section> and the <article> tags as well as the <header> and <footer> tags can contain the <figure> tag. You use this tag to include images, diagrams, and photos.

The <figure> tag can contain the <figcaption>, which in turn contains the caption for the figure contained in the <figure> tag, allowing you to enter a description that can tie the figure more closely to the content. Listing 5 provides an example of the <figure> and <figcaption> tag structure.

Listing 5. <figure> tag and <figcaption> tag example
<figure>
     <img src="/figure.jpg" width="304" height="228" alt="Picture">
     <figcaption>Caption for the figure</figcaption>
</figure>

Media elements

The <section> and <article> tags can also contain various media elements. HTML5 provides tags that quickly convey an understanding of their content. Media elements, such as music and video that were previously only embedded, can now be identified more precisely.

The <audio> tag identifies sound content, such as music or any other audio streams. The <audio> tag has attributes that control what, when, and how audio will be played. The attributes are src, preload, control, loop, and autoplay. In the example shown in Listing 6, the audio starts to play as soon as the page loads and will play continuously and provide controls so the user can stop or restart the audio.

Listing 6. <audio> tag example
<audio src="MyFirstMusic.ogg" controls autoplay loop>
     Your browser does not support the audio tag.
</audio>

The <video> tag allows you to broadcast video clips or streaming visual media. It has all the attributes of the <audio> tag plus three more: poster, width, and height. The poster attribute lets you identify an image to be used while the video is loading or in the unfortunate circumstance when the video won't load at all.

Listing 7 provides an example of the <video> tag structure.

Listing 7. <video> tag example
<video src="MyFirstMovie.ogg" controls="controls">
     Your browser does not support the video tag
</video>

The <video> and <audio> tags can contain the <Source> tag, which defines multimedia resources for <video> and <audio> tags. With this element, you specify alternative video and audio files from which the browser can then choose based on its media type or codec support. In Listing 8, there are two choices. If the WMA version of the file cannot be played in the browser being used, then try the MP3. Otherwise, display the message so the user knows why the audio is not available.

Listing 8. <source> tag example
<audio>
     <source src="/music/good_enough.wma" type="audio/x-ms-wma">
     <source src="/music/good_enough.mp3" type="audio/mpeg">
     <p>Your browser does not support the HTML 'audio' element.</p>
</audio>

The <embed> tag defines embedded content that can be brought into a page—for example, a plug-in for Adobe Flash SWF files. Listing 9 contains the type attribute, identifying the embedded source as a Flash file.

Listing 9. <embed> tag example
<embed src="MyFirstVideo.swf" type="application/x-shockwave-flash" />

In addition to the attributes src and type, the <embed> tag has height and width attributes.


The Aside area

You create the Aside area in the Acme United plan by using the <aside> tag. Think of this tag as holding supplementary content that is not part of the flow of the article it supplements. In magazines, asides are frequently used to highlight a point that was made in the article itself. The <aside> tag contains content that can be removed without affecting the information conveyed by the article, section, or page that contains it.

Listing 10 provides an example of the <aside> tag's usage.

Listing 10. <aside> tag example
<p>My family and I visited Euro Disney last year.</p>
<aside>
     <h4>Disney in France</h4>
     <p>Besides Euro Disney, there is a Disneyland in California.</p>
</aside>

The <footer> element contains information about a page, article, or section, such as the author or date of the article. As a page footer, it may contain copyright or other important legal information, as shown in Listing 11.

Listing 11. <footer> tag example
<footer>
     <p>Copyright 2011 Acme United. All rights reserved.</p>
</footer>

Constructing the page

Now that you know the basic tags needed to create an HTML5 page, let's begin to construct your page. You're going to construct a web page for Acme United. The completed page is shown in Figure 2 and can be downloaded for your use (see Download).

Figure 2. The Acme United web page
The Acme United web page

So, let's set up the page. First, there is the <!doctype>. In HTML5, the <!doctype> has been simplified: All you need to remember is html. This not only simplifies the entry for this tag, it also makes it more future-proof. Note that it is not called html5, just html. No matter how many versions of HTML may come and go, the <!doctype> can always be just html.

The <html> tag contains all the other HTML elements, excluding the <!doctype> tag. Every other element must be nested between the <html> and </html> tags. See Listing 12.

Listing 12. <!doctype> tag example
<!doctype html>
<html lang="en">

After indicating html and the English language, you have the <head> element, which can include scripts, browser support information, style sheet links, meta information, and other initialization functions. You can use these tags in the head section:

  • <base>
  • <link>
  • <meta>
  • <script>
  • <style>
  • <title>

The <title> tag is the holder for the actual title of the document and is a required <head> section element. It is the title that you see at the top of the browser when viewing the page. The <link> tag in Listing 13 identifies the CSS3 style sheet that will be used to render the HTML5 page. The style sheet called is main-stylesheet.css.

Listing 13. <head> tag example
<head>
     <title>HTML5 Fundamentals Example</title>
     <link rel="stylesheet" href="main-stylesheet.css"  />
</head>

You use the <body> tag next, followed by the <header> and <hgroup> tags, which were described earlier. The <h1> area in this example contains the name of your fictitious company, Acme United, and the <h2> area contains the information informing you that it is sub-titled "A Simple HTML5 Example." Listing 14 shows the markup.

Listing 14. <body> tag and <header> tag example
<body >
     <header>
          <hgroup>
               <h1>Acme United</h1>
               <h2>A Simple HTML5 Example</h2>
          </hgroup>
     </header>

The CSS3 used to set up the page so far is shown in Listing 15. First, you establish the font for the page, and then the particulars for the body. The dimensions of the body are defined, and then you design the header paragraph structure for first- and second-level heading tags. These are the headers that you will use for the page.

Listing 15. CSS3 example #1
* {
	font-family: Lucida Sans, Arial, Helvetica, sans-serif;
}

body {
	width: 800px;
	margin: 0em auto;
}

header h1 {
	font-size: 50px;
	margin: 0px;
	color: #006;
}

header h2 {
	font-size: 15px;
	margin: 0px;
	color: #99f;
	font-style: italic;
}

Listing 16 shows the <nav> tag, which is designed to handle the main site navigation.

Listing 16. <nav> example
<nav>
     <ul>
          <li><a href="#">Home</a></li>
          <li><a href="#">About Us</a></li>
          <li><a href="#">Contact Us</a></li>
     </ul>
</nav>

HTML5 also has a <menu> tag—a tag that has caused confusion for some designers and developers. The confusion stems from the fact that navigation is frequently referred to as the "navigation menu." The <menu> tag, which was deprecated in HTML version 4.01 and reborn in HTML5, is designed to enhance interactivity. It should not be used for the main navigation. The only tag that should be used for the main navigation is the <nav> tag. You will use the <menu> tag later in this example.

The formatting of the navigation is handled by CSS3. Each <nav> tag definition shown in Listing 17 represents a particular state of the <ul> and <li> elements inside the <nav> tag.

Listing 17. CSS3 example #2
nav ul {
	list-style: none;
	padding: 0px;
	display: block;
	clear: right;
	background-color: #99f;
	padding-left: 4px;
	height: 24px;
}
nav ul li {
	display: inline;
	padding: 0px 20px 5px 10px;
	height: 24px;
	border-right: 1px solid #ccc;
}

nav ul li a {
	color: #006;
	text-decoration: none;
	font-size: 13px;
	font-weight: bold;
}

nav ul li a:hover {
	color: #fff;
}

Next is the Article area. This area, defined by the <article> tag, includes its own <header> information. The <section> contained in the <article> also contains a <header> tag of its own. See Listing 18.

Listing 18. <article> and <section> example
<article>
     <header>
          <h1>
               <a href="#" title="Link to this post" rel="bookmark">Article Heading</a>
          </h1>
     </header>
     <p> Primum non nocere ad vitam Paramus . . . </p>
     <section>
          <header>
               <h1>This is the first section heading</h1>
          </header>
          <p>Scientia potentia est qua nocent docentp . . .</p>
     </section>

Listing 19 shows the CSS3 markup that renders this format. Note that the definition for the paragraph, header, and section areas are all defined for the <article> tag in which they are contained. The <h1> tag defined here does not have the same format as the <h1> tag defined for the page-level <h1> tag.

Listing 19. CSS3 example #3
article > header h1 {
	font-size: 40px;
	float: left;
	margin-left: 14px;
}

article > header h1 a {
	color: #000090;
	text-decoration: none;
}

article > section header h1 {
	font-size: 20px;
	margin-left: 25px;
}

article p {
	clear: both;
	margin-top: 0px;
	margin-left: 50px;
}

The second <section> tag in the <article> contains the same basic information as the first <section>, but this time you are going to use an <aside>, a <figure>, a <menu>, and a <mark> tag. See Listing 20.

The <aside> tag is used here to present information that is not part of the flow that encloses it. The <figure> tag includes a graphic of Stonehenge. This <section> also contains the <menu> tag, which you use to create buttons with the names of the four Muses. When one of the buttons is clicked, it provides information about that particular Muse. The <mark> tag is used inside the <p> tag to highlight the words veni, vidi, vici.

Listing 20. <article> and <section> example
<section>
     <header>
          <h1>Second section with mark, aside, menu & figure</h1>
     </header>
     <p class="next-to-aside"> . . .  <mark>veni, vidi, vici</mark>. Mater . . .</p>
     <aside>
          <p>This is an aside that has multiple lines. . . .</p>
     </aside>
     <menu label="File">
          <button type="button" onClick="JavaScript:alert('Clio . . .')">Clio</button>
          <button type="button" onClick="JavaScript:alert('Thalia . . .')">Thalia</button>
          <button type="button" onClick="JavaScript:alert
		                           ('Urania . . .')">Urania</button>
          <button type="button" onClick="JavaScript:alert
		                           ('Calliope . . .')">Calliope</button>
     </menu> 
     <figure><img src="stonehenge.jpg" alt="Stonehenge" width="200" height="131"/>
          <figcaption>Figure 1. Stonehenge</figcaption>
     </figure>
</section>

The CSS3 for this section included a new definition for the <p> tag that has a shorter width than the width you set for the page. This change allows the aside to float to the right without overlapping the text. Listing 21 shows the markup.

Listing 21. CSS3 example #4
article p.next-to-aside {
	width: 500px;
}

article >  section figure {
	margin-left: 180px;
	margin-bottom: 30px;
}

article > section > menu {  
	margin-left: 120px;
}	  

aside p {  
        position:relative;
        left:0px;
        top: -100px;
		z-index: 1;
        width: 200px;  
    	float: right;
	    font-style: italic; 
       	color: #99f;
}

Video section elements

This is the final component of the <article>: the video section. The example video is an ogg that auto-plays when the page is loaded, continuously loops, and provides controls for pausing and playing. In many contemporary instances, ogg videos use the extension ogv (the v for video), as shown in Listing 22. The <audio> tag works in the same way.

Listing 22. <article> and <section> example
     <section>
          <header>
               <h1>This is a video section</h1>
          </header>
          <p><video src="http://people.xiph.org/~maikmerten/demos/BigBuckBunny.ogv" 
                                controls autoplay loop>
                <div class="no-html5-video"><p>This video will work in 
                                Mozilla Firefox or Google Chrome only. </p>
                </div>
          </video></p>
     </section>
</article>

Listing 23 provides the CSS3 definitions for the video section.

Listing 23. CSS3 example #5
article > section video {
	height: 200px;
	margin-left: 180px;
}
	
article > section div.no-html5-video{
	height: 20px;
	text-align: center;
	color: #000090;
	font-size: 13px;
	font-style: italic;
	font-weight: bold ;
	background-color: #99f;
}

The footer and closing of the page are shown in Listing 24.

Listing 24. <footer> tag example
          <footer>
              <p>Copyright: 2011 Acme United. All rights reserved.</p>
          </footer>
     </body>
</html>

The CSS3 for the footer is shown in Listing 25.

Listing 25. CSS3 example #5
footer p {
	text-align: center;
	font-size: 12px;
	color: #888;
	margin-top: 24px;
}

Conclusion

The completion of your web page finishes the first part of this multipart series. The goal of this article was to introduce the new HTML5 regime. HTML5 is more than just an upgrade to HTML4: It is the new way to communicate digitally. With the functionality of CSS3 and JavaScript, HTML5 comes close to giving the developer the whole ball of wax in one pseudo-package. If you are willing to assimilate what you need from the vast amounts of HTML5 information out there for our common use, you will join the growing legion of competent HTML5 multimedia web designers and developers. The next installment in this series will look at how to code and format HTML5 forms.


Download

DescriptionNameSize
Sample HTML, CSS3 files HTML5Fundamentals.zip10KB

Resources

Learn

Discuss

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Select information in your profile (name, country/region, and company) is displayed to the public and will accompany any content you post. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into Web development on developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Web development
ArticleID=660316
ArticleTitle=HTML5 fundamentals, Part 1: Getting your feet wet
publish-date=05242011