HTML Tutorial(Vizzy)
HTML Tutorial(Vizzy)
Example
<html>
<body>
</body>
</html>
What is HTML?
HTML is a language for describing web pages.
HTML Tags
HTML markup tags are usually called HTML tags
The purpose of a web browser (like Internet Explorer or Firefox) is to read HTML documents
and display them as web pages. The browser does not display the HTML tags, but uses the tags
to interpret the content of the page:
<html>
<body>
</body>
</html>
Editing HTML
HTML can be written and edited using many different editors like Dreamweaver and Visual
Studio.
However, in this tutorial we use a plain text editor (like Notepad) to edit HTML. We believe
using a plain text editor is the best way to learn HTML.
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>
HTML Paragraphs
HTML paragraphs are defined with the <p> tag.
Example
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
HTML Links
HTML links are defined with the <a> tag.
Example
<a href="http://www.w3schools.com">This is a link</a>
HTML Images
HTML images are defined with the <img> tag.
Example
<imgsrc="w3schools.jpg" width="104" height="142" />
Note: The name and the size of the image are provided as attributes.
HTML Elements
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.
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>
The <html> element defines the whole HTML document.
The element has a start tag <html> and an end tag </html>.
The element content is another HTML element (the body element).
<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
HTML Attributes
HTML elements can have attributes
Attributes provide additional information about an element
Attributes are always specified in the start tag
Attributes come in name/value pairs like: name="value"
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>
Double style quotes are the most common, but single style quotes are also allowed.
Tip: In some rare situations, when the attribute value itself contains quotes, it is necessary to
use single quotes: name='John "ShotGun" Nelson'
Below is a list of some attributes that are standard for most HTML elements:
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>
Note: Browsers automatically add some empty space (a margin) before and after each heading.
Headings Are Important
Use HTML headings for headings only. Don't use headings to make text BIG or bold.
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>
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 -->
Note: There is an exclamation point after the opening bracket, but not before the closing bracket.
HTML Tip - How to View HTML Source
Have you ever seen a Web page and wondered "Hey! How did they do that?"
To find out, right-click in the page and select "View Source" (IE) or "View Page Source"
(Firefox), or similar for other browsers. This will open a window containing the HTML code of
the page.
You will learn more about HTML tags and attributes in the next chapters of this tutorial.
Tag Description
<html> Defines an HTML document
<body> Defines the document's body
<h1> to <h6> Defines HTML headings
<hr /> Defines a horizontal line
<!--> Defines a comment
HTML Paragraphs
« Previous Next Chapter »
HTML Paragraphs
Paragraphs are defined with the <p> tag.
Example
<p>This is a paragraph</p>
<p>This is another paragraph</p>
Note: Browsers automatically add an empty line before and after a paragraph.
Example
<p>This is a paragraph
<p>This is another paragraph
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>
The <br /> element is an empty HTML element. It has no end tag.
Even if <br> works in all browsers, writing <br /> instead is more future proof.
HTML Output - Useful Tips
You cannot be sure how HTML will be displayed. Large or small screens, and resized windows
will create different results.
With HTML, you cannot change the output by adding extra spaces or extra lines in your HTML
code.
The browser will remove extra spaces and extra lines when the page is displayed. Any number of
lines count as one line, and any number of spaces count as one space.
Tag Description
<p> Defines a paragraph
<br /> Inserts a single line break
superscript
This is subscript and
Try it yourself »
HTML Formatting Tags
HTML uses tags like <b> and <i> for formatting output, like bold or italic text.
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!
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.
Example
<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>
Example
<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>
<body>
<h1 style="text-align:center">This is a heading</h1>
<p>The heading above is aligned to the center of this page.</p>
</body>
</html>
Tags Description
<center> Deprecated. Defines centered content
<font> and <basefont> Deprecated. Defines HTML fonts
<s> and <strike> Deprecated. Defines strikethrough text
<u> Deprecated. Defines underlined text
Attributes Description
align Deprecated. Defines the alignment of text
bgcolor Deprecated. Defines the background color
color Deprecated. Defines the text color
Links are found in nearly all Web pages. Links allow users to click their way from page to page.
HTML links
How to create links in an HTML document.
When you move the cursor over a link in a Web page, the arrow will turn into a little hand.
Example
<a href="http://www.w3schools.com/">Visit W3Schools</a>
Tip: The "Link text" doesn't have to be text. You can link from an image or any other HTML
element.
The example below will open the linked document in a new browser window:
Example
<a href="http://www.w3schools.com/" target="_blank">Visit W3Schools!</a>
Note:
The upcoming HTML5 standard suggest using the id attribute instead of the name attribute for
specifying the name of an anchor.
Using the id attribute actually works also for HTML4 in all modern browsers.
Bookmarks are not displayed in any special way. They are invisible to the reader.
Example
A named anchor inside an HTML 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>
Tip: Named anchors are often used to create "table of contents" at the beginning of a large
document. Each chapter within the document is given a named anchor, and links to each of these
anchors are put at the top of the document.
Tip: If a browser does not find the named anchor specified, it goes to the top of the document.
No error occurs.
HTML Images
Example
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.
<imgsrc="url" alt="some_text"/>
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.
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).
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.
HTML Tables
« Previous Next Chapter »
HTML Tables
Apples 44%
Bananas 23%
Oranges 13%
Other 10%
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>
<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
row 1, cell 1 row 1, cell 2
row 2, cell 1 row 2, cell 2
HTML Lists
The most common HTML lists are ordered and unordered lists:
HTML Lists
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 the item in the list) and <dd> (describes
the item in the list):
<dl>
<dt>Coffee</dt>
<dd>- black hot drink</dd>
<dt>Milk</dt>
<dd>- white cold drink</dd>
</dl>
Coffee
Milk
HTML Forms
HTML forms are used to pass data to a server.
A 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 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 ONE 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:
Submit
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.
HTML Frames
With frames, several Web pages can be displayed in the same browser window.
HTML Frames
With frames, you can display more than one HTML document in the same browser window.
Each HTML document is called a frame, and each frame is independent of the others.
The frameset element states HOW MANY columns or rows there will be in the frameset, and
HOW MUCH percentage/pixels of space will occupy each of them.
The first column is set to 25% of the width of the browser window. The second column is set to
75% of the width of the browser window. The document "frame_a.htm" is put into the first
column, and the document "frame_b.htm" is put into the second column:
<frameset cols="25%,75%">
<frame src="frame_a.htm" />
<frame src="frame_b.htm" />
</frameset>
Note: The frameset column size can also be set in pixels (cols="200,500"), and one of the
columns can be set to use the remaining space, with an asterisk (cols="25%,*").
Note: Add the <noframes> tag for browsers that do not support frames.
Important: You cannot use the <body></body> tags together with the <frameset></frameset>
tags! However, if you add a <noframes> tag containing some text for browsers that do not
support frames, you will have to enclose the text in <body></body> tags! See how it is done in
the first example below.
HTML Frame Tags
Tag Description
<frameset> Defines a set of frames
<frame /> Defines a sub window (a frame)
<noframes> Defines a noframe section for browsers that do not handle frames
HTML Iframes
<iframesrc="URL"></iframe>
The attribute values are specified in pixels by default, but they can also be in percent (like
"80%").
Example
<iframesrc="demo_iframe.htm" width="200" height="200"></iframe>
Try it yourself »
The target attribute of a link must refer to the name attribute of the iframe:
Example
<iframesrc="demo_iframe.htm" name="iframe_a"></iframe>
<p><a href="http://www.w3schools.com" target="iframe_a">W3Schools.com</a></p>
HTML Colors
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)
#FFFF00 rgb(255,255,0)
#00FFFF rgb(0,255,255)
#FF00FF rgb(255,0,255)
#C0C0C0 rgb(192,192,192)
#FFFFFF rgb(255,255,255)
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.
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:
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:
Tip: The 17 standard colors are: aqua, black, blue, fuchsia, gray, grey, green, lime, maroon,
navy, olive, 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:
<body>
Visible text goes here...
</body>
</html>
Heading Elements
<h1>Largest Heading</h1>
<h2> . . . </h2>
<h3> . . . </h3>
<h4> . . . </h4>
<h5> . . . </h5>
<h6>Smallest Heading</h6>
Text Elements
<p>This is a paragraph</p>
<br /> (line break)
<hr /> (horizontal rule)
<pre>This text is preformatted</pre>
Logical Styles
<em>This text is emphasized</em>
<strong>This text is strong</strong>
<code>This is some computer code</code>
Physical Styles
<b>This text is bold</b>
<i>This text is italic</i>
Links
Ordinary link: <a href="http://www.example.com/">Link-text goes here</a>
Image-link: <a href="http://www.example.com/"><img src="URL" alt="Alternate Text" /></a>
Mailto link: <a href="mailto:[email protected]">Send e-mail</a>
A named anchor:
<a name="tips">Tips Section</a>
<a href="#tips">Jump to the Tips Section</a>
Unordered list
<ul>
<li>Item</li>
<li>Item</li>
</ul>
Ordered list
<ol>
<li>First item</li>
<li>Second item</li>
</ol>
Definition list
<dl>
<dt>First term</dt>
<dd>Definition</dd>
<dt>Next term</dt>
<dd>Definition</dd>
</dl>
Tables
<table border="1">
<tr>
<th>Tableheader</th>
<th>Tableheader</th>
</tr>
<tr>
<td>sometext</td>
<td>sometext</td>
</tr>
</table>
Frames
<frameset cols="25%,75%">
<frame src="page1.htm" />
<frame src="page2.htm" />
</frameset>
Forms
<form action="http://www.example.com/test.asp" method="post/get">
<select>
<option>Apples</option>
<option selected="selected">Bananas</option>
<option>Cherries</option>
</select>
</form>
Entities
< is the same as <
> is the same as >
© is the same as ©
Other Elements
<!-- This is a comment -->
<blockquote>
Text quoted from a source.
</blockquote>
<address>
Written by W3Schools.com<br />
<a href="mailto:[email protected]">Email us</a><br />
Address: Box 564, Disneyland<br />
Phone: +12 34 56 78
</address>
HTML Doctypes
A doctype declaration refers to the rules for the markup language, so that the browsers render the
content correctly.
Example
An HTML document with a doctype of HTML 4.01 Transitional:
<body>
The content of the document......
</body>
</html>
The doctype declaration should be the very first thing in an HTML document, before the <html>
tag.
Tip: Always add a doctype to your pages. This helps the browsers to render the page
correctly!
This DTD contains all HTML elements and attributes, but does NOT INCLUDE presentational
or deprecated elements (like font and center). Framesets are not allowed:
This DTD contains all HTML elements and attributes, INCLUDING presentational and
deprecated elements (like font). Framesets are not allowed:
This DTD is equal to HTML 4.01 Transitional, but allows the use of frameset content:
Use W3C's Validator to check that you have written a valid HTML / XHTML document!
HTML DOCTYPE Element
Tag Description
<!DOCTYPE> Defines the document type. This declaration goes before the <html> start tag
HTML Styles
In HTML 4.0, all formatting can be removed from the HTML document, and stored in a style
sheet.
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
<head>
<style type="text/css">
body {background-color:yellow}
p {color:blue}
</style>
</head>
Inline Styles
An inline style can be used if a unique style is to be applied to one single occurrence of an
element.
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:
HTML5 Introduction
<!DOCTYPE html>
HTML5 Example:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
</body>
</html>
<acronym> <abbr>
<applet> <object>
<basefont> CSS
<big> CSS
<center> CSS
<dir> <ul>
<font> CSS
<frame>
<frameset>
<noframes>
<strike> CSS
<tt> CSS
In addition, all browsers, old and new, automatically handle unrecognized elements as inline
elements.
Because of this, you can "teach" older browsers to handle "unknown" HTML elements.
Note You can even teach IE6 (Windows XP 2001) how to handle unknown HTML elements.
HTML5 defines eight new semantic HTML elements. All these are block-level elements.
To secure correct behavior in older browsers, you can set the CSS display property to block:
display: block;
You can also add any new element to HTML with a browser trick.
This example adds a new element called <myHero> to HTML, and defines a display style for it:
Example
<!DOCTYPE html>
<html>
<head>
<script>document.createElement("myHero")</script>
<style>
myHero {
display: block;
background-color: #ddd;
padding: 50px;
font-size: 30px;
}
</style>
</head>
<body>
</body>
</html>
Try it Yourself »
Below is a list of the new HTML5 elements, and a description of what they are used for.
Tag Description
<article> Defines an article in the document
<bdi> Defines a part of text that might be formatted in a different direction from other text
<details> Defines additional details that the user can view or hide
<figure> Defines self-contained content, like illustrations, diagrams, photos, code listings, etc.
<menuitem> Defines a command/menu item that the user can invoke from a popup menu
<rp> Defines what to show in browsers that do not support ruby annotations
Tag Description
Read all about old and new form elements in HTML Form Elements.
color
date
datetime
datetime-local
month
number
range
search
tel
time
url
week
autocomplete
autofocus
form
formaction
formenctype
formmethod
formnovalidate
formtarget
list
multiple
pattern (regexp)
placeholder
required
step
Learn all about old and new input types in HTML Input Types.
Learn all about input attributes in HTML Input Attributes.
Type Example
In HTML5, all four syntaxes may be used, depending on what is needed for the attribute.
HTML5 Graphics
Tag Description
Tag Description
<audio> Defines sound or music content
HTML5 Canvas
HTML Canvas?
The HTML <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, text, and adding images.
Canvas Examples
A canvas is a rectangular area on an HTML page. By default, a canvas has no border and no
content.
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.
To add a border, use the style attribute:
</canvas>
Try it Yourself »
var c = document.getElementById("myCanvas");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0,0,150,75);
Try it Yourself »
Draw a Line
var c = document.getElementById("myCanvas");
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();
Try it Yourself »
Draw a Circle
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 »
Draw a Text
var c = document.getElementById("myCanvas");
ctx.fillText("Hello World",10,50);
Try it Yourself »
Stroke Text
var c = document.getElementById("myCanvas");
ctx.strokeText("Hello World",10,50);
Try it Yourself »
var c = document.getElementById("myCanvas");
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
ctx.fillStyle = grd;
ctx.fillRect(10,10,150,80);
Try it Yourself »
var c = document.getElementById("myCanvas");
// Create gradient
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
ctx.fillStyle = grd;
ctx.fillRect(10,10,150,80);
Try it Yourself »
Draw Image
var c = document.getElementById("myCanvas");
ctx.drawImage(img,10,10);
Try it Yourself »
HTML5 SVG
What is SVG?
SVG stands for Scalable Vector Graphics
SVG is used to define graphics for the Web
SVG is a W3C recommendation
SVG has several methods for drawing paths, boxes, circles, text, and graphic images.
SVG Circle
Example
<!DOCTYPE html>
<html>
<body>
</svg>
</body>
</html>
Try it Yourself »
SVG Rectangle
Example
</svg>
Try it Yourself »
style="fill:red;stroke:black;stroke-width:5;opacity:0.5" />
</svg>
Try it Yourself »
SVG Star
Example
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>
Try it Yourself »
SVG Logo
Example
<svg height="130" width="500">
<defs>
</linearGradient>
</defs>
</svg>
Try it Yourself »
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.
The table below shows some important differences between Canvas and SVG:
Canvas SVG
Resolution dependent
Resolution independent
Best suited for applications with large rendering areas (Google Maps)
Slow rendering if complex (anything that uses the DOM a lot will be slow)
Examples: Pictures, music, sound, videos, records, films, animations, and more.
Web pages often contains multimedia elements of different types and formats.
In this chapter you will learn about the different multimedia formats.
Browser Support
The first web browsers had support for text only, limited to a single font in a single color.
Later came browsers with support for colors and fonts, and even support for pictures!
The support for sounds, animations, and videos is handled differently by various browsers.
Different types and formats are supported, and some formats requires extra helper programs
(plug-ins) to work.
Hopefully this will become history. HTML5 multimedia promises an easier future for
multimedia.
Multimedia Formats
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 and different extensions
like: .swf, .wav, .mp3, .mp4, .mpg, .wmv, and .avi.
Videoformats MP4 is the new and upcoming format for internet video.
MPEG .mpg
.mpeg MPEG. Developed by the Moving Pictures Expert Group. The first popular video format
on the web. Used to be supported by all browsers, but it is not supported in HTML5 (See MP4).
AVI .avi AVI (Audio Video Interleave). Developed by Microsoft. Commonly used in video
cameras and TV hardware. Plays well on Windows computers, but not in web browsers.
WMV .wmv WMV (Windows Media Video). Developed by Microsoft. Commonly used in
video cameras and TV hardware. Plays well on Windows computers, but not in web browsers.
QuickTime .mov QuickTime. Developed by Apple. Commonly used in video cameras and
TV hardware. Plays well on Apple computers, but not in web browsers. (See MP4)
RealVideo .rm
.ram RealVideo. Developed by Real Media to allow video streaming with low bandwidths. It
is still used for online video and Internet TV, but does not play in web browsers.
Flash .swf
.flv Flash. Developed by Macromedia. Often requires an extra component (plug-in) to play in
web browsers.
Ogg .ogg Theora Ogg. Developed by the Xiph.Org Foundation. Supported by HTML5.
WebM .webm WebM. Developed by the web giants, Mozilla, Opera, Adobe, and Google.
Supported by HTML5.
MPEG-4
or MP4 .mp4 MP4. Developed by the Moving Pictures Expert Group. Based on
QuickTime. Commonly used in newer video cameras and TV hardware. Supported by all
HTML5 browsers. Recommended by YouTube.
Note Only MP4, WebM, and Ogg video is supported by the newest HTML5 standard.
Sound Formats
MP3 is the newest format for compressed recorded music. The term MP3 has become
synonymous with digital music.
MIDI .mid
.midi MIDI (Musical Instrument Digital Interface). Main format for all electronic music
devices like synthesizers and PC sound cards. MIDI files do not contain sound, but digital notes
that can be played by electronics. Plays well on all computers and music hardware, but not in
web browsers.
RealAudio .rm
.ram RealAudio. Developed by Real Media to allow streaming of audio with low bandwidths.
Does not play in web browsers.
WMA .wma WMA (Windows Media Audio). Developed by Microsoft. Commonly used in
music players. Plays well on Windows computers, but not in web browsers.
AAC .aac AAC (Advanced Audio Coding). Developed by Apple as the default format for
iTunes. Plays well on Apple computers, but not in web browsers.
WAV .wav WAV. Developed by IBM and Microsoft. Plays well on Windows, Macintosh,
and Linux operating systems. Supported by HTML5.
Ogg .ogg Ogg. Developed by the Xiph.Org Foundation. Supported by HTML5.
MP3 .mp3 MP3 files are actually the sound part of MPEG files. MP3 is the most popular
format for music players. Combines good compression (small files) with high quality. Supported
by all browsers.
MP4 .mp4 MP4 is a video format, but can also be used for audio. MP4 video is the upcoming
video format on the internet. This leads to automatic support for MP4 audio by all browsers.
HTML5 Video
Playing Videos in HTML
Before HTML5, there was no standard for showing videos on a web page.
Before HTML5, videos could only be played with a plug-in (like flash).
The HTML5 <video> element specifies a standard way to embed a video in a web page.
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 »
How it Works
The controls attribute adds video controls, like play, pause, and volume.
Text between the <video> and </video> tags will only display in browsers that do not support
the <video> element.
Multiple <source> elements can link to different video files. The browser will use the first
recognized format.
Example
<video width="320" height="240" autoplay>
<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 autoplay attribute does not work in Safari and Opera, or in mobile devices like iPad and
iPhone.
Safari YES NO NO
Opera YES (from Opera 25) YES YES
MP4 video/mp4
WebM video/webm
Ogg video/ogg
This allows you to load, play, and pause videos, as well as setting duration and volume.
There are also DOM events that can notify you when a video begins to play, is paused, etc.
Try it yourself »
Defines multiple media resources for media elements, such as <video> and
<source>
<audio>
HTML5 Audio
HTML5 provides a standard for playing audio files.
Before HTML5, audio files could only be played with a plug-in (like flash).
The HTML5 <audio> element specifies a standard way to embed audio in a web page.
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 »
Text between the <audio> and </audio> tags will display in browsers that do not support the
<audio> element.
Multiple <source> elements can link to different audio files. The browser will use the first
recognized format.
MP3 audio/mpeg
Ogg audio/ogg
Wav audio/wav
This allows you to load, play, and pause audios, as well as setting duration and volume.
There are also DOM events that can notify you when an audio begins to play, is paused, etc.
Defines multiple media resources for media elements, such as <video> and
<source>
<audio>
HTML Plug-ins
The purpose of a plug-in, is to extend the functionality of the HTML browser.
Plug-ins can be added to web pages with the <object> tag or the <embed> tag.
Plug-ins can be used for many purposes: display maps, scan for viruses, verify your bank id, etc.
To display video and audio: Use the <video> and <audio> tags.
It is used to embed plug-ins (like Java applets, PDF readers, Flash Players) in web pages.
Example
<object width="400" height="50" data="bookmark.swf"></object>
Try it Yourself »
Example
<object width="100%" height="500px" data="snippet.html"></object>
Try it Yourself »
Example
<object data="audi.jpeg"></object>
Try it Yourself »
The <embed> element also defines an embedded object within an HTML document.
Web browsers have supported the <embed> element for a long time. However, it has not been a
part of the HTML specification before HTML5. The element will validate in an HTML5 page,
but not in an HTML 4 page.
Example
<embed width="400" height="50" src="bookmark.swf">
Try it Yourself »
Note that the <embed> element does not have a closing tag. It cannot contain alternative text.
Example
<embed width="100%" height="500px" src="snippet.html">
Try it Yourself »
Example
<embed src="audi.jpeg">
Try it Yourself »
Earlier in this tutorial, you have seen that you might have to convert your videos to different
video formats to make them play in all browsers.
YouTube Video Id
YouTube will display an id (like XGSy3_Czz8k), when you save (or play) a video.
You can use this id, and refer to your video in HTML.
Use the width and height attributes to specify the dimension of the player
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>
Try it Yourself »
YouTube Parameters
autohide
Value 1: The player controls hides automatically when the video plays.
Value 2 (default): If the player has 16:9 or 4:3 ratio, same as 1, otherwise same as 0.
autoplay
Value 0 (default): The video will not play automatically when the player loads.
Value 1: The video will play automatically when the player loads.
controls
Value 0: Player controls does not display. The video loads immediately.
Value 2: Player controls display, but the video does not load before the user initiates playback.
loop
Value 0 (default): The video will play only once.
playlist
A comma separated list of videos to play (in addition to the original URL).
data="http://www.youtube.com/embed/XGSy3_Czz8k">
</object>
Try it Yourself »
src="http://www.youtube.com/embed/XGSy3_Czz8k">
Try it Yourself »
HTML5 Geolocation
HTML Geolocation is used to locate a user's position.
Since this can compromise user privacy, the position is not available unless the user approves it.
Browser Support
The numbers in the table specify the first browser version that fully supports Geolocation.
API
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 {
function showPosition(position) {
</script>
Try it yourself »
Example explained:
If supported, run the getCurrentPosition() method. If not, display a message to the user
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:
break;
case error.POSITION_UNAVAILABLE:
break;
case error.TIMEOUT:
break;
case error.UNKNOWN_ERROR:
break;
Try it yourself »
Error Codes:
Permission denied - The user did not allow Geolocation
To display the result in a map, you need access to a map service that can use latitude and
longitude, like Google Maps:
Example
function showPosition(position) {
"+latlon+"&zoom=14&size=400x300&sensor=false";
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).
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:
The getCurrentPosition() method returns an object if it is successful. The latitude, longitude and
accuracy properties are always returned. The other properties below are returned if available.
Property Description
watchPosition() - Returns the current position of the user and continues to return updated
position as the user moves (like the GPS in a car).
The example below shows the watchPosition() method. You need an accurate GPS device to test
this (like iPhone):
Example
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(showPosition);
} else {
function showPosition(position) {
}
</script>
Try it yourself »
W3Schools
Drag and drop is a very common feature. It is when you "grab" an object and drag it to a
different location.
In HTML5, drag and drop is part of the standard, and any element can be draggable.
Browser Support
The numbers in the table specify the first browser version that fully supports Drag and Drop.
API
<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
ev.preventDefault();
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
function drop(ev) {
ev.preventDefault();
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.
First of all: To make an element draggable, set the draggable attribute to true:
<img draggable="true">
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").
The ondragover event specifies where the dragged data can be dropped.
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();
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() method. This method will return any data
that was set to the same type in the setData() method
With local storage, web applications can store data locally within the user's browser.
Before HTML5, application data had to be stored in cookies, included in every server request.
Local storage is more secure, and large amounts of data can be stored locally, without affecting
website performance.
Unlike cookies, the storage limit is far larger (at least 5MB) and information is never transferred
to the server.
Local storage is per domain. All pages, from one domain, can store and access the same data.
Browser Support
The numbers in the table specify the first browser version that fully supports Local Storage.
API
HTML local storage provides two objects for storing data on the client:
window.sessionStorage - stores data for one session (data is lost when the browser tab is
closed)
Before using local storage, check browser support for localStorage and sessionStorage:
} else {
The localStorage object stores the data with no expiration date. The data will not be deleted
when the browser is closed, and will be available the next day, week, or year.
Example
// Store
localStorage.setItem("lastname", "Smith");
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname");
Try it Yourself »
Example explained:
Retrieve the value of "lastname" and insert it into the element with id="result"
// Store
localStorage.lastname = "Smith";
// Retrieve
document.getElementById("result").innerHTML = localStorage.lastname;
localStorage.removeItem("lastname");
Note: Name/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;
Try it Yourself »
The sessionStorage object is equal to the localStorage object, except that it stores the data for
only one session. The data is deleted when the user closes the specific browser tab.
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;
HTML5 introduces application cache, which means that a web application is cached, and
accessible without an internet connection.
Offline browsing - users can use the application when they're offline
Reduced server load - the browser will only download updated/changed resources from the
server
Browser Support
The numbers in the table specify the first browser version that fully supports Application Cache.
API
Example
<!DOCTYPE HTML>
<html manifest="demo.appcache">
<body>
</body>
</html>
Try it Yourself »
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).
The recommended file extension for manifest files is: ".appcache"
Note A manifest file needs to be served with the correct media type, which is "text/cache-
manifest". Must be configured on the web server.
The manifest file is a simple text file, which tells the browser what to cache (and what to never
cache).
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.
Once an application is cached, it remains cached until one of the following happens:
CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js
NETWORK:
login.asp
FALLBACK:
/html/ /offline.html
Note 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 site).
When executing scripts in an HTML page, the page becomes unresponsive until the script is
finished.
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
The numbers in the table specify the first browser version that fully support Web Workers.
API
The example below creates a simple web worker that count numbers in the background:
Example
Count numbers:
Try it yourself »
Before creating a web worker, check whether the user's browser supports it:
// Some code.....
} else {
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 post a
message back to the HTML page.
Note: Normally web workers are not used for such simple scripts, but for more CPU intensive
tasks.
Now that we have the web worker file, we need to call it from an HTML page.
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.
When a web worker object is created, it will continue to listen for messages (even after the
external script is finished) until it is terminated.
To terminate a web worker, and free browser/computer resources, use the terminate() method:
w.terminate();
If you set the worker variable to undefined, after it has been terminated, you can reuse the code:
w = undefined;
We have already seen the Worker code in the .js file. Below is the code for the HTML page:
Example
<!DOCTYPE html>
<html>
<body>
<script>
var w;
function startWorker() {
if(typeof(w) == "undefined") {
w = new Worker("demo_workers.js");
w.onmessage = function(event) {
document.getElementById("result").innerHTML = event.data;
};
} else {
function stopWorker() {
w.terminate();
w = undefined;
</script>
</body>
</html>
Try it yourself »
Since web workers are in external files, they do not have access to the following JavaScript
objects:
A server-sent event is when a web page automatically gets 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
The numbers in the table specify the first browser version that fully support server-sent events.
API
Example
source.onmessage = function(event) {
};
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")
When an onmessage event occurs, put the received data into the element with id="result"
// Some code.....
} else {
For the example above to work, you need a server capable of sending data updates (like PHP or
ASP).
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');
flush();
?>
Code in ASP (VB) (demo_sse.asp):
<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Flush()
%>
Code explained:
In the examples above we used the onmessage event to get messages. But other events are also
available:
Events Description