HTML N HTML 5 Tutorial
HTML N HTML 5 Tutorial
With our online HTML editor, you can edit the HTML, and click on a button to view the result.
Example
<!DOCTYPE html>
<html>
<body>
</body>
</html>
• Adobe Dreamweaver
• Microsoft Expression Web
However, for learning HTML we recommend a text editor like Notepad (PC) or TextEdit (Mac). We believe
using a simple text editor is a good way to learn HTML.
Follow the 4 steps below to create your first web page with Notepad.
Start
All Programs
Accessories
Notepad
When you save an HTML file, you can use either the .htm or the .html file extension. There is no difference, it
is entirely up to you.
Don't worry if the examples use tags you have not learned.
You will learn about them in the next chapters.
HTML Headings
HTML headings are defined with the <h1> to <h6> tags.
Example
<h1>This is a heading</h1>
<h2>This is a heading</h2>
<h3>This is a heading</h3>
Try it yourself »
HTML Paragraphs
HTML paragraphs are defined with the <p> tag.
Example
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
Try it yourself »
HTML Links
HTML links are defined with the <a> tag.
Example
<a href="http://www.w3schools.com">This is a link</a>
Try it yourself »
HTML Images
HTML images are defined with the <img> tag.
Example
<img src="w3schools.jpg" width="104" height="142">
HTML Elements
An HTML element is everything from the start tag to the end tag:
* The start tag is often called the opening tag. The end tag is often called the closing tag.
• The element content is everything between the start and the end tag
Tip: You will learn about attributes in the next chapter of this tutorial.
<body>
<p>This is my first paragraph.</p>
</body>
</html>
<body>
<p>This is my first paragraph.</p>
</body>
<html>
<body>
<p>This is my first paragraph.</p>
</body>
</html>
<p>This is a paragraph
<p>This is a paragraph
The example above works in most browsers, because the closing tag is considered optional.
Never rely on this. Many HTML elements will produce unexpected results and/or errors if you forget the end
tag .
<br> is an empty element without a closing tag (the <br> tag defines a line break).
Tip: In XHTML, all elements must be closed. Adding a slash inside the start tag, like <br />, is the proper way
of closing empty elements in XHTML (and XML).
W3Schools use lowercase tags because the World Wide Web Consortium (W3C) recommends lowercase in
HTML 4, and demands lowercase tags in XHTML.
HTML Attributes
« Previous
Next Chapter »
HTML Attributes
• HTML elements can have attributes
• Attributes provide additional information about an element
Attribute Example
HTML links are defined with the <a> tag. The link address is specified in the href attribute:
Example
<a href="http://www.w3schools.com">This is a link</a>
Try it yourself »
HTML Headings
Headings are defined with the <h1> to <h6> tags.
<h1> defines the most important heading. <h6> defines the least important heading.
Example
<h1>This is a heading</h1>
<h2>This is a heading</h2>
<h3>This is a heading</h3>
Try it yourself »
Note: Browsers automatically add some empty space (a margin) before and after each heading.
Search engines use your headings to index the structure and content of your web pages.
Since users may skim your pages by its headings, it is important to use headings to show the document
structure.
H1 headings should be used as main headings, followed by H2 headings, then the less important H3 headings,
and so on.
HTML Lines
The <hr>tag creates a horizontal line in an HTML page.
Example
<p>This is a paragraph.</p>
<hr>
<p>This is a paragraph.</p>
<hr>
<p>This is a paragraph.</p>
Try it yourself »
HTML Comments
Comments can be inserted into the HTML code to make it more readable and understandable. Comments are
ignored by the browser and are not displayed.
Example
<!-- This is a comment -->
Try it yourself »
HTML Paragraphs
Paragraphs are defined with the <p> tag.
Example
<p>This is a paragraph</p>
<p>This is another paragraph</p>
Try it yourself »
Note: Browsers automatically add an empty line before and after a paragraph.
Example
<p>This is a paragraph
<p>This is another paragraph
Try it yourself »
The example above will work in most browsers, but don't rely on it. Forgetting the end tag can produce
unexpected results or errors.
Note: Future version of HTML will not allow you to skip end tags.
Example
<p>This is<br>a para<br>graph with line breaks</p>
Try it yourself »
These HTML tags are called formatting tags (look at the bottom of this page for a complete reference).
<strong> or <em> means that you want the text to be rendered in a way that the user understands as
"important". Today, all major browsers render strong as bold and em as italics. However, if a browser one
day wants to make a text highlighted with the strong feature, it might be cursive for example and not bold!
Preformatted text
How to control the line breaks and spaces with the pre tag.
Address
How to define contact information for the author/owner of an HTML document.
Text direction
How to change the text direction.
Quotations
How to handle long and short quotations.
A hyperlink (or link) is a word, group of words, or image that you can click on to jump to another document.
When you move the cursor over a link in a Web page, the arrow will turn into a little hand.
The most important attribute of the <a> element is the href attribute, which indicates the link’s destination.
Example
<a href="http://www.w3schools.com/">Visit W3Schools</a>
Tip: The "Link text" doesn't have to be text. It can be an image or any other HTML element.
The example below will open the linked document in a new browser window or a new tab:
Example
<a href="http://www.w3schools.com/" target="_blank">Visit W3Schools!</a>
Try it yourself »
Tip: Bookmarks are not displayed in any special way. They are invisible to the reader.
Example
An anchor with an id inside an HTML document:
Create a link to the "Useful Tips Section" inside the same document:
Or, create a link to the "Useful Tips Section" from another page:
<a href="http://www.w3schools.com/html_links.htm#tips">
Visit the Useful Tips Section</a>
More Examples
An image as a link
How to use an image as a link.
Link to a location on the same page
How to link to a bookmark.
The following tags can be added to the head section: <title>, <style>, <meta>, <link>, <script>, <noscript>, and
<base>.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
The content of the document......
</body>
</html>
<head>
<base href="http://www.w3schools.com/images/" target="_blank">
</head>
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
Inside the <style> element you specify how HTML elements should render in a browser:
<head>
<style type="text/css">
body {background-color:yellow}
p {color:blue}
</style>
</head>
The HTML <meta> Element
Metadata is data (information) about data.
The <meta> tag provides metadata about the HTML document. Metadata will not be displayed on the page, but
will be machine parsable.
Meta elements are typically used to specify page description, keywords, author of the document, last modified,
and other metadata.
The metadata can be used by browsers (how to display content or reload page), search engines (keywords), or
other web services.
C o l o r s , B o x e s
and more...
Try it yourself
The preferred way to add CSS to HTML, is to put CSS syntax in separate CSS files.
However, in this HTML tutorial we will introduce you to CSS using the style attribute. This is done to simplify
the examples. It also makes it easier for you to edit the code and try it yourself.
To use inline styles, use the style attribute in the relevant tag. The style attribute can contain any CSS property.
The example below shows how to change the text color and the left margin of a paragraph:
Example
<!DOCTYPE html>
<html>
<body style="background-color:yellow;">
<h2 style="background-color:red;">This is a heading</h2>
<p style="background-color:green;">This is a paragraph.</p>
</body>
</html>
Try it yourself »
Example
<!DOCTYPE html>
<html>
<body>
<h1 style="font-family:verdana;">A heading</h1>
<p style="font-family:arial;color:red;font-size:20px;">A paragraph.</p>
</body>
</html>
Try it yourself »
The font-family, color, and font-size properties make the old <font> tag obsolete.
Example
<!DOCTYPE html>
<html>
<body>
<h1 style="text-align:center;">Center-aligned heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Try it yourself »
<head>
<style type="text/css">
body {background-color:yellow;}
p {color:blue;}
</style>
</head>
External Style Sheet
An external style sheet is ideal when the style is applied to many pages. With an external style sheet, you can
change the look of an entire Web site by changing one file. Each page must link to the style sheet using the
<link> tag. The <link> tag goes inside the <head> section:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<styl
Defines style information for a document
e>
Avoid using the elements: <font>, <center>, and <strike>, and the attributes: color and bgcolor.
HTML Images
« Previous
Next Chapter »
Example
Norwegian Mountain Trip
Try it yourself »
The <img> tag is empty, which means that it contains attributes only, and has no closing tag.
To display an image on a page, you need to use the src attribute. Src stands for "source". The value of the src
attribute is the URL of the image you want to display.
The URL points to the location where the image is stored. An image named "boat.gif", located in the "images"
directory on "www.w3schools.com" has the URL: http://www.w3schools.com/images/boat.gif.
The browser displays the image where the <img> tag occurs in the document. If you put an image tag between
two paragraphs, the browser shows the first paragraph, then the image, and then the second paragraph.
HTML Images - The Alt Attribute
The required alt attribute specifies an alternate text for an image, if the image cannot be displayed.
The alt attribute provides alternative information for an image if a user for some reason cannot view it (because
of slow connection, an error in the src attribute, or if the user uses a screen reader).
Tip: It is a good practice to specify both the height and width attributes for an image. If these attributes are set,
the space required for the image is reserved when the page is loaded. However, without these attributes, the
browser does not know the size of the image. The effect will be that the page layout will change during loading
(while the images load).
Note: When a web page is loaded, it is the browser, at that moment, that actually gets the image from a web
server and inserts it into the page. Therefore, make sure that the images actually stay in the same spot in relation
to the web page, otherwise your visitors will get a broken link icon. The broken link icon is shown if the
browser cannot find the image.
More Examples
Aligning images
How to align an image within the text.
<img
Defines an image
>
<ma
Defines an image-map
p>
HTML Tables
« Previous
Next Chapter »
Jill Smith 50
Eve Jackson 94
John Doe 80
Adam Johnson 67
HTML Tables
Tables are defined with the <table> tag.
A table is divided into rows (with the <tr> tag), and each row is divided into data cells (with the <td> tag). td
stands for "table data," and holds the content of a data cell. A <td> tag can contain text, links, images, lists,
forms, other tables, etc.
Table Example
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
<table border="1">
<tr>
<td>Row 1, cell 1</td>
<td>Row 1, cell 2</td>
</tr>
</table>
All major browsers display the text in the <th> element as bold and centered.
<table border="1">
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
Header 1 Header 2
More Examples
Tables without borders
How to create tables without borders.
Table headers
How to create table headers.
Cell padding
How to use cellpadding to create more white space between the cell content and its borders.
Cell spacing
How to use cellspacing to increase the distance between the cells.
<caption
Defines a table caption
>
HTML Lists
« Previous
Next Chapter »
The most common HTML lists are ordered and unordered lists:
HTML Lists
Try-It-Yourself Examples
Unordered list
How to create an unordered list in an HTML document.
Ordered list
How to create an ordered list in an HTML document.
The list items are marked with bullets (typically small black circles).
<ul>
<li>Coffee</li>
<li>Milk</li>
</ul>
• Coffee
• Milk
<ol>
<li>Coffee</li>
<li>Milk</li>
</ol>
1. Coffee
2. Milk
The <dl> tag is used in conjunction with <dt> (defines terms/names) and <dd> (describes each term/name):
<dl>
<dt>Coffee</dt>
<dd>- black hot drink</dd>
<dt>Milk</dt>
<dd>- white cold drink</dd>
</dl>
Coffee
Milk
More Examples
Different types of ordered lists
Demonstrates different types of ordered lists.
Different types of unordered lists
Demonstrates different types of unordered lists.
Nested list
Demonstrates how you can nest lists.
Nested list 2
Demonstrates a more complicated nested list.
Description list
Demonstrates a definition list.
<ol
Defines an ordered list
>
<ul
Defines an unordered list
>
<dl
Defines a description list
>
<dt
Defines a term/name in a description list
>
Next Chapter »
Block level elements normally start (and end) with a new line when displayed in a browser.
Examples: <h1>, <p>, <ul>, <table>
The <div> element has no special meaning. Except that, because it is a block level element, the browser will
display a line break before and after it.
When used together with CSS, the <div> element can be used to set style attributes to large blocks of content.
Another common use of the <div> element, is for document layout. It replaces the "old way" of defining layout
using tables. Using <table> elements for layout is not the correct use of <table>. The purpose of the <table>
element is to display tabular data.
When used together with CSS, the <span> element can be used to set style attributes to parts of the text.
HTML Layouts
« Previous
Next Chapter »
Web page layout is very important to make your website look good.
Website Layouts
Most websites have put their content in multiple columns (formatted like a magazine or newspaper).
Multiple columns are created by using <div> or <table> elements. CSS are used to position elements, or to
create backgrounds or colorful look for the pages.
Even though it is possible to create nice layouts with HTML tables, tables were designed for
presenting tabular data - NOT as a layout tool!
The following example uses five div elements to create a multiple column layout, creating the same result as in
the previous example:
Example
<!DOCTYPE html>
<html>
<body>
</div>
</body>
</html>
Try it yourself »
Copyright © W3Schools.com
Multiple columns are created by using <div> or <table> elements. CSS are used to position elements, or to
create backgrounds or colorful look for the pages.
Using <table> to create a nice layout is NOT the correct use of the element. The purpose of
the <table> element is to display tabular data!
The following example uses a table with 3 rows and 2 columns - the first and last row spans both columns using
the colspan attribute:
Example
<!DOCTYPE html>
<html>
<body>
<tr>
<td style="background-color:#FFD700;width:100px;">
<b>Menu</b><br>
HTML<br>
CSS<br>
JavaScript
</td>
<td style="background-color:#EEEEEE;height:200px;width:400px;">
Content goes here</td>
</tr>
<tr>
<td colspan="2" style="background-color:#FFA500;text-align:center;">
Copyright © W3Schools.com</td>
</tr>
</table>
</body>
</html>
Try it yourself »
Menu
HTML
Content goes here
CSS
JavaScript
Copyright © W3Schools.com
Tip: Because advanced layouts take time to create, a quicker option is to use a template. Search Google for free
website templates (these are pre-built website layouts you can use and customize).
Next Chapter »
HTML Forms
HTML forms are used to pass data to a server.
An HTML form can contain input elements like text fields, checkboxes, radio-buttons, submit buttons and
more. A form can also contain select lists, textarea, fieldset, legend, and label elements.
<form>
.
input elements
.
</form>
An <input> element can vary in many ways, depending on the type attribute. An <input> element can be of type
text field, checkbox, password, radio button, submit button, and more.
Text Fields
<input type="text"> defines a one-line input field that a user can enter text into:
<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>
First name:
Last name:
Note: The form itself is not visible. Also note that the default width of a text field is 20 characters.
Password Field
<input type="password"> defines a password field:
<form>
Password: <input type="password" name="pwd">
</form>
Password:
Note: The characters in a password field are masked (shown as asterisks or circles).
Radio Buttons
<input type="radio"> defines a radio button. Radio buttons let a user select ONLY ONE of a limited number of
choices:
<form>
<input type="radio" name="sex" value="male">Male<br>
<input type="radio" name="sex" value="female">Female
</form>
Male
Female
Checkboxes
<input type="checkbox"> defines a checkbox. Checkboxes let a user select ZERO or MORE options of a
limited number of choices.
<form>
<input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car
</form>
I have a bike
I have a car
Submit Button
<input type="submit"> defines a submit button.
A submit button is used to send form data to a server. The data is sent to the page specified in the form's action
attribute. The file defined in the action attribute usually does something with the received input:
Username:
If you type some characters in the text field above, and click the "Submit" button, the browser will send your
input to a page called "html_form_action.asp". The page will show you the received input.
Checkboxes
How to create checkboxes. A user can select or unselect a checkbox.
Textarea
How to create a multi-line text input control. In a text-area the user can write an unlimited number of characters.
Create a button
How to create a button.
Form Examples
Fieldset around form-data
How to create a border around elements in a form.
Tag Description
<keygen>
Defines a key-pair generator field (for forms)
New
<output>N
Defines the result of a calculation
ew
HTML Iframes
<iframe src="URL"></iframe>
The attribute values are specified in pixels by default, but they can also be in percent (like "80%").
Example
<iframe src="demo_iframe.htm" width="200" height="200"></iframe>
Try it yourself »
Example
<iframe src="demo_iframe.htm" frameborder="0"></iframe>
Try it yourself »
The target attribute of a link must refer to the name attribute of the iframe:
Example
<iframe src="demo_iframe.htm" name="iframe_a"></iframe>
<p><a href="http://www.w3schools.com" target="iframe_a">W3Schools.com</a></p>
Try it yourself »
HTML Colors
« Previous
Next Chapter »
Color Values
HTML colors are defined using a hexadecimal notation (HEX) for the combination of Red, Green, and Blue
color values (RGB).
The lowest value that can be given to one of the light sources is 0 (in HEX: 00). The highest value is 255 (in
HEX: FF).
HEX values are specified as 3 pairs of two-digit numbers, starting with a # sign.
Color Values
Color Color HEX Color RGB
#000000 rgb(0,0,0)
#FF0000 rgb(255,0,0)
#00FF00 rgb(0,255,0)
#0000FF rgb(0,0,255)
rgb(255,255,0
#FFFF00
)
rgb(0,255,255
#00FFFF
)
rgb(255,0,255
#FF00FF
)
rgb(192,192,1
#C0C0C0
92)
rgb(255,255,2
#FFFFFF
55)
Try it yourself »
If you look at the color table below, you will see the result of varying the red light from 0 to 255, while keeping
the green and blue light at zero.
To see the full list of color mixes when RED varies from 0 to 255, click on one of the HEX or RGB values
below.
Color
Red Light Color RGB
HEX
#00000
rgb(0,0,0)
0
#08000
rgb(8,0,0)
0
#10000
rgb(16,0,0)
0
#18000
rgb(24,0,0)
0
#20000
rgb(32,0,0)
0
#28000
rgb(40,0,0)
0
#30000
rgb(48,0,0)
0
#38000
rgb(56,0,0)
0
#40000
rgb(64,0,0)
0
#48000
rgb(72,0,0)
0
#50000
rgb(80,0,0)
0
#58000
rgb(88,0,0)
0
#60000
rgb(96,0,0)
0
#68000
rgb(104,0,0)
0
#70000
rgb(112,0,0)
0
#78000
rgb(120,0,0)
0
#80000
rgb(128,0,0)
0
#88000
rgb(136,0,0)
0
#90000
rgb(144,0,0)
0
#98000
rgb(152,0,0)
0
#A0000 rgb(160,0,0)
0
#A8000
rgb(168,0,0)
0
#B0000
rgb(176,0,0)
0
#B8000
rgb(184,0,0)
0
#C0000
rgb(192,0,0)
0
#C8000
rgb(200,0,0)
0
#D0000
rgb(208,0,0)
0
#D8000
rgb(216,0,0)
0
#E0000
rgb(224,0,0)
0
#E8000
rgb(232,0,0)
0
#F0000
rgb(240,0,0)
0
#F8000
rgb(248,0,0)
0
#FF000
rgb(255,0,0)
0
Shades of Gray
Gray colors are created by using an equal amount of power to all of the light sources.
To make it easier for you to select the correct shade, we have created a table of gray shades for you:
Color
Gray Shades Color RGB
HEX
#000000 rgb(0,0,0)
#080808 rgb(8,8,8)
#101010 rgb(16,16,16)
#181818 rgb(24,24,24)
#202020 rgb(32,32,32)
#282828 rgb(40,40,40)
#303030 rgb(48,48,48)
#383838 rgb(56,56,56)
#404040 rgb(64,64,64)
#484848 rgb(72,72,72)
#505050 rgb(80,80,80)
#585858 rgb(88,88,88)
#606060 rgb(96,96,96)
rgb(104,104,1
#686868
04)
rgb(112,112,1
#707070
12)
rgb(120,120,1
#787878
20)
rgb(128,128,1
#808080
28)
rgb(136,136,1
#888888
36)
rgb(144,144,1
#909090
44)
rgb(152,152,1
#989898
52)
rgb(160,160,1
#A0A0A0
60)
rgb(168,168,1
#A8A8A8
68)
rgb(176,176,1
#B0B0B0
76)
rgb(184,184,1
#B8B8B8
84)
#C0C0C0 rgb(192,192,1
92)
rgb(200,200,2
#C8C8C8
00)
#D0D0D rgb(208,208,2
0 08)
#D8D8D rgb(216,216,2
8 16)
rgb(224,224,2
#E0E0E0
24)
rgb(232,232,2
#E8E8E8
32)
rgb(240,240,2
#F0F0F0
40)
rgb(248,248,2
#F8F8F8
48)
rgb(255,255,2
#FFFFFF
55)
The 216 cross-browser color palette was created to ensure that all computers would display the colors correctly
when running a 256 color palette.
This is not important today, since most computers can display millions of different colors. Anyway, here is the
list:
Next Chapter »
Tip: The 17 standard colors are: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, orange,
purple, red, silver, teal, white, and yellow.
Click on a color name (or a hex value) to view the color as the background-color along with different text
colors:
MediumAquaMarin
#66CDAA Shades Mix
e
MediumSpringGre
#00FA9A Shades Mix
en
Next Chapter »
HTML Scripts
« Previous
Next Chapter »
The <script> element either contains scripting statements or it points to an external script file through the src
attribute.
Common uses for JavaScript are image manipulation, form validation, and dynamic changes of content.
Try it yourself »
The <noscript> element can contain all the elements that you can find inside the <body> element of a normal
HTML page.
The content inside the <noscript> element will only be displayed if scripts are not supported, or are disabled in
the user’s browser:
Example
<script>
document.write("Hello World!")
</script>
<noscript>Sorry, your browser does not support JavaScript!</noscript>
Try it yourself »
Try it yourself »
JavaScript can react to events:
<button type="button" onclick="myFunction()">Click Me!</button>
Try it yourself »
Try it yourself »
HTML Entities
« Previous
Next Chapter »
HTML Entities
Some characters are reserved in HTML.
It is not possible to use the less than (<) or greater than (>) signs in your text, because the browser will mix
them with tags.
To actually display reserved characters, we must use character entities in the HTML source code.
&entity_name;
OR
&#entity_number;
Tip: The advantage of using an entity name, instead of a number, is that the name is easier to remember.
However, the disadvantage is that browsers may not support all entity names (the support for entity numbers is
very good).
Non-breaking Space
A common character entity used in HTML is the non-breaking space ( ).
Browsers will always truncate spaces in HTML pages. If you write 10 spaces in your text, the browser will
remove 9 of them, before displaying the page. To add spaces to your text, you can use the character
entity.
non-breaking
 
space
registered
® ® ®
trademark
For a complete reference of all character entities, visit our HTML Entities Reference.
Next Chapter »
A URL can be composed of words, such as "w3schools.com", or an Internet Protocol (IP) address:
192.68.20.50. Most people enter the name of the website when surfing, because names are easier to remember
than numbers.
When you click on a link in an HTML page, an underlying <a> tag points to an address on the world wide web.
A Uniform Resource Locator (URL) is used to address a document (or other data) on the world wide web.
scheme://host.domain:port/path/filename
Explanation:
• scheme - defines the type of Internet service. The most common type is http
• host - defines the domain host (the default host for http is www)
• port - defines the port number at the host (the default port number for http is 80)
• path - defines a path at the server (If omitted, the document must be stored at the root
directory of the web site)
Scheme Short for.... Which pages will the scheme be used for...
Secure HyperText Transfer Secure web pages. All information exchanged are
https
Protocol encrypted
URL Encoding
URLs can only be sent over the Internet using the ASCII character-set.
Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII
format.
URL encoding converts characters into a format that can be transmitted over the Internet.
URL encoding replaces non ASCII characters with a "%" followed by two hexadecimal digits.
URLs cannot contain spaces. URL encoding normally replaces a space with a + sign.
Try It Yourself
If you click the "Submit" button below, the browser will URL encode the input before it is sent to the server. A
page at the server will display the received input.
Hello Günter
€ %80
£ %A3
© %A9
® %AE
À %C0
Á %C1
 %C2
à %C3
Ä %C4
Å %C5
For a complete reference of all URL encodings, visit our URL Encoding Reference.
HTML5 Introduction
« Previous
Next Chapter »
HTML5
• New Elements
• New Attributes
• 2D/3D Graphics
• Local Storage
• Web Applications
•
Examples in Each Chapter
With our HTML editor, you can edit the HTML, and click on a button to view the result.
Example
<!DOCTYPE HTML>
<html>
<body>
</body>
</html>
Try it yourself »
What is HTML5?
HTML5 will be the new standard for HTML.
The previous version of HTML, HTML 4.01, came in 1999. The web has changed a lot since then.
HTML5 is still a work in progress. However, the major browsers support many of the new HTML5 elements
and APIs.
WHATWG was working with web forms and applications, and W3C was working with XHTML 2.0. In 2006,
they decided to cooperate and create a new version of HTML.
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
The content of the document......
</body>
</html>
• New form controls, like calendar, date, time, email, url, search
Browser Support for HTML5
HTML5 is not yet an official standard, and no browsers have full HTML5 support.
But all major browsers (Safari, Chrome, Firefox, Opera, Internet Explorer) continue to add new HTML5
features to their latest versions.
HTML5 References
At W3Schools you will find complete references about tags, global attributes, standard events, and more.
HTML5 Reference
Today, several elements in HTML 4.01 are obsolete, never used, or not used the way they were intended. All
those elements are removed or re-written in HTML5.
To better handle today's internet use, HTML5 also includes new elements for drawing graphics, adding media
content, better page structure, better form handling, and several APIs to drag/drop elements, find Geolocation,
include web storage, application cache, web workers, etc.
Tag Description
<article> Defines an article
<aside> Defines content aside from the page content
<bdi> Isolates a part of text that might be formatted in a different direction from other text outside it
<command> Defines a command button that a user can invoke
<details> Defines additional details that the user can view or hide
<dialog> Defines a dialog box or window
<summary> Defines a visible heading for a <details> element
<figure> Specifies self-contained content, like illustrations, diagrams, photos, code listings, etc.
<figcaption> Defines a caption for a <figure> element
<footer> Defines a footer for a document or section
<header> Defines a header for a document or section
<mark> Defines marked/highlighted text
<meter> Defines a scalar measurement within a known range (a gauge)
<nav> Defines navigation links
<progress> Represents the progress of a task
<ruby> Defines a ruby annotation (for East Asian typography)
<rt> Defines an explanation/pronunciation of characters (for East Asian typography)
<rp> Defines what to show in browsers that do not support ruby annotations
<section> Defines a section in a document
<time> Defines a date/time
<wbr> Defines a possible line-break
Removed Elements
The following HTML 4.01 elements are removed from HTML5:
• <acronym>
• <applet>
• <basefont>
• <big>
• <center>
• <dir>
• <font>
• <frame>
• <frameset>
• <noframes>
• <strike>
• <tt>
HTML5 Canvas
« Previous
Next Chapter »
The <canvas> element is used to draw graphics, on the fly, on a web page.
Draw a red rectangle, a gradient rectangle, a multicolor rectangle, and some multicolor text onto the canvas:
What is Canvas?
The HTML5 <canvas> element is used to draw graphics, on the fly, via scripting (usually JavaScript).
The <canvas> element is only a container for graphics. You must use a script to actually draw the graphics.
Canvas has several methods for drawing paths, boxes, circles, characters, and adding images.
Browser Support
Internet Explorer 9+, Firefox, Opera, Chrome, and Safari support the <canvas> element.
Note: Internet Explorer 8 and earlier versions, do not support the <canvas> element.
Create a Canvas
A canvas is a rectangular area on an HTML page, and it is specified with the <canvas> element.
Note: Always specify an id attribute (to be referred to in a script), and a width and height attribute to define the
size of the canvas.
Tip: You can have multiple <canvas> elements on one HTML page.
Example
<canvas id="myCanvas" width="200" height="100"
style="border:1px solid #000000;">
</canvas>
Try it yourself »
Example
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
</script>
Try it yourself »
Example explained:
var c=document.getElementById("myCanvas");
Then, call its getContext() method (you must pass the string "2d" to the getContext() method):
var ctx=c.getContext("2d");
The getContext("2d") object is a built-in HTML5 object, with many properties and methods for drawing paths,
boxes, circles, text, images, and more.
The next two lines draw a red rectangle:
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
The fillStyle property can be a CSS color, a gradient, or a pattern. The default fillStyle is #000000 (black).
The fillRect(x,y,width,height) method draws a rectangle filled with the current fill style.
Canvas Coordinates
The canvas is a two-dimensional grid.
This means: Start at the upper-left corner (0,0) and draw a 150x75 pixels rectangle.
Coordinates Example
Canvas - Paths
To draw straight lines on a canvas, we will use the following two methods:
To actually draw the line, we must use one of the "ink" methods, like stroke().
Example
Define a starting point in position (0,0), and an ending point in position (200,100). Then use the stroke() method
to actually draw the line:
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();
Try it yourself »
• arc(x,y,r,start,stop)
To actually draw the circle, we must use one of the "ink" methods, like stroke() or fill().
Example
Create a circle with the arc() method:
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
Try it yourself »
Canvas - Text
To draw text on a canvas, the most important property and methods are:
Using fillText():
Example
Write a 30px high filled text on the canvas, using the font "Arial":
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello World",10,50);
Try it yourself »
Using strokeText():
Example
Write a 30px high text (no fill) on the canvas, using the font "Arial":
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.strokeText("Hello World",10,50);
Try it yourself »
Canvas - Gradients
Gradients can be used to fill rectangles, circles, lines, text, etc. Shapes on the canvas are not limited to solid
colors.
Once we have a gradient object, we must add two or more color stops.
The addColorStop() method specifies the color stops, and its position along the gradient. Gradient positions can
be anywhere between 0 to 1.
To use the gradient, set the fillStyle or strokeStyle property to the gradient, and then draw the shape, like a
rectangle, text, or a line.
Using createLinearGradient():
Example
Create a linear gradient. Fill rectangle with the gradient:
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// Create gradient
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
Try it yourself »
Using createRadialGradient():
Example
Create a radial/circular gradient. Fill rectangle with the gradient:
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// Create gradient
var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
Try it yourself »
Canvas - Images
To draw an image on a canvas, we will use the following method:
• drawImage(image,x,y)
Image to use:
Example
Draw the image onto the canvas:
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");
ctx.drawImage(img,10,10);
Try it yourself »
Next Chapter »
What is SVG?
• SVG stands for Scalable Vector Graphics
• SVG is used to define vector-based graphics for the Web
• SVG graphics do NOT lose any quality if they are zoomed or resized
SVG Advantages
Advantages of using SVG over other image formats (like JPEG and GIF) are:
• SVG images can be created and edited with any text editor
• SVG images can be searched, indexed, scripted, and compressed
• SVG images are zoomable (and the image can be zoomed without degradation)
Browser Support
Internet Explorer 9+, Firefox, Opera, Chrome, and Safari support inline SVG.
Embed SVG Directly Into HTML Pages
In HTML5, you can embed SVG elements directly into your HTML page:
Example
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Try it yourself »
Result:
SVG is XML based, which means that every element is available within the SVG DOM. You can attach
JavaScript event handlers for an element.
In SVG, each drawn shape is remembered as an object. If attributes of an SVG object are changed, the browser
can automatically re-render the shape.
Canvas is rendered pixel by pixel. In canvas, once the graphic is drawn, it is forgotten by the browser. If its
position should be changed, the entire scene needs to be redrawn, including any objects that might have been
covered by the graphic.
• Resolution independent
• Resolution dependent
• Support for event handlers
• No support for event handlers
• Best suited for applications with large
• Poor text rendering capabilities
rendering areas (Google Maps)
• You can save the resulting image as .png
• Slow rendering if complex (anything that
or .jpg
uses the DOM a lot will be slow)
• Well suited for graphic-intensive games
• Not suited for game applications
Next Chapter »
In HTML5, drag and drop is part of the standard, and any element can be draggable.
Browser Support
Internet Explorer 9+, Firefox, Opera, Chrome, and Safari support drag and drop.
function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
</body>
</html>
Try it yourself »
It might seem complicated, but lets go through all the different parts of a drag and drop event.
<img draggable="true">
What to Drag - ondragstart and setData()
Then, specify what should happen when the element is dragged.
In the example above, the ondragstart attribute calls a function, drag(event), that specifies what data to be
dragged.
The dataTransfer.setData() method sets the data type and the value of the dragged data:
function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}
In this case, the data type is "Text" and the value is the id of the draggable element ("drag1").
By default, data/elements cannot be dropped in other elements. To allow a drop, we must prevent the default
handling of the element.
This is done by calling the event.preventDefault() method for the ondragover event:
event.preventDefault()
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
Code explained:
• Call preventDefault() to prevent the browser default handling of the data (default is open
as link on drop)
• Get the dragged data with the dataTransfer.getData("Text") method. This method will
return any data that was set to the same type in the setData() method
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#div1, #div2
</style>
<script>
function allowDrop(ev)
ev.preventDefault();
function drag(ev)
ev.dataTransfer.setData("Text",ev.target.id);
function drop(ev)
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
</body>
</html>
HTML5 Geolocation
« Previous
Next Chapter »
Since this can compromise user privacy, the position is not available unless the user approves it.
Browser Support
Internet Explorer 9+, Firefox, Chrome, Safari and Opera support Geolocation.
Note: Geolocation is much more accurate for devices with GPS, like iPhone.
The example below is a simple Geolocation example returning the latitude and longitude of the user's position:
Example
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>
Try it yourself »
Example explained:
• The showPosition() function gets the displays the Latitude and Longitude
The example above is a very basic Geolocation script, with no error handling.
Example
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}
Try it yourself »
Error Codes:
Example
function showPosition(position)
{
var latlon=position.coords.latitude+","+position.coords.longitude;
var img_url="http://maps.googleapis.com/maps/api/staticmap?center="
+latlon+"&zoom=14&size=400x300&sensor=false";
document.getElementById("mapholder").innerHTML="<img src='"+img_url+"'>";
}
Try it yourself »
In the example above we use the returned latitude and longitude data to show the location in a Google map
(using a static image).
Google Map Script
How to use a script to show an interactive map with a marker, zoom and drag options.
Location-specific Information
This page demonstrated how to show a user's position on a map. However, Geolocation is also very useful for
location-specific information.
Examples:
Property Description
coords.altitudeAccu
The altitude accuracy of position
racy
Example
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.watchPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>
Try it yourself »
HTML5 Video
« Previous
Next Chapter »
Many modern websites show videos. HTML5 provides a standard for showing them.
Today, most videos are shown through a plug-in (like flash). However, different browsers may have different
plug-ins.
HTML5 defines a new element which specifies a standard way to embed a video/movie on a web page: the
<video> element.
Browser Support
Internet Explorer 9+, Firefox, Opera, Chrome, and Safari support the <video> element.
Note: Internet Explorer 8 and earlier versions, do not support the <video> element.
Example
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
Try it yourself »
The control attribute adds video controls, like play, pause, and volume.
It is also a good idea to always include width and height attributes. If height and width are set, the space
required for the video is reserved when the page is loaded. However, without these attributes, the browser does
not know the size of the video, and cannot reserve the appropriate space to it. The effect will be that the page
layout will change during loading (while the video loads).
You should also insert text content between the <video> and </video> tags for browsers that do not support the
<video> element.
The <video> element allows multiple <source> elements. <source> elements can link to different video files.
The browser will use the first recognized format.
Internet
YES NO NO
Explorer 9+
Safari 5+ YES NO NO
• MP4 = MPEG 4 files with H264 video codec and AAC audio codec
• WebM = WebM files with VP8 video codec and Vorbis audio codec
• Ogg = Ogg files with Theora video codec and Vorbis audio codec
MP4 video/mp4
video/web
WebM
m
Ogg video/ogg
These methods, properties, and events allow you to manipulate <video> and <audio> elements using JavaScript.
There are methods for playing, pausing, and loading, for example and there are properties (like duration and
volume). There are also DOM events that can notify you when the <video> element begins to play, is paused, is
ended, etc.
The example below illustrate, in a simple way, how to address a <video> element, read and set properties, and
call methods.
Example 1
Create simple play/pause + resize controls for a video:
Try it yourself »
HTML5 Audio
« Previous
Next Chapter »
Today, most audio files are played through a plug-in (like flash). However, different browsers may have
different plug-ins.
HTML5 defines a new element which specifies a standard way to embed an audio file on a web page: the
<audio> element.
Browser Support
Internet Explorer 9+, Firefox, Opera, Chrome, and Safari support the <audio> element.
Note: Internet Explorer 8 and earlier versions, do not support the <audio> element.
HTML5 Audio - How It Works
To play an audio file in HTML5, this is all you need:
Example
<audio controls>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
Try it yourself »
The control attribute adds audio controls, like play, pause, and volume.
You should also insert text content between the <audio> and </audio> tags for browsers that do not support the
<audio> element.
The <audio> element allows multiple <source> elements. <source> elements can link to different audio files.
The browser will use the first recognized format.
Internet
YES NO NO
Explorer 9+
MP3 audio/mp
eg
Ogg audio/ogg
Wav audio/wav
Next Chapter »
• color
• date
• datetime
• datetime-local
• month
• number
• range
• search
• tel
• time
• url
• week
Note: Not all major browsers support all the new input types. However, you can already start using them; If
they are not supported, they will behave as regular text fields.
Example
Select a color from a color picker:
Try it yourself »
Example
Define a date control:
Try it yourself »
Example
Define a date and time control (with time zone):
Try it yourself »
Example
Define a date and time control (no time zone):
Try it yourself »
Example
Define a field for an e-mail address (will be automatically validated when submitted):
Try it yourself »
Tip: Safari on iPhone recognizes the email type, and changes the on-screen keyboard to match it (adds @ and
.com options).
Example
Define a month and year control (no time zone):
Try it yourself »
Example
Define a numeric field (with restrictions):
Try it yourself »
Try it yourself »
Example
Define a search field (like a site search, or Google search):
Try it yourself »
Example
Define a field for entering a telephone number:
Example
Define a control for entering a time (no time zone):
Try it yourself »
The value of the url field is automatically validated when the form is submitted.
Example
Define a field for entering a URL:
Try it yourself »
Tip: Safari on iPhone recognizes the url input type, and changes the on-screen keyboard to match it (adds .com
option).
Try it yourself »
<inpu
Defines an input control
t>
Next Chapter »
• <datalist>
• <keygen>
• <output>
Note: Not all major browsers support all the new form elements. However, you can already start using them; If
they are not supported, they will behave as regular text fields.
The <datalist> element is used to provide an "autocomplete" feature on <input> elements. Users will see a drop-
down list of pre-defined options as they input data.
Use the <input> element's list attribute to bind it together with a <datalist> element.
Example
An <input> element with pre-defined values in a <datalist>:
<input list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
Try it yourself »
When the form is submitted, two keys are generated, one private and one public.
The private key is stored locally, and the public key is sent to the server. The public key could be used to
generate a client certificate to authenticate the user in the future.
Example
A form with a keygen field:
Try it yourself »
HTML5 <output> Element
The <output> element represents the result of a calculation (like one performed by a script).
Example
Perform a calculation and show the result in an <output> element:
<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0
<input type="range" id="a" value="50">100 +
<input type="number" id="b" value="50">=
<output name="x" for="a b"></output>
</form>
Try it yourself »
Next Chapter »
• autocomplete
• novalidate
New attributes for <input>:
• autocomplete
• autofocus
• form
• formaction
• formenctype
• formmethod
• formnovalidate
• formtarget
• list
• multiple
• pattern (regexp)
• placeholder
• required
• step
When autocomplete is on, the browser automatically complete values based on values that the user has entered
before.
Tip: It is possible to have autocomplete "on" for the form, and "off" for specific input fields, or vice versa.
Note: The autocomplete attribute works with <form> and the following <input> types: text, search, url, tel,
email, password, datepickers, range, and color.
Example
An HTML form with autocomplete on (and off for one input field):
Try it yourself »
Tip: In some browsers you may need to activate the autocomplete function for this to work.
When present, it specifies that the form-data (input) should not be validated when submitted.
Example
Indicates that the form is not to be validated on submit:
Try it yourself »
When present, it specifies that an <input> element should automatically get focus when the page loads.
Example
Let the "First name" input field automatically get focus when the page loads:
Try it yourself »
<input> form Attribute
The form attribute specifies one or more forms an <input> element belongs to.
Tip: To refer to more than one form, use a space-separated list of form ids.
Example
An input field located outside the HTML form (but still a part of the form):
Try it yourself »
The formaction attribute overrides the action attribute of the <form> element.
Example
An HTML form with two submit buttons, with different actions:
<form action="demo_form.asp">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit"><br>
<input type="submit" formaction="demo_admin.asp"
value="Submit as admin">
</form>
Try it yourself »
The formenctype attribute overrides the enctype attribute of the <form> element.
Example
Send form-data that is default encoded (the first submit button), and encoded as "multipart/form-data" (the
second submit button):
Try it yourself »
The formmethod attribute overrides the method attribute of the <form> element.
Note: The formmethod attribute can be used with type="submit" and type="image".
Example
The second submit button overrides the HTTP method of the form:
Try it yourself »
When present, it specifies that the <input> element should not be validated when submitted.
The formnovalidate attribute overrides the novalidate attribute of the <form> element.
Example
A form with two submit buttons (with and without validation):
<form action="demo_form.asp">
E-mail: <input type="email" name="userid"><br>
<input type="submit" value="Submit"><br>
<input type="submit" formnovalidate value="Submit without validation">
</form>
Try it yourself »
The formtarget attribute overrides the target attribute of the <form> element.
Note: The formtarget attribute can be used with type="submit" and type="image".
Example
A form with two submit buttons, with different target windows:
<form action="demo_form.asp">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit as normal">
<input type="submit" formtarget="_blank"
value="Submit to a new window">
</form>
Try it yourself »
Note: The height and width attributes are only used with <input type="image">.
Tip: Always specify both the height and width attributes for images. If height and width are set, the space
required for the image is reserved when the page is loaded. However, without these attributes, the browser does
not know the size of the image, and cannot reserve the appropriate space to it. The effect will be that the page
layout will change during loading (while the images load).
Example
Define an image as the submit button, with height and width attributes:
Try it yourself »
Example
An <input> element with pre-defined values in a <datalist>:
<input list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
Try it yourself »
Note: The min and max attributes works with the following input types: number, range, date, datetime,
datetime-local, month, time and week.
Example
<input> elements with min and max values:
Try it yourself »
<input> multiple Attribute
The multiple attribute is a boolean attribute.
When present, it specifies that the user is allowed to enter more than one value in the <input> element.
Note: The multiple attribute works with the following input types: email, and file.
Example
A file upload field that accepts multiple values:
Try it yourself »
Note: The pattern attribute works with the following input types: text, search, url, tel, email, and password.
Tip: Use the global title attribute to describe the pattern to help the user.
Example
An input field that can contain only three letters (no numbers or special characters):
Try it yourself »
<input> placeholder Attribute
The placeholder attribute specifies a short hint that describes the expected value of an input field (e.g. a sample
value or a short description of the expected format).
The short hint is displayed in the input field before the user enters a value.
Note: The placeholder attribute works with the following input types: text, search, url, tel, email, and password.
Example
An input field with a placeholder text:
Try it yourself »
When present, it specifies that an input field must be filled out before submitting the form.
Note: The required attribute works with the following input types: text, search, url, tel, email, password, date
pickers, number, checkbox, radio, and file.
Example
A required input field:
Try it yourself »
Tip: The step attribute can be used together with the max and min attributes to create a range of legal values.
Note: The step attribute works with the following input types: number, range, date, datetime, datetime-local,
month, time and week.
Example
An input field with a specified legal number intervals:
Try it yourself »
Next Chapter »
• autocomplete
• novalidate
• autocomplete
• autofocus
• form
• formaction
• formenctype
• formmethod
• formnovalidate
• formtarget
• list
• multiple
• pattern (regexp)
• placeholder
• required
• step
When autocomplete is on, the browser automatically complete values based on values that the user has entered
before.
Tip: It is possible to have autocomplete "on" for the form, and "off" for specific input fields, or vice versa.
Note: The autocomplete attribute works with <form> and the following <input> types: text, search, url, tel,
email, password, datepickers, range, and color.
Example
An HTML form with autocomplete on (and off for one input field):
Tip: In some browsers you may need to activate the autocomplete function for this to work.
When present, it specifies that the form-data (input) should not be validated when submitted.
Example
Indicates that the form is not to be validated on submit:
Try it yourself »
When present, it specifies that an <input> element should automatically get focus when the page loads.
Example
Let the "First name" input field automatically get focus when the page loads:
Try it yourself »
<input> form Attribute
The form attribute specifies one or more forms an <input> element belongs to.
Tip: To refer to more than one form, use a space-separated list of form ids.
Example
An input field located outside the HTML form (but still a part of the form):
Try it yourself »
The formaction attribute overrides the action attribute of the <form> element.
Example
An HTML form with two submit buttons, with different actions:
<form action="demo_form.asp">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit"><br>
<input type="submit" formaction="demo_admin.asp"
value="Submit as admin">
</form>
Try it yourself »
The formenctype attribute overrides the enctype attribute of the <form> element.
Example
Send form-data that is default encoded (the first submit button), and encoded as "multipart/form-data" (the
second submit button):
Try it yourself »
The formmethod attribute overrides the method attribute of the <form> element.
Note: The formmethod attribute can be used with type="submit" and type="image".
Example
The second submit button overrides the HTTP method of the form:
<form action="demo_form.asp" method="get">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
<input type="submit" formmethod="post" formaction="demo_post.asp"
value="Submit using POST">
</form>
Try it yourself »
When present, it specifies that the <input> element should not be validated when submitted.
The formnovalidate attribute overrides the novalidate attribute of the <form> element.
Example
A form with two submit buttons (with and without validation):
<form action="demo_form.asp">
E-mail: <input type="email" name="userid"><br>
<input type="submit" value="Submit"><br>
<input type="submit" formnovalidate value="Submit without validation">
</form>
Try it yourself »
The formtarget attribute overrides the target attribute of the <form> element.
Note: The formtarget attribute can be used with type="submit" and type="image".
Example
A form with two submit buttons, with different target windows:
<form action="demo_form.asp">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit as normal">
<input type="submit" formtarget="_blank"
value="Submit to a new window">
</form>
Try it yourself »
Note: The height and width attributes are only used with <input type="image">.
Tip: Always specify both the height and width attributes for images. If height and width are set, the space
required for the image is reserved when the page is loaded. However, without these attributes, the browser does
not know the size of the image, and cannot reserve the appropriate space to it. The effect will be that the page
layout will change during loading (while the images load).
Example
Define an image as the submit button, with height and width attributes:
Try it yourself »
<input list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
Try it yourself »
Note: The min and max attributes works with the following input types: number, range, date, datetime,
datetime-local, month, time and week.
Example
<input> elements with min and max values:
Try it yourself »
<input> multiple Attribute
The multiple attribute is a boolean attribute.
When present, it specifies that the user is allowed to enter more than one value in the <input> element.
Note: The multiple attribute works with the following input types: email, and file.
Example
A file upload field that accepts multiple values:
Try it yourself »
Note: The pattern attribute works with the following input types: text, search, url, tel, email, and password.
Tip: Use the global title attribute to describe the pattern to help the user.
Example
An input field that can contain only three letters (no numbers or special characters):
Try it yourself »
The short hint is displayed in the input field before the user enters a value.
Note: The placeholder attribute works with the following input types: text, search, url, tel, email, and password.
Example
An input field with a placeholder text:
Try it yourself »
When present, it specifies that an input field must be filled out before submitting the form.
Note: The required attribute works with the following input types: text, search, url, tel, email, password, date
pickers, number, checkbox, radio, and file.
Example
A required input field:
Try it yourself »
Note: The step attribute works with the following input types: number, range, date, datetime, datetime-local,
month, time and week.
Example
An input field with a specified legal number intervals:
Try it yourself »
Next Chapter »
Earlier, this was done with cookies. However, Web Storage is more secure and faster. The data is not included
with every server request, but used ONLY when asked for. It is also possible to store large amounts of data,
without affecting the website's performance.
The data is stored in key/value pairs, and a web page can only access data stored by itself.
Browser Support
Web storage is supported in Internet Explorer 8+, Firefox, Opera, Chrome, and Safari.
Note: Internet Explorer 7 and earlier versions, do not support web storage.
Before using web storage, check browser support for localStorage and sessionStorage:
if(typeof(Storage)!=="undefined")
{
// Yes! localStorage and sessionStorage support!
// Some code.....
}
else
{
// Sorry! No web storage support..
}
Example
localStorage.lastname="Smith";
document.getElementById("result").innerHTML="Last name: "
+ localStorage.lastname;
Try it yourself »
Example explained:
Tip: Key/value pairs are always stored as strings. Remember to convert them to another format when needed.
The following example counts the number of times a user has clicked a button. In this code the value string is
converted to a number to be able to increase the counter:
Example
if (localStorage.clickcount)
{
localStorage.clickcount=Number(localStorage.clickcount)+1;
}
else
{
localStorage.clickcount=1;
}
document.getElementById("result").innerHTML="You have clicked the button " +
localStorage.clickcount + " time(s).";
Try it yourself »
The following example counts the number of times a user has clicked a button, in the current session:
Example
if (sessionStorage.clickcount)
{
sessionStorage.clickcount=Number(sessionStorage.clickcount)+1;
}
else
{
sessionStorage.clickcount=1;
}
document.getElementById("result").innerHTML="You have clicked the button " +
sessionStorage.clickcount + " time(s) in this session.";
Try it yourself »
HTML5 Application Cache
« Previous
Next Chapter »
With HTML5 it is easy to make an offline version of a web application, by creating a cache manifest file.
1. Offline browsing - users can use the application when they're offline
2. Speed - cached resources load faster
3. Reduced server load - the browser will only download updated/changed resources from
the server
Browser Support
Internet Explorer 10, Firefox, Chrome, Safari and Opera support Application cache.
Example
<!DOCTYPE HTML>
<html manifest="demo.appcache">
<body>
The content of the document......
</body>
</html>
Try it yourself »
Cache Manifest Basics
To enable application cache, include the manifest attribute in the document's <html> tag:
<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>
Every page with the manifest attribute specified will be cached when the user visits it. If the manifest attribute is
not specified, the page will not be cached (unless the page is specified directly in the manifest file).
A manifest file needs to be served with the correct MIME-type, which is "text/cache-manifest". Must be
configured on the web server.
• CACHE MANIFEST - Files listed under this header will be cached after they are
downloaded for the first time
• NETWORK - Files listed under this header require a connection to the server, and will
never be cached
• FALLBACK - Files listed under this header specifies fallback pages if a page is inaccessible
CACHE MANIFEST
CACHE MANIFEST
/theme.css
/logo.gif
/main.js
The manifest file above lists three resources: a CSS file, a GIF image, and a JavaScript file. When the manifest
file is loaded, the browser will download the three files from the root directory of the web site. Then, whenever
the user is not connected to the internet, the resources will still be available.
NETWORK
The NETWORK section below specifies that the file "login.asp" should never be cached, and will not be
available offline:
NETWORK:
login.asp
An asterisk can be used to indicate that all other resources/files require an internet connection:
NETWORK:
*
FALLBACK
The FALLBACK section below specifies that "offline.html" will be served in place of all files in the /html/
catalog, in case an internet connection cannot be established:
FALLBACK:
/html/ /offline.html
Note: The first URI is the resource, the second is the fallback.
NETWORK:
login.asp
FALLBACK:
/html/ /offline.html
Tip: Lines starting with a "#" are comment lines, but can also serve another purpose. An application's cache
is only updated when its manifest file changes. If you edit an image or change a JavaScript function, those
changes will not be re-cached. Updating the date and version in a comment line is one way to make the browser
re-cache your files.
Once a file is cached, the browser will continue to show the cached version, even if you change the file on the
server. To ensure the browser updates the cache, you need to change the manifest file.
Note: Browsers may have different size limits for cached data (some browsers have a 5MB limit per sit
Next Chapter »
A web worker is a JavaScript running in the background, without affecting the performance of the page.
A web worker is a JavaScript that runs in the background, independently of other scripts, without affecting the
performance of the page. You can continue to do whatever you want: clicking, selecting things, etc., while the
web worker runs in the background.
Browser Support
Internet Explorer 10, Firefox, Chrome, Safari and Opera support Web workers.
Example
Count numbers:
Try it yourself »
if(typeof(Worker)!=="undefined")
{
// Yes! Web worker support!
// Some code.....
}
else
{
// Sorry! No Web Worker support..
}
Here, we create a script that counts. The script is stored in the "demo_workers.js" file:
var i=0;
function timedCount()
{
i=i+1;
postMessage(i);
setTimeout("timedCount()",500);
}
timedCount();
The important part of the code above is the postMessage() method - which is used to posts a message back to
the HTML page.
Note: Normally web workers are not used for such simple scripts, but for more CPU intensive tasks.
The following lines checks if the worker already exists, if not - it creates a new web worker object and runs the
code in "demo_workers.js":
if(typeof(w)=="undefined")
{
w=new Worker("demo_workers.js");
}
Then we can send and receive messages from the web worker.
w.onmessage=function(event){
document.getElementById("result").innerHTML=event.data;
};
When the web worker posts a message, the code within the event listener is executed. The data from the web
worker is stored in event.data.
To terminate a web worker, and free browser/computer resources, use the terminate() method:
w.terminate();
Example
<!DOCTYPE html>
<html>
<body>
function startWorker()
{
if(typeof(Worker)!=="undefined")
{
if(typeof(w)=="undefined")
{
w=new Worker("demo_workers.js");
}
w.onmessage = function (event) {
document.getElementById("result").innerHTML=event.data;
};
}
else
{
document.getElementById("result").innerHTML="Sorry, your browser does not support Web
Workers...";
}
}
function stopWorker()
{
w.terminate();
}
</script>
</body>
</html>
Try it yourself »
HTML5 Server-Sent Events allow a web page to get updates from a server.
This was also possible before, but the web page would have to ask if any updates were available. With server-
sent events, the updates come automatically.
Examples: Facebook/Twitter updates, stock price updates, news feeds, sport results, etc.
Browser Support
Server-Sent Events are supported in all major browsers, except Internet Explorer.
Example
var source=new EventSource("demo_sse.php");
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event.data + "<br>";
};
Try it yourself »
Example explained:
• Create a new EventSource object, and specify the URL of the page sending the updates (in
this example "demo_sse.php")
• Each time an update is received, the onmessage event occurs
• When an onmessage event occurs, put the received data into the element with id="result"
if(typeof(EventSource)!=="undefined")
{
// Yes! Server-sent events support!
// Some code.....
}
else
{
// Sorry! No server-sent events support..
}
The server-side event stream syntax is simple. Set the "Content-Type" header to "text/event-stream". Now you
can start sending event streams.
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>
<%
Response.ContentType="text/event-stream"
Response.Expires=-1
Response.Write("data: " & now())
Response.Flush()
%>
Code explained:
Events Description
onmessa
When a message is received
ge
HTML Multimedia
« Previous
Next Chapter »
What is Multimedia?
Multimedia comes in many different formats. It can be almost anything you can hear or see.
Examples: Pictures, music, sound, videos, records, films, animations, and more.
Modern Web pages have often embedded multimedia elements, and modern browsers have support for various
multimedia formats.
Browser Support
The first Internet browsers had support for text only, and even the text support was limited to a single font in a
single color. Then came browsers with support for colors, fonts and text styles, and support for pictures was
added.
The support for sounds, animations, and videos is handled in different ways by various browsers. Some
multimedia elements is supported, and some requires an extra helper program (a plug-in).
The most common way to discover the type of a file, is to look at the file extension. When a browser sees the
file extension .htm or .html, it will treat the file as an HTML file. The .xml extension indicates an XML file, and
the .css extension indicates a style sheet file. Pictures are recognized by extensions like .gif, .png and .jpg.
Multimedia files also have their own formats with different extensions like: .swf, .wav, .mp3, and .mp4.
Video Formats
MP4 is the new and upcoming format for internet video. It is
supported by YouTube, Flash players and HTML5.
AVI .avi AVI (Audio Video Interleave) was developed by Microsoft. AVI is supported by all
computers running Windows, and by the most popular web browsers. It is a very
common format on the Internet, but not always possible to play on non-Windows
computers
WMV . WMV (Windows Media Video) was developed by Microsoft. WMV is a common
wmv format on the Internet, but it cannot be played on non-Windows computer without
an extra (free) component installed. Some later WMVs cannot play at all on non-
Windows computers because no player is available
MPEG .mpg The MPEG (Moving Pictures Expert Group) format is the most popular format on
.mpe the Internet. It is cross-platform, and supported by all major browsers
g
QuickTi .mov QuickTime was developed by Apple. QuickTime is a common format on the
me Internet, but QuickTime movies cannot be played on a Windows computer without
an extra (free) component installed.
RealVide .rm RealVideo was developed by Real Media. RealVideo allows streaming of video
o .ram (online video, Internet TV) with low bandwidths. Because of the low bandwidth
priority, the quality is often reduced
Flash .swf Flash was developed by Macromedia. Flash requires an extra component to play.
.flv This component comes preinstalled with all major browsers
MP4 .mp4 Mpeg-4 (MP4) is the new format for the internet. YouTube recommends using MP4.
YouTube accepts multiple formats, and then converts them all to .flv or .mp4 for
distribution
Sound Formats
MP3 is the newest format for compressed recorded music. The term MP3 has become synonymous with digital
music. If your website is about recorded music, the MP3 format is the choice.
MIDI .mid MIDI (Musical Instrument Digital Interface) is a format for electronic music devices
.mid like synthesizers and PC sound cards. MIDI files do not contain sound, but digital
i musical instructions (notes) that can be played by electronics (like your PC's sound
card).
Since MIDI files only contains instructions; they are extremely small. The example
above is only 23K in size, but it plays for nearly 5 minutes. MIDI is supported by
many software systems/platforms. MIDI is supported by all the most popular
Internet browsers.
MP3 . MP3 files are actually the sound part of MPEG files. MPEG was originally developed
mp3 for video by the Moving Pictures Experts Group. MP3 is the most popular format for
music. The encoding system combines good compression (small files) with high
quality
RealAud .rm RealAudio was developed Real Media. It allows streaming of audio (online music,
io .ram Internet radio) with low bandwidths. Because of the low bandwidth priority, the
quality is often reduced
WAV .wav WAVE (more known as WAV) was developed by IBM and Microsoft. WAVs are
compatible with Windows, Macintosh, and Linux operating systems
WMA . WMA (Windows Media Audio), compares in quality to MP3, and is compatible with
wm most players, except the iPod. WMA files can be delivered as a continuous flow of
a data, which makes it practical for use in Internet radio or on-line music.
Next Chapter »
Plug-ins can be added to Web pages through the <object> tag or the <embed> tag.
Most plug-ins allow manual (or programmed) control over settings for volume, rewind, forward, pause, stop,
and play.
Try it yourself »
Try it yourself »
Adobe Flash Player - Play SWF Video
Example
<object width="400" height="40"
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/
pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0">
<param name="SRC" value="bookmark.swf">
<embed src="bookmark.swf" width="400" height="40">
</embed>
</object>
Try it yourself »
Example
<object width="100%" height="100%"
type="video/x-ms-asf" url="3d.wmv" data="3d.wmv"
classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param name="url" value="3d.wmv">
<param name="filename" value="3d.wmv">
<param name="autostart" value="1">
<param name="uiMode" value="full">
<param name="autosize" value="1">
<param name="playcount" value="1">
<embed type="application/x-mplayer2" src="3d.wmv" width="100%" height="100%"
autostart="true" showcontrols="true"
pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"></embed>
</object>
Try it yourself »
Plug-ins
Plug-ins can be used for many purposes: to display maps, scan for viruses, verify your bank id, and much more.
The restrictions are few.
HTML Audio
« Previous
Next Chapter »
You must know a lot of tricks to make sure your audio files will play in all browsers (Internet Explorer,
Chrome, Firefox, Safari, Opera) and on all hardware (PC, Mac , iPad, iPhone).
Using Plug-ins
A plug-in is a small computer program that extends the standard functionality of the browser.
Plug-ins can be added to HTML pages using the <object> tag or the <embed> tag.
These tags define containers for resources (normally non-HTML resources), which, depending on the type, will
either be displayed by the browsers, or by an external plug-in.
The following code fragment should play an MP3 file embedded in a web page:
Example
<embed height="50" width="100" src="horse.mp3">
Try it yourself »
Problems:
• Different browsers support different audio formats
• If a browser does not support the file format, the audio will not play without a plug-in
• If the plug-in is not installed on the users' computer, the audio will not play
• If you convert the file to another format, it will still not play in all browsers
The following code fragment should play an MP3 file embedded in a web page:
Example
<object height="50" width="100" data="horse.mp3"></object>
Try it yourself »
Problems:
• Different browsers support different audio formats
• If a browser does not support the file format, the audio will not play without a plug-in
• If the plug-in is not installed on the users' computer, the audio will not play
• If you convert the file to another format, it will still not play in all browsers
The following example uses the <audio> tag, and specifies one MP3 file (for Internet Explorer, Chrome, and
Safari), and one OGG file (for Firefox and Opera). If anything fails it displays a text:
Example
<audio controls>
<source src="horse.mp3" type="audio/mpeg">
<source src="horse.ogg" type="audio/ogg">
Your browser does not support this audio format.
</audio>
Try it yourself »
Problems:
• You must convert the audio files into different formats
• The <audio> element does not work in older browsers
Example
<audio controls height="100" width="100">
<source src="horse.mp3" type="audio/mpeg">
<source src="horse.ogg" type="audio/ogg">
<embed height="50" width="100" src="horse.mp3">
</audio>
Try it yourself »
Problems:
• You must convert the audio files into different formats
• The <embed> element cannot "fall-back" to display an error message
It plays MP3 and a lot of other formats. You can add it to your page (or blog) with a single line of code, and
easily turn your HTML page into a professional playlist:
Example
<a href="horse.mp3">Play Sound</a>
<script src="http://mediaplayer.yahoo.com/latest"></script>
Try it yourself »
To use it, insert the following JavaScript at the bottom of your web page:
<script src="http://mediaplayer.yahoo.com/latest"></script>
Then, simply link to your audio files in your HTML, and the JavaScript code automatically creates a play button
for each song:
<a href="song1.mp3">Play Song 1</a>
<a href="song2.wav">Play Song 2</a>
...
...
The Yahoo Media Player presents your readers with a small play button instead of a full player. However, when
you click the button, a full player pops up. Note that the player is always docked and ready at the bottom of the
window. Just click on it to slide it out.
Using A Hyperlink
If a web page includes a hyperlink to a media file, most browsers will use a "helper application" to play the file.
The following code fragment displays a link to an MP3 file. If a user clicks on the link, the browser will launch
a helper application to play the file:
Example
<a href="horse.mp3">Play the sound</a>
Try it yourself »
If you plan to use inline sounds, be aware that many people will find it annoying. Also note that some users
might have turned off the inline sound option in their browser.
Our best advice is to include inline sounds only in pages where the user expects to hear sounds. An example of
this is a page which opens after the user has clicked on a link to hear a recording.
Tag Description
<video>Ne
Defines a video or movie
w
HTML Videos
« Previous
Next Chapter »
Try it yourself »
You must add a lot of tricks to make sure your video will play in all browsers (Internet Explorer, Chrome,
Firefox, Safari, Opera) and on all hardware (PC, Mac , iPad, iPhone).
In this chapter W3Schools summarizes the problems and the solutions.
The following HTML fragment displays a Flash video embedded in a web page:
Example
<embed src="intro.swf" height="200" width="200">
Try it yourself »
Problems
• If the browser does not support Flash, the video will not play
• iPad and iPhone do not support Flash videos
• If you convert the video to another format, it will still not play in all browsers
The following HTML fragment displays a Flash video embedded in a web page:
Example
<object data="intro.swf" height="200" width="200"></object>
Try it yourself »
Problems:
• If the browser does not support Flash, the video will not play
• iPad and iPhone do not support Flash videos
• If you convert the video to another format, it will still not play in all browsers
The following HTML fragment displays a video in OGG, MP4, or WEBM format:
Example
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
<source src="movie.webm" type="video/webm">
Your browser does not support the video tag.
</video>
Try it yourself »
Problems:
Try it yourself »
Problems:
Using A Hyperlink
If a web page includes a hyperlink to a media file, most browsers will use a "helper application" to play the file.
The following code fragment displays a link to a Flash video. If a user clicks on the link, the browser will
launch a helper application to play the file:
Example
<a href="intro.swf">Play a video file</a>
Try it yourself »
If you plan to use inline videos, be aware that many people find it annoying. Also note that some users might
have turned off the inline video option in their browser.
Our best advice is to include inline videos only in pages where the user expects to see a video. An example of
this is a page which opens after the user has clicked on a link to see the video.
Tag Description
<audio>N
Defines sound content
ew
<video>Ne
Defines a video or movie
w
Next Chapter »
The easiest way to play videos (others or your own) in HTML is to use YouTube.
Try it yourself »