HTML N HTML 5 Tutorial
HTML N HTML 5 Tutorial
This HTML tutorial contains hundreds of HTML examples. With our online HTML editor, you can edit the HTML, and click on a button to view the result.
Example
<!DOCTYPE html> <html> <body> <h1>My First Heading</h1> <p>My first paragraph.</p> </body> </html>
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.
Don't worry if the examples use tags you have not learned.
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 Note: The link address is specified in the href attribute. (You will learn about attributes in a later chapter of this tutorial).
HTML Images
HTML images are defined with the <img> tag.
Example
<img src="w3schools.jpg" width="104" height="142"> HTML documents are defined by HTML elements.
HTML Elements
An HTML element is everything from the start tag to the end tag:
Element content <p> This is a paragraph <a href="default.htm"> This is a link <br>
Start tag *
* The start tag is often called the opening tag. The end tag is often called the closing tag.
An HTML element starts with a start tag / opening tag An HTML element ends with an end tag / closing tag The element content is everything between the start and the end tag Some HTML elements have empty content Empty elements are closed in the start tag Most HTML elements can have attributes
Tip: You will learn about attributes in the next chapter of this tutorial.
<p>This is my first paragraph.</p> </body> </html> The example above contains 3 HTML elements.
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 .
HTML Attributes
Previous Next Chapter
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
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.
HTML Lines
The <hr>tag creates a horizontal line in an HTML page. The hr element can be used to separate content:
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. Comments are written like this:
Example
<!-- This is a comment --> Try it yourself HTML documents are divided into paragraphs.
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 The <br> element is an empty HTML element. It has no end tag.
Text formatting How to format text in an HTML document. Preformatted text How to control the line breaks and spaces with the pre tag. "Computer output" tags How different "computer output" tags will be displayed. Address How to define contact information for the author/owner of an HTML document. Abbreviations and acronyms How to handle abbreviations and acronyms. Text direction How to change the text direction. Quotations How to handle long and short quotations. Deleted and inserted text How to mark deleted and inserted text.
Description Defines an abbreviation or acronym Defines contact information for the author/owner of a document Defines the text direction Defines a section that is quoted from another source Defines an inline (short) quotation Defines the title of a work Defines a definition term
An unvisited link is underlined and blue A visited link is underlined and purple An active link is underlined and red
Example
<a href="http://www.w3schools.com/">Visit W3Schools</a> which will display like this: Visit W3Schools Clicking on this hyperlink will send the user to W3Schools' homepage. Tip: The "Link text" doesn't have to be text. It can be an image or any other HTML element.
The target attribute specifies where to open the linked document. 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
Example
An anchor with an id inside an HTML document: <a id="tips">Useful Tips Section</a> Create a link to the "Useful Tips Section" inside the same document: <a href="#tips">Visit the Useful Tips Section</a> 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. Break out of a frame How to break out of a frame (if your site is locked in a frame). Create a mailto link How to link to a mail message (will only work if you have mail installed). Create a mailto link 2 Another mailto link.
defines a title in the browser toolbar provides a title for the page when it is added to favorites
A simplified HTML document: <!DOCTYPE html> <html> <head> <title>Title of the document</title> </head> <body> The content of the document...... </body> </html>
<script> <style>
Try it yourself
Inline - using the style attribute in HTML elements Internal - using the <style> element in the <head> section External - using an external CSS file
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. You can learn everything about CSS in our CSS Tutorial.
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:
<p style="color:blue;margin-left:20px;">This is a paragraph.</p>
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
The background-color property makes the "old" bgcolor attribute obsolete. Try it yourself: Background color the old way
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>
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
The text-align property makes the old <center> tag obsolete. Try it yourself: Centered heading the old way
HTML Images
Previous Next Chapter
Try it yourself
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).
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).
More Examples
Aligning images How to align an image within the text. Let an image float to the left and to the right How to let an image float to the left or right of a paragraph.
Make a hyperlink of an image How to use an image as a link. Create an image map How to create an image map, with clickable regions. Each region is a hyperlink.
HTML Tables
Previous Next Chapter
Tables How to create tables in an HTML document. (You can find more examples at the bottom of this page).
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>
</tr> </table>
More Examples
Tables without borders How to create tables without borders.
Table headers How to create table headers. Table with a caption How to add a caption to a table. Table cells that span more than one row/column How to define table cells that span more than one row or one column. Tags inside a table How to display elements inside other elements. 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 > <colgrou Specifies a group of one or more columns in a table for p> formatting <col> Specifies column properties for each column within a <colgroup> element
<thead> Groups the header content in a table <tbody> Groups the body content in a table <tfoot> Groups the footer content in a table
HTML Lists
Previous Next Chapter
The most common HTML lists are ordered and unordered lists:
HTML Lists
An ordered list: 1. The first list item 2. The second list item 3. The third list item An unordered list: List item List item
List item
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. (You can find more examples at the bottom of this page).
Coffee Milk
<li>Milk</li> </ol>
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.
HTML Layouts
Previous
Next Chapter
Web page layout is very important to make your website look good. Design your webpage layout very carefully.
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!
Example
<!DOCTYPE html> <html> <body> <div id="container" style="width:500px">
<div id="header" style="background-color:#FFA500;"> <h1 style="margin-bottom:0;">Main Title of Web Page</h1></div> <div id="menu" style="background-color:#FFD700;height:200px;width:100px;float:left;"> <b>Menu</b><br> HTML<br> CSS<br> JavaScript</div> <div id="content" style="background-color:#EEEEEE;height:200px;width:400px;float:left;"> Content goes here</div> <div id="footer" style="background-color:#FFA500;clear:both;text-align:center;"> Copyright W3Schools.com</div> </div> </body> </html> Try it yourself
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> <table width="500" border="0"> <tr> <td colspan="2" style="background-color:#FFA500;"> <h1>Main Title of Web Page</h1> </td> </tr> <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
Copyright W3Schools.com
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. The <form> tag is used to create an HTML form:
<form> . input elements . </form>
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>
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>
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>
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>
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:
<form name="input" action="html_form_action.asp" method="get"> Username: <input type="text" name="user"> <input type="submit" value="Submit"> </form>
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.
Drop-down list with a pre-selected value How to create a drop-down list with a pre-selected value. 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. Form with text fields and a submit button How to create a form with two text fields and a submit button. Form with checkboxes How to create a form with two checkboxes and a submit button. Form with radio buttons How to create a form with two radio buttons, and a submit button. Send e-mail from a form How to send e-mail from a form.
<textarea> Defines a multiline input control (text area) <label> Defines a label for an <input> element
<fieldset> Groups related elements in a form <legend> <select> Defines a caption for a <fieldset> element Defines a drop-down list
<optgroup Defines a group of related options in a drop> down list <option> Defines an option in a drop-down list
<button>
<datalist> Specifies a list of pre-defined options for New input controls <keygen> Defines a key-pair generator field (for forms) New <output>N Defines the result of a calculation ew
HTML Iframes
An iframe is used to display a web page within a web page.
Example
<iframe src="demo_iframe.htm" width="200" height="200"></iframe> Try it yourself
Example
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 #000000 #FF0000 #00FF00 #0000FF #FFFF00 #00FFFF #FF00FF #C0C0C0 #FFFFFF Color RGB rgb(0,0,0) rgb(255,0,0) rgb(0,255,0) rgb(0,0,255) rgb(255,255,0 ) rgb(0,255,255 ) rgb(255,0,255 ) rgb(192,192,1 92) rgb(255,255,2 55)
Try it yourself
#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:
Gray Shades Color HEX Color RGB
#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) #686868 #707070 #787878 #808080 #888888 #909090 #989898 #A0A0A0 #A8A8A8 #B0B0B0 #B8B8B8 rgb(104,104,1 04) rgb(112,112,1 12) rgb(120,120,1 20) rgb(128,128,1 28) rgb(136,136,1 36) rgb(144,144,1 44) rgb(152,152,1 52) rgb(160,160,1 60) rgb(168,168,1 68) rgb(176,176,1 76) rgb(184,184,1 84)
#C0C0C0 rgb(192,192,1
#D0D0D rgb(208,208,2 0 08) #D8D8D rgb(216,216,2 8 16) #E0E0E0 #E8E8E8 #F0F0F0 #F8F8F8 #FFFFFF rgb(224,224,2 24) rgb(232,232,2 32) rgb(240,240,2 40) rgb(248,248,2 48) rgb(255,255,2 55)
330000 333300 336600 339900 33CC00 33FF00 660000 663300 666600 669900 66CC00 66FF00 990000 993300 996600 999900 99CC00 99FF00 CC0000 CC3300 CC6600 CC9900 CCCC00 CCFF00 FF0000 FF3300
330033 333333 336633 339933 33CC33 33FF33 660033 663333 666633 669933 66CC33 66FF33 990033 993333 996633 999933 99CC33 99FF33 CC0033 CC3333 CC6633 CC9933 CCCC33 CCFF33 FF0033 FF3333
330066 333366 336666 339966 33CC66 33FF66 660066 663366 666666 669966 66CC66 66FF66 990066 993366 996666 999966 99CC66 99FF66 CC0066 CC3366 CC6666 CC9966 CCCC66 CCFF66 FF0066 FF3366
330099 333399 336699 339999 33CC99 33FF99 660099 663399 666699 669999 66CC99 66FF99 990099 993399 996699 999999 99CC99 99FF99 CC0099 CC3399 CC6699 CC9999 CCCC99 CCFF99 FF0099 FF3399
3300CC 3333CC 3366CC 3399CC 33CCCC 33FFCC 6600CC 6633CC 6666CC 6699CC 66CCCC 66FFCC 9900CC 9933CC 9966CC 9999CC 99CCCC 99FFCC CC00CC CC33CC CC66CC CC99CC CCCCCC CCFFCC FF00CC FF33CC
3300FF 3333FF 3366FF 3399FF 33CCFF 33FFFF 6600FF 6633FF 6666FF 6699FF 66CCFF 66FFFF 9900FF 9933FF 9966FF 9999FF 99CCFF 99FFFF CC00FF CC33FF CC66FF CC99FF CCCCFF CCFFFF FF00FF FF33FF
Blue BlueViolet Brown BurlyWood CadetBlue Chartreuse Chocolate Coral CornflowerBlue Cornsilk Crimson Cyan DarkBlue DarkCyan DarkGoldenRod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet
#0000FF #8A2BE2 #A52A2A #DEB887 #5F9EA0 #7FFF00 #D2691E #FF7F50 #6495ED #FFF8DC #DC143C #00FFFF #00008B #008B8B #B8860B #A9A9A9 #006400 #BDB76B #8B008B #556B2F #FF8C00 #9932CC #8B0000 #E9967A #8FBC8F #483D8B #2F4F4F #00CED1 #9400D3
Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix
DeepPink DeepSkyBlue DimGray DodgerBlue FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold GoldenRod Gray Green GreenYellow HoneyDew HotPink IndianRed Indigo Ivory Khaki Lavender LavenderBlush LawnGreen LemonChiffon LightBlue LightCoral LightCyan
#FF1493 #00BFFF #696969 #1E90FF #B22222 #FFFAF0 #228B22 #FF00FF #DCDCDC #F8F8FF #FFD700 #DAA520 #808080 #008000 #ADFF2F #F0FFF0 #FF69B4 #CD5C5C #4B0082 #FFFFF0 #F0E68C #E6E6FA #FFF0F5 #7CFC00 #FFFACD #ADD8E6 #F08080 #E0FFFF
Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix
LightGoldenRodYel #FAFAD2
low LightGray LightGreen LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linen Magenta Maroon #D3D3D3 #90EE90 #FFB6C1 #FFA07A #20B2AA #87CEFA #778899 #B0C4DE #FFFFE0 #00FF00 #32CD32 #FAF0E6 #FF00FF #800000 Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix
MediumSpringGre #00FA9A en MediumTurquoise #48D1CC MediumVioletRed #C71585 MidnightBlue MintCream MistyRose Moccasin #191970 #F5FFFA #FFE4E1 #FFE4B5
NavajoWhite Navy OldLace Olive OliveDrab Orange OrangeRed Orchid PaleGoldenRod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip PeachPuff Peru Pink Plum PowderBlue Purple Red RosyBrown RoyalBlue SaddleBrown Salmon SandyBrown SeaGreen SeaShell Sienna Silver SkyBlue
#FFDEAD #000080 #FDF5E6 #808000 #6B8E23 #FFA500 #FF4500 #DA70D6 #EEE8AA #98FB98 #AFEEEE #DB7093 #FFEFD5 #FFDAB9 #CD853F #FFC0CB #DDA0DD #B0E0E6 #800080 #FF0000 #BC8F8F #4169E1 #8B4513 #FA8072 #F4A460 #2E8B57 #FFF5EE #A0522D #C0C0C0 #87CEEB
Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix
SlateBlue SlateGray Snow SpringGreen SteelBlue Tan Teal Thistle Tomato Turquoise Violet Wheat White WhiteSmoke Yellow YellowGreen
#6A5ACD #708090 #FFFAFA #00FF7F #4682B4 #D2B48C #008080 #D8BFD8 #FF6347 #40E0D0 #EE82EE #F5DEB3 #FFFFFF #F5F5F5 #FFFF00 #9ACD32
Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix Shades Mix
MediumBlue Blue DarkGreen Green Teal DarkCyan DeepSkyBlue DarkTurquoise MediumSpringGreen Lime SpringGreen Aqua Cyan MidnightBlue DodgerBlue LightSeaGreen ForestGreen SeaGreen DarkSlateGray LimeGreen MediumSeaGreen Turquoise RoyalBlue SteelBlue DarkSlateBlue MediumTurquoise
#0000CD #0000FF #006400 #008000 #008080 #008B8B #00BFFF #00CED1 #00FA9A #00FF00 #00FF7F #00FFFF #00FFFF #191970 #1E90FF #20B2AA #228B22 #2E8B57 #2F4F4F #32CD32 #3CB371 #40E0D0 #4169E1 #4682B4 #483D8B #48D1CC
Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades
Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix
Indigo DarkOliveGreen CadetBlue CornflowerBlue MediumAquaMarine DimGray SlateBlue OliveDrab SlateGray LightSlateGray MediumSlateBlue LawnGreen Chartreuse Aquamarine Maroon Purple Olive Gray SkyBlue LightSkyBlue BlueViolet DarkRed DarkMagenta SaddleBrown DarkSeaGreen LightGreen
#4B0082 #556B2F #5F9EA0 #6495ED #66CDAA #696969 #6A5ACD #6B8E23 #708090 #778899 #7B68EE #7CFC00 #7FFF00 #7FFFD4 #800000 #800080 #808000 #808080 #87CEEB #87CEFA #8A2BE2 #8B0000 #8B008B #8B4513 #8FBC8F #90EE90
Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades
Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix
MediumPurple DarkViolet PaleGreen DarkOrchid YellowGreen Sienna Brown DarkGray LightBlue GreenYellow PaleTurquoise LightSteelBlue PowderBlue FireBrick DarkGoldenRod MediumOrchid RosyBrown DarkKhaki Silver MediumVioletRed IndianRed Peru Chocolate Tan LightGray Thistle
#9370DB #9400D3 #98FB98 #9932CC #9ACD32 #A0522D #A52A2A #A9A9A9 #ADD8E6 #ADFF2F #AFEEEE #B0C4DE #B0E0E6 #B22222 #B8860B #BA55D3 #BC8F8F #BDB76B #C0C0C0 #C71585 #CD5C5C #CD853F #D2691E #D2B48C #D3D3D3 #D8BFD8
Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades
Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix
Orchid GoldenRod PaleVioletRed Crimson Gainsboro Plum BurlyWood LightCyan Lavender DarkSalmon Violet PaleGoldenRod LightCoral Khaki AliceBlue HoneyDew Azure SandyBrown Wheat Beige WhiteSmoke MintCream GhostWhite Salmon AntiqueWhite Linen
#DA70D6 #DAA520 #DB7093 #DC143C #DCDCDC #DDA0DD #DEB887 #E0FFFF #E6E6FA #E9967A #EE82EE #EEE8AA #F08080 #F0E68C #F0F8FF #F0FFF0 #F0FFFF #F4A460 #F5DEB3 #F5F5DC #F5F5F5 #F5FFFA #F8F8FF #FA8072 #FAEBD7 #FAF0E6
Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades
Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix
LightGoldenRodYellow OldLace Red Fuchsia Magenta DeepPink OrangeRed Tomato HotPink Coral DarkOrange LightSalmon Orange LightPink Pink Gold PeachPuff NavajoWhite Moccasin Bisque MistyRose BlanchedAlmond PapayaWhip LavenderBlush SeaShell Cornsilk
#FAFAD2 #FDF5E6 #FF0000 #FF00FF #FF00FF #FF1493 #FF4500 #FF6347 #FF69B4 #FF7F50 #FF8C00 #FFA07A #FFA500 #FFB6C1 #FFC0CB #FFD700 #FFDAB9 #FFDEAD #FFE4B5 #FFE4C4 #FFE4E1 #FFEBCD #FFEFD5 #FFF0F5 #FFF5EE #FFF8DC
Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades Shades
Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix Mix
HTML Scripts
Previous Next Chapter
Example
<script> document.write("Hello World!") </script> Try it yourself
Example
<script> document.write("Hello World!") </script> <noscript>Sorry, your browser does not support JavaScript!</noscript> 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. A character entity looks like this:
&entity_name;
OR
&#entity_number;
To display a less than sign we must write: < or < 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.
For a complete reference of all character entities, visit our HTML Entities Reference.
A URL is another word for a web address. 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.
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) domain - defines the Internet domain name, like w3schools.com 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) filename - defines the name of a document/resource
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 Gnter
For a complete reference of all URL encodings, visit our URL Encoding Reference.
HTML5 Introduction
Previous Next Chapter
HTML5
New Elements New Attributes Full CSS3 Support Video and Audio 2D/3D Graphics Local Storage Local SQL Database Web Applications
Example
<!DOCTYPE HTML> <html> <body> <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> </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.
Reduce the need for external plugins (like Flash) Better error handling More markup to replace scripting HTML5 should be device independent The development process should be visible to the public
The <canvas> element for 2D drawing The <video> and <audio> elements for media playback Support for local storage New content-specific elements, like <article>, <footer>, <header>, <nav>, <section> New form controls, like calendar, date, time, email, url, search
HTML5 References
At W3Schools you will find complete references about tags, global attributes, standard events, and more. HTML5 Reference
<keygen> <output>
Defines a key-pair generator field (for forms) Defines the result of a calculation
Removed Elements
The following HTML 4.01 elements are removed from HTML5:
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:
Your browser does not support the <canvas> element.
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: By default, the <canvas> element has no border and no content. The markup looks like this:
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. To add a border, use the style attribute:
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
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 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. The upper-left corner of the canvas has coordinate (0,0) So, the fillRect() method above had the parameters (0,0,150,75). This means: Start at the upper-left corner (0,0) and draw a 150x75 pixels rectangle. Coordinates Example Mouse over the rectangle below to see its x and y coordinates:
X Y
Canvas - Paths
To draw straight lines on a canvas, we will use the following two methods:
moveTo(x,y) defines the starting point of the line lineTo(x,y) defines the ending point of the line
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:
Your browser does not support the HTML5 canvas tag.
JavaScript:
var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.moveTo(0,0);
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:
Your browser does not support the HTML5 canvas tag.
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:
font - defines the font properties for text fillText(text,x,y) - Draws "filled" text on the canvas strokeText(text,x,y) - Draws text on the canvas (no fill)
Using fillText():
Example
Write a 30px high filled text on the canvas, using the font "Arial":
Your browser does not support the HTML5 canvas tag.
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":
Your browser does not support the HTML5 canvas tag.
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. There are two different types of gradients:
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
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"); // Fill with gradient ctx.fillStyle=grd; ctx.fillRect(10,10,150,80); Try it yourself
Using createRadialGradient():
Example
Create a radial/circular gradient. Fill rectangle with the gradient:
Your browser does not support the HTML5 canvas tag.
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"); // Fill with gradient ctx.fillStyle=grd; ctx.fillRect(10,10,150,80); 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:
Your browser does not support the HTML5 canvas tag.
JavaScript:
var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var img=document.getElementById("scream"); ctx.drawImage(img,10,10); Try it yourself
Tag <canvas>
Description Used to draw graphics, on the fly, via scripting (usually JavaScript)
What is SVG?
SVG stands for Scalable Vector Graphics SVG is used to define vector-based graphics for the Web SVG defines the graphics in XML format SVG graphics do NOT lose any quality if they are zoomed or resized Every element and every attribute in SVG files can be animated SVG is a W3C recommendation
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 scalable SVG images can be printed with high quality at any resolution 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.
Example
<!DOCTYPE html> <html> <body> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190"> <polygon points="100,10 40,180 190,60 10,60 160,180" style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;"> </svg> </body> </html> Try it yourself
Result:
Sorry, your browser does not support inline SVG.
Canvas
SVG
Resolution dependent No support for event handlers Poor text rendering capabilities You can save the resulting image as .png or .jpg Well suited for graphic-intensive games
Resolution independent Support for event handlers Best suited for applications with large rendering areas (Google Maps) Slow rendering if complex (anything that uses the DOM a lot will be slow) Not suited for game applications
Browser Support
Internet Explorer 9+, Firefox, Opera, Chrome, and Safari support drag and drop. Note: Drag and drop does not work in Safari 5.1.2.
Example
<!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(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); } </script> </head> <body> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69"> </body> </html> Try it yourself
It might seem complicated, but lets go through all the different parts of a drag and drop event.
In this case, the data type is "Text" and the value is the id of the draggable element ("drag1").
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 The dragged data is the id of the dragged element ("drag1") Append the dragged element into the drop element
Drag image back and forth How to drag (and drop) an image back and forth between two <div> elements. <!DOCTYPE HTML> <html> <head> <style type="text/css"> #div1, #div2 {float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;} </style> <script> function allowDrop(ev) { ev.preventDefault(); }
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"> <img src="img_w3slogo.gif" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31"></div> <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
</body> </html>
HTML5 Geolocation
Previous Next Chapter
Browser Support
Internet Explorer 9+, Firefox, Chrome, Safari and Opera support Geolocation. Note: Geolocation is much more accurate for devices with GPS, like iPhone.
Use the getCurrentPosition() method to get the user's position. 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:
Check if Geolocation is supported If supported, run the getCurrentPosition() method. If not, display a message to the user If the getCurrentPosition() method is successful, it returns a coordinates object to the function specified in the parameter ( showPosition ) 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:
Permission denied - The user did not allow Geolocation Position unavailable - It is not possible to get the current location Timeout - The operation timed out
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:
Up-to-date local information Showing Points-of-interest near the user Turn-by-turn navigation (GPS)
coords.altitudeAccu The altitude accuracy of position racy coords.heading coords.speed timestamp The heading as degrees clockwise from North The speed in meters per second The date/time of the response
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{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.
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.
NO YES NO
YES NO YES
YES NO YES
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
Example 1
Create simple play/pause + resize controls for a video:
The example above calls two methods: play() and pause(). It also uses two properties: paused and width.
Try it yourself
HTML5 Audio
Previous Next Chapter
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.
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.
color date datetime datetime-local email 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:
Select your favorite color: <input type="color" name="favcolor"> Try it yourself
Example
Define a date control:
Birthday: <input type="date" name="bday"> Try it yourself
Example
Example
Define a date and time control (no time zone):
Birthday (date and time): <input type="datetime-local" name="bdaytime"> Try it yourself
Example
Define a field for an e-mail address (will be automatically validated when submitted):
E-mail: <input type="email" name="email"> Try it yourself
Tip: Safari on iPhone recognizes the email type, and changes the on-screen keyboard to match it (adds @ and .com options).
The month type allows the user to select a month and year.
Example
Define a month and year control (no time zone):
Birthday (month and year): <input type="month" name="bdaymonth"> Try it yourself
Example
Define a numeric field (with restrictions):
Quantity (between 1 and 5): <input type="number" name="quantity" min="1" max="5"> Try it yourself
max - specifies the maximum value allowed min - specifies the minimum value allowed step - specifies the legal number intervals value - Specifies the default value
Example
Define a control for entering a number whose exact value is not important (like a slider control):
<input type="range" name="points" min="1" max="10"> Try it yourself
max - specifies the maximum value allowed min - specifies the minimum value allowed step - specifies the legal number intervals value - Specifies the default value
Example
Define a search field (like a site search, or Google search):
Search Google: <input type="search" name="googlesearch"> Try it yourself
Example
Define a field for entering a telephone number:
Telephone: <input type="tel" name="usrtel">
Try it yourself
Example
Define a control for entering a time (no time zone):
Select a time: <input type="time" name="usr_time"> Try it yourself
Example
Define a field for entering a URL:
Add your homepage: <input type="url" name="homepage"> Try it yourself
Tip: Safari on iPhone recognizes the url input type, and changes the on-screen keyboard to match it (adds .com option).
Example
Define a week and year control (no time zone):
Select a week: <input type="week" name="week_year"> Try it yourself
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.
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
Example
A form with a keygen field:
<form action="demo_keygen.asp" method="get"> Username: <input type="text" name="usr_name"> Encryption: <keygen name="security"> <input type="submit"> </form> Try it yourself
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
autocomplete novalidate
autocomplete autofocus form formaction formenctype formmethod formnovalidate formtarget height and width list min and max multiple pattern (regexp) placeholder required step
Example
An HTML form with autocomplete on (and off for one input field):
<form action="demo_form.asp" autocomplete="on"> First name:<input type="text" name="fname"><br> Last name: <input type="text" name="lname"><br>
E-mail: <input type="email" name="email" autocomplete="off"><br> <input type="submit"> </form> Try it yourself
Tip: In some browsers you may need to activate the autocomplete function for this to work.
Example
Indicates that the form is not to be validated on submit:
<form action="demo_form.asp" novalidate> E-mail: <input type="email" name="user_email"> <input type="submit"> </form> Try it yourself
Example
Let the "First name" input field automatically get focus when the page loads:
First name:<input type="text" name="fname" autofocus> Try it yourself
Example
An input field located outside the HTML form (but still a part of the form):
<form action="demo_form.asp" id="form1"> First name: <input type="text" name="fname"><br> <input type="submit" value="Submit"> </form> Last name: <input type="text" name="lname" form="form1"> Try it yourself
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"
Example
Send form-data that is default encoded (the first submit button), and encoded as "multipart/form-data" (the second submit button):
<form action="demo_post_enctype.asp" method="post"> First name: <input type="text" name="fname"><br> <input type="submit" value="Submit"> <input type="submit" formenctype="multipart/form-data" value="Submit as Multipart/form-data"> </form> Try it yourself
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
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
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
Example
Define an image as the submit button, with height and width attributes:
<input type="image" src="img_submit.gif" alt="Submit" width="48" height="48"> Try it yourself
The list attribute refers to a <datalist> element that contains pre-defined options for an <input> 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
Example
<input> elements with min and max values:
Enter a date before 1980-01-01: <input type="date" name="bday" max="1979-12-31"> Enter a date after 2000-01-01: <input type="date" name="bday" min="2000-01-02"> Quantity (between 1 and 5): <input type="number" name="quantity" min="1" max="5"> Try it yourself
Example
A file upload field that accepts multiple values:
Select images: <input type="file" name="img" multiple> Try it yourself
Example
An input field that can contain only three letters (no numbers or special characters):
Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code"> Try it yourself
Example
An input field with a placeholder text:
<input type="text" name="fname" placeholder="First name"> Try it yourself
Example
A required input field:
Username: <input type="text" name="usrname" required> Try it yourself
Example: if step="3", legal numbers could be -3, 0, 3, 6, etc. 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:
<input type="number" name="points" step="3"> Try it yourself
autocomplete novalidate
autocomplete autofocus
form formaction formenctype formmethod formnovalidate formtarget height and width list min and max multiple pattern (regexp) placeholder required step
Example
An HTML form with autocomplete on (and off for one input field):
<form action="demo_form.asp" autocomplete="on"> First name:<input type="text" name="fname"><br> Last name: <input type="text" name="lname"><br> E-mail: <input type="email" name="email" autocomplete="off"><br> <input type="submit"> </form>
Try it yourself
Tip: In some browsers you may need to activate the autocomplete function for this to work.
Example
Indicates that the form is not to be validated on submit:
<form action="demo_form.asp" novalidate> E-mail: <input type="email" name="user_email"> <input type="submit"> </form> Try it yourself
Example
Let the "First name" input field automatically get focus when the page loads:
First name:<input type="text" name="fname" autofocus> Try it yourself
Example
An input field located outside the HTML form (but still a part of the form):
<form action="demo_form.asp" id="form1"> First name: <input type="text" name="fname"><br> <input type="submit" value="Submit"> </form> Last name: <input type="text" name="lname" form="form1"> Try it yourself
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
Example
Send form-data that is default encoded (the first submit button), and encoded as "multipart/form-data" (the second submit button):
<form action="demo_post_enctype.asp" method="post"> First name: <input type="text" name="fname"><br> <input type="submit" value="Submit"> <input type="submit" formenctype="multipart/form-data" value="Submit as Multipart/form-data"> </form> Try it yourself
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
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
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
Example
Define an image as the submit button, with height and width attributes:
<input type="image" src="img_submit.gif" alt="Submit" width="48" height="48"> 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
Example
<input> elements with min and max values:
Enter a date before 1980-01-01: <input type="date" name="bday" max="1979-12-31"> Enter a date after 2000-01-01: <input type="date" name="bday" min="2000-01-02"> Quantity (between 1 and 5): <input type="number" name="quantity" min="1" max="5"> Try it yourself
Example
A file upload field that accepts multiple values:
Select images: <input type="file" name="img" multiple> Try it yourself
Example
An input field that can contain only three letters (no numbers or special characters):
Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code"> Try it yourself
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:
<input type="text" name="fname" placeholder="First name"> Try it yourself
Example
A required input field:
Username: <input type="text" name="usrname" required> 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:
<input type="number" name="points" step="3"> Try it yourself
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.
localStorage - stores data with no expiration date sessionStorage - stores data for one session
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:
Retrieve the value of the "lastname" key and insert it into the element with id="result"
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
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
With HTML5 it is easy to make an offline version of a web application, by creating a cache manifest file.
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
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" 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
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.
The user clears the browser's cache The manifest file is modified (see tip below) The application cache is programmatically updated
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.
A web worker is a JavaScript running in the background, without affecting the performance of the page.
Browser Support
Internet Explorer 10, Firefox, Chrome, Safari and Opera support Web workers.
Example
Count numbers:
Try it yourself
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.
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. Add an "onmessage" event listener to 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.
Example
<!DOCTYPE html> <html> <body> <p>Count numbers: <output id="result"></output></p> <button onclick="startWorker()">Start Worker</button> <button onclick="stopWorker()">Stop Worker</button> <br><br>
<script> var w; 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
Next Chapter
HTML5 Server-Sent Events allow a web page to get updates from a server.
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"
In the tryit example above there were some extra lines of code to check browser support for server-sent events:
if(typeof(EventSource)!=="undefined") { // Yes! Server-sent events support! // Some code..... } else { // Sorry! No server-sent events support.. }
Code explained:
Set the "Content-Type" header to "text/event-stream" Specify that the page should not cache Output the data to send (Always start with "data: ") Flush the output data back to the web page
HTML Multimedia
Previous Next Chapter
Multimedia on the web is sound, music, videos, and animations. Modern web browsers have support for many multimedia formats.
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. In this tutorial you will learn about different 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). You will learn more about plug-ins in the next chapters.
Multimedia Formats
Multimedia elements (like sounds or videos) are stored in media files. 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.
Format File Description 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 nonWindows computers because no player is available .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
MPEG
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 MP4 .swf Flash was developed by Macromedia. Flash requires an extra component to play. .flv This component comes preinstalled with all major browsers .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.
Format File Description 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).
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 WMA .wav WAVE (more known as WAV) was developed by IBM and Microsoft. WAVs are compatible with Windows, Macintosh, and Linux operating systems . 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.
A helper application is a small computer program that extends the standard functionality of the browser. Helper applications are also called plug-ins. Plug-ins are often used by browsers to play audio and video. Examples of well-known plug-ins are Adobe Flash Player and QuickTime. 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.
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
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.
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
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
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
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
<embed> Defines an embedded object <object> <param> Defines an embedded object Defines a parameter for an object
<audio>N Defines sound content ew <video>Ne Defines a video or movie w <source>N Defines multiple media resources for media elements ew (<video> and <audio>) <track>Ne Defines text tracks for media elements (<video> and w <audio>)
HTML Videos
Previous Next Chapter
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
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 <video> element works in all modern 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:
You must convert your videos to many different formats The <video> element does not work in older browsers
Problems:
The easiest way to display videos in HTML is to use YouTube (see next chapter)!
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
<embed> Defines an embedded object <object> <param> Defines an embedded object Defines a parameter for an object
<audio>N Defines sound content ew <video>Ne Defines a video or movie w <source>N Defines multiple media resources for media elements
ew
<track>Ne Defines text tracks for media elements (<video> and w <audio>)
The easiest way to play videos (others or your own) in HTML is to use YouTube.