HTML5 offers new tags and attributes that provide more power, efficiency, and flexibility for your Web development. Here are 10 tags you’ll want to check out.
HTML5 brings a host of new elements and attributes to allow developers to make their documents more easily understood by other systems (especially search engines!), display data more uniquely, and take on some of the load that has required complex JavaScript or browser plug-ins like Flash and Silverlight to handle. Here are 10 new items in HTML5 that will make it easier for you to write your Web sites.
1: <video> and <audio>
One of the biggest uses for Flash, Silverlight, and similar technologies is to get a multimedia item to play. With HTML5 supporting the new video and audio controls, those technologies are now relegated to being used for fallback status. The browser can now natively display the controls, and the content can be manipulated through JavaScript. Don’t let the codec confusion scare you away. You can specify multiple sources for content, so you can make sure that your multimedia will play regardless of what codecs the user’s browser supports.
2: <input> type attributes
The venerable <input> element now has a number of new values for the type attribute, and browsers do some pretty slick things depending on its value. For example, set type to “datetime” and browsers can show calendar/clock controls to pick the right time, a trick that used to require JavaScript. There is a wide variety of type attributes, and learning them (and the additional attributes that go with some of them) will eliminate the need for a lot of JavaScript work.
3: <canvas>
The <canvas> tag gives HTML a bitmapped surface to work with, much like what you would use with GDI+ or the .NET Image object. While <canvas> isn’t perfect (layers need to be replicated by using multiple canvas objects stacked on top of each other, for example), it is a great way to build charts and graphs, which have been a traditional weak spot in HTML, as well as custom graphics. And that is just a start!
4: <header> and <footer>
The <header> and <footer> tags are two of the new semantic tags available. These two tags do not get you anything above and beyond <div> for the actual display. But they will reap long-term rewards for your search engine efforts, since the search engines will be able to tell the difference between “content” and things that are important to the user but that aren’t the actual content.
5: <article> and <section>
The <article> and <section> tags are two more semantic tags that will boost your search engine visibility. Articles can be composed of multiple sections, and a section can have multiple articles. Confusing? Not really. An article represents a full block of content, and a section is a piece of a bigger whole. For example, if you are looking at a blog, the front page might have a section for the listing of all the posts, and each post would be an article with a section for the actual post and another for comments.
6: <output>
The new <output> tag is unique, in that it expects its content to be generated dynamically with JavaScript. It has a value attribute, which can be manipulated through the DOM with JavaScript to change what is displayed on the screen. This is much more convenient than the current ways of doing things.
7: <details>
It seems like every Web site needs to have an expanding/collapsing block of text. While this is easy enough to do with JavaScript or server-side code, the <details> tag makes it even easier. It does exactly what we’ve all been doing for years now: makes a simple block that expands and collapses the content when the header is clicked. The <details> tag does not have widespread support yet, but it will soon.
8: <figure> and <figcaption>
<figure> is a container for content (typically images, but it can be anything), and <figcaption> (which gets put inside the <figure> tag) provides a caption or subtitle for the contents of the <figure> tag. For example, you could have four images representing charts of sales growth within a <figure> tag, and a <figcaption> with text like “Year-to-year sales growth, 1989 – 1993.” The images would be shown next to each other with the text running below all four.
9: <progress>and <meter>
<progress> and <meter> are similar. You use <progress> for a task or a “measure how complete something is” scenario. It also has an indeterminate mode for something that has an unknown duration (like searching a database). The <meter> tag is for gauges and measurements of value (thermometers, quantity used, etc.). While they may look alike on the screen in many cases, they do have different semantic meanings.
10: <datalist>
The <datalist> tag acts like a combo box, where the system provides a pre-made list of suggestions, but users are free to type in their own input as well. There are tons of possible uses for this, such as a search box pre-populated with items based on the user’s history. This is another one of those things that currently requires a bunch of JavaScript (or JavaScript libraries) to handle but that can be done natively with HTML5.
The following tags (elements) have been introduced in HTML5 −
Tags (Elements) | Description |
---|---|
<article> | Represents an independent piece of content of a document, such as a blog entry or newspaper article |
<aside > | Represents a piece of content that is only slightly related to the rest of the page. |
<audio> | Defines an audio file. |
<canvas> | This is used for rendering dynamic bitmap graphics on the fly, such as graphs or games. |
<command> | Represents a command the user can invoke. |
<datalist> | Together with the a new list attribute for input can be used to make comboboxes |
<details> | Represents additional information or controls which the user can obtain on demand |
<embed> | Defines external interactive content or plugin. |
<figure> | Represents a piece of self-contained flow content, typically referenced as a single unit from the main flow of the document. |
<footer> | Represents a footer for a section and can contain information about the author, copyright information, et cetera. |
<header> | Represents a group of introductory or navigational aids. |
<hgroup> | Represents the header of a section. |
<keygen> | Represents control for key pair generation. |
<mark> | Represents a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context. |
<meter> | Represents a measurement, such as disk usage. |
<nav> | Represents a section of the document intended for navigation. |
<output> | Represents some type of output, such as from a calculation done through scripting. |
<progress> | Represents a completion of a task, such as downloading or when performing a series of expensive operations. |
<ruby> | Together with <rt> and <rp> allow for marking up ruby annotations. |
<section> | Represents a generic document or application section |
<time> | Represents a date and/or time. |
<video> | Defines a video file. |
<wbr> | Represents a line break opportunity. |
New types for <input> tag
The input element’s type attribute now has the following new values −
Type | Description |
---|---|
color | Color selector, which could be represented by a wheel or swatch picker |
date | Selector for calendar date |
datetime-local | Date and time display, with no setting or indication for time zones |
datetime | Full date and time display, including a time zone. |
Input type should be an email. | |
month | Selector for a month within a given year |
number | A field containing a numeric value only |
range | Numeric selector within a range of values, typically visualized as a slider |
search | Term to supply to a search engine. For example, the search bar atop a browser. |
tel | Input type should be telephone number. |
time | Time indicator and selector, with no time zone information |
url | Input type should be URL type. |
week | Selector for a week within a given year |