01.HTML
01.HTML
com
HTML Introduction
❮ Previous Next ❯
What is HTML?
HTML is the standard markup language for creating Web pages.
Example
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
</body>
</html>
Try it Yourself »
Example Explained
The <!DOCTYPE html> declaration defines this document to be HTML5
The <html> element is the root element of an HTML page
The <head> element contains meta information about the document
The <title> element specifies a title for the document
The <body> element contains the visible page content
The <h1> element defines a large heading
The <p> element defines a paragraph
HTML Tags
HTML tags are element names surrounded by angle brackets:
Tip: The start tag is also called the opening tag, and the end tag the closing tag.
Web Browsers
The purpose of a web browser (Chrome, IE, Firefox, Safari) is to read HTML documents
and display them.
The browser does not display the HTML tags, but uses them to determine how to display
the document:
<html>
<head>
<title>Page title</title>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
w3schools.com
HTML Editors
❮ Previous Next ❯
However, for learning HTML we recommend a simple text editor like Notepad (PC) or
TextEdit (Mac).
Follow the four steps below to create your first web page with Notepad or TextEdit.
Open the Start Screen (the window symbol at the bottom left on your screen). Type
Notepad.
Windows 7 or earlier:
Then under "Open and Save", check the box that says "Display HTML files as HTML code
instead of formatted text".
<!DOCTYPE html>
<html>
<body>
</body>
</html>
1 Write With Con dence Get rid of typos, grammatical mistakes, and misused words with a single click. Try now! Grammarly
2 Create a Free Website Free to Try and Free to Keep. SimpleSite Makes it Easy - You Make it Great. SimpleSite.com/Website
Name the file "index.htm" and set the encoding to UTF-8 (which is the preferred
encoding for HTML files).
You can use either .htm or .html as file extension. There is no difference, it is up to
you.
It is the perfect tool when you want to test code fast. It also has color coding and the
ability to save and share code with others:
Example
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Try it Yourself »
❮ Previous Next ❯
w3schools.com
Don't worry if these examples use tags you have not learned.
HTML Documents
All HTML documents must start with a document type declaration: <!DOCTYPE html> .
The HTML document itself begins with <html> and ends with </html> .
The visible part of the HTML document is between <body> and </body> .
Example
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Try it Yourself »
HTML Headings
HTML headings are defined with the <h1> to <h6> tags.
<h1> defines the most important heading. <h6> defines the least important heading:
Example
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
Try it Yourself »
HTML Images
HTML images are defined with the <img> tag.
The source file ( src ), alternative text ( alt ), width , and height are provided as
attributes:
Example
Try it Yourself »
HTML Buttons
HTML buttons are defined with the <button> tag:
Example
<button>Click me</button>
Try it Yourself »
HTML Lists
HTML lists are defined with the <ul> (unordered/bullet list) or the <ol>
(ordered/numbered list) tag, followed by <li> tags (list items):
Example
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
Try it Yourself »
❮ Previous Next ❯
w3schools.com
HTML Elements
❮ Previous Next ❯
HTML Elements
An HTML element usually consists of a start tag and end tag, with the content inserted in
between:
The HTML element is everything from the start tag to the end tag:
<br>
HTML elements with no content are called empty elements. Empty elements do not
have an end tag, such as the <br> element (which indicates a line break).
Example
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Try it Yourself »
Example Explained
The <html> element defines the whole document.
<html>
<body>
</body>
</html>
The element content is two other HTML elements ( <h1> and <p> ).
<body>
</body>
Example
<html>
<body>
<p>This is a paragraph
<p>This is a paragraph
</body>
</html>
Try it Yourself »
The example above works in all browsers, because the closing tag is considered optional.
Never rely on this. It might 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):
Example
Try it Yourself »
Empty elements can be "closed" in the opening tag like this: <br />.
HTML5 does not require empty elements to be closed. But if you want stricter validation,
or if you need to make your document readable by XML parsers, you must close all HTML
elements properly.
The HTML5 standard does not require lowercase tags, but W3C recommends lowercase
in HTML, and demands lowercase for stricter document types like XHTML.
HTML Attributes
❮ Previous Next ❯
HTML Attributes
All HTML elements can have attributes
Attributes provide additional information about an element
Attributes are always specified in the start tag
Attributes usually come in name/value pairs like: name="value"
Example
Try it Yourself »
You will learn more about links and the <a> tag later in this tutorial.
The src Attribute
HTML images are defined with the <img> tag.
Example
<img src="img_girl.jpg">
Try it Yourself »
Example
Try it Yourself »
The image size is specified in pixels: width="500" means 500 pixels wide.
You will learn more about images in our HTML Images chapter.
The value of the attribute can be read by screen readers. This way, someone "listening"
to the webpage, e.g. a vision impaired person, can "hear" the element.
Example
<img src="img_girl.jpg" alt="Girl with a jacket">
Try it Yourself »
The alt attribute is also useful if the image does not exist:
Example
See what happens if we try to display an image that does not exist:
Try it Yourself »
Example
Try it Yourself »
You will learn more about styling later in this tutorial, and in our CSS Tutorial.
<!DOCTYPE html>
<html lang="en-US">
<body>
...
</body>
</html>
The first two letters specify the language (en). If there is a dialect, use two more letters
(US).
Example
Try it Yourself »
The title attribute can be written with uppercase or lowercase like title or TITLE.
W3C recommends lowercase in HTML, and demands lowercase for stricter document
types like XHTML.
Bad
<a href=https://www.w3schools.com>
Try it Yourself »
Good
<a href="https://www.w3schools.com">
Try it Yourself »
W3C recommends quotes in HTML, and demands quotes for stricter document types
like XHTML.
Sometimes it is necessary to use quotes. This example will not display the title attribute
correctly, because it contains a space:
Example
Try it Yourself »
Using quotes are the most common. Omitting quotes can produce errors.
At W3Schools we always use quotes around attribute values.
In some situations, when the attribute value itself contains double quotes, it is necessary
to use single quotes:
Or vice versa:
Try it Yourself »
Chapter Summary
All HTML elements can have attributes
The title attribute provides additional "tool-tip" information
The href attribute provides address information for links
The width and height attributes provide size information for images
The alt attribute provides text for screen readers
At W3Schools we always use lowercase attribute names
At W3Schools we always quote attribute values with double quotes
HTML Exercises
Submit Answer »
HTML Attributes
Below is an alphabetical list of some attributes often used in HTML, which you will learn
more about in this tutorial:
Attribute Description
alt Specifies an alternative text for an image, when the image cannot be
displayed
A complete list of all attributes for each HTML element, is listed in our: HTML
Attribute Reference.
❮ Previous Next ❯
w3schools.com
HTML Headings
❮ Previous Next ❯
Headings
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Try it Yourself »
HTML Headings
Headings are defined with the <h1> to <h6> tags.
<h1> defines the most important heading. <h6> defines the least important heading.
Example
<h1>Heading 1</h1>
<h2>Heading 2</h2>
<h3>Heading 3</h3>
<h4>Heading 4</h4>
<h5>Heading 5</h5>
<h6>Heading 6</h6>
Try it Yourself »
Note: Browsers automatically add some white space (a margin) before and after a
heading.
Users skim your pages by its headings. It is important to use headings to show the
document structure.
<h1> headings should be used for main headings, followed by <h2> headings, then the
less important <h3> , and so on.
Note: Use HTML headings for headings only. Don't use headings to make text BIG
or bold.
Bigger Headings
Each HTML heading has a default size. However, you can specify the size for any heading
with the style attribute, using the CSS font-size property:
Example
Try it Yourself »
HTML Horizontal Rules
The <hr> tag defines a thematic break in an HTML page, and is most often displayed as
a horizontal rule.
The <hr> element is used to separate content (or define a change) in an HTML page:
Example
Try it Yourself »
The <head> element is a container for metadata. HTML metadata is data about the HTML
document. Metadata is not displayed.
The <head> element is placed between the <html> tag and the <body> tag:
Example
<!DOCTYPE html>
<html>
<head>
<title>My First HTML</title>
<meta charset="UTF-8">
</head>
<body>
.
.
.
Try it Yourself »
Note: Metadata typically define the document title, character set, styles, links,
scripts, and other meta information.
HTML Exercises
Exercise:
Use the correct HTML tag to add a heading with the text "London".
<p>London is the capital city of England. It is the most
populous city in the United Kingdom, with a metropolitan
area of over 13 million inhabitants.</p>
Submit Answer »
You will learn more about HTML tags and attributes in the next chapters of this tutorial.
Tag Description
<head> A container for all the head elements (title, scripts, styles, meta
information, and more)
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
HTML Paragraphs
❮ Previous Next ❯
HTML Paragraphs
The HTML <p> element defines a paragraph:
Example
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
Try it Yourself »
Note: Browsers automatically add some white space (a margin) before and after a
paragraph.
HTML Display
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 any extra spaces and extra lines when the page is displayed:
Example
<p>
This paragraph
contains a lot of lines
in the source code,
but the browser
ignores it.
</p>
<p>
This paragraph
contains a lot of spaces
in the source code,
but the browser
ignores it.
</p>
Try it Yourself »
Example
<p>This is a paragraph.
<p>This is another paragraph.
Try it Yourself »
The example above will work in most browsers, but do not rely on it.
Note: Dropping the end tag can produce unexpected results or errors.
Use <br> if you want a line break (a new line) without starting a new paragraph:
Example
Try it Yourself »
The <br> tag is an empty tag, which means that it has no end tag.
Example
<p>
My Bonnie lies over the ocean.
Try it Yourself »
The HTML <pre> Element
The HTML <pre> element defines preformatted text.
The text inside a <pre> element is displayed in a fixed-width font (usually Courier), and
it preserves both spaces and line breaks:
Example
<pre>
My Bonnie lies over the ocean.
Try it Yourself »
HTML Exercises
Exercise:
Use the correct HTML tag to add a paragraph with the text "Hello World!".
<html>
<body>
</body>
</html>
Submit Answer »
Tag Description
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
HTML Styles
❮ Previous Next ❯
Example
I am Red
I am Blue
I am Big
Try it Yourself »
<tagname style="property:value;">
Example
<body style="background-color:powderblue;">
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
Try it Yourself »
Example
Try it Yourself »
HTML Fonts
The font-family property defines the font to be used for an HTML element:
Example
Try it Yourself »
Example
Try it Yourself »
Example
Try it Yourself »
Chapter Summary
Use the style attribute for styling HTML elements
Use background-color for background color
Use color for text colors
Use font-family for text fonts
Use font-size for text sizes
Use text-align for text alignment
HTML Exercises
Exercise:
Use the correct HTML attribute, and CSS, to set the color of the paragraph to
"blue".
Submit Answer »
❮ Previous Next ❯
w3schools.com
Text Formatting
Try it Yourself »
HTML also defines special elements for defining text with a special meaning.
HTML uses elements like <b> and <i> for formatting output, like bold or italic text.
Example
Try it Yourself »
The HTML <strong> element defines strong text, with added semantic "strong"
importance.
Example
Try it Yourself »
Example
<i>This text is italic</i>
Try it Yourself »
The HTML <em> element defines emphasized text, with added semantic importance.
Example
Try it Yourself »
Note: Browsers display <strong> as <b> , and <em> as <i> . However, there is a
difference in the meaning of these tags: <b> and <i> defines bold and italic text,
but <strong> and <em> means that the text is "important".
Example
Try it Yourself »
Example
Example
Try it Yourself »
Example
Try it Yourself »
Example
Try it Yourself »
HTML <sup> Element
superscripted
The HTML <sup> element defines text.
Example
Try it Yourself »
HTML Exercises
Exercise:
Add extra importance to the word "degradation" in the paragraph below.
<p>
WWF's mission is to stop the degradation
of our planet's natural environment.
</p>
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
COLOR PICKER
HOW TO
Tabs
Dropdowns
Accordions
Side Navigation
Top Navigation
Modal Boxes
Progress Bars
Parallax
w3schools.com
Quotation
For 50 years, WWF has been protecting the future of nature. The
world's leading conservation organization, WWF works in 100 countries
and is supported by 1.2 million members in the United States and
close to 5 million globally.
Try it Yourself »
Example
Example
Try it Yourself »
Marking abbreviations can give useful information to browsers, translation systems and
search-engines.
Example
<p>The <abbr title="World Health Organization">WHO</abbr> was founded
in 1948.</p>
Try it Yourself »
The <address> element is usually displayed in italic. Most browsers will add a line break
before and after the element.
Example
<address>
Written by John Doe.<br>
Visit us at:<br>
Example.com<br>
Box 564, Disneyland<br>
USA
</address>
Try it Yourself »
Example
Try it Yourself »
HTML <bdo> for Bi-Directional Override
The HTML <bdo> element defines bi-directional override.
Example
Try it Yourself »
HTML Exercises
Exercise:
Use an HTML element to add quotation marks around the letters "cool".
<p>
I am so cool .
</p>
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
HTML Comments
❮ Previous Next ❯
Comment tags are used to insert comments in the HTML source code.
Notice that there is an exclamation point (!) in the opening tag, but not in the closing tag.
Note: Comments are not displayed by the browser, but they can help document
your HTML source code.
With comments you can place notifications and reminders in your HTML:
Example
<p>This is a paragraph.</p>
Comments are also great for debugging HTML, because you can comment out HTML lines
of code, one at a time, to search for errors:
Example
Try it Yourself »
HTML Exercises
Exercise:
Use the HTML comment tag to make a comment out of the "This is a comment"
text.
<h1>This is a heading</h1>
This is a comment
<p>This is a paragraph.</p>
Submit Answer »
HTML Colors
❮ Previous Next ❯
HTML colors are specified using predefined color names, or RGB, HEX, HSL, RGBA,
HSLA values.
Color Names
In HTML, a color can be specified by using a color name:
Tomato
Orange
DodgerBlue
MediumSeaGreen
Gray
SlateBlue
Violet
LightGray
Try it Yourself »
Background Color
You can set the background color for HTML elements:
Hello World
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad
minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip
ex ea commodo consequat.
Example
Text Color
You can set the color of text:
Hello World
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl
ut aliquip ex ea commodo consequat.
Example
Try it Yourself »
Border Color
You can set the color of borders:
Hello World
Hello World
Hello World
Example
<h1 style="border:2px solid Tomato;">Hello World</h1>
<h1 style="border:2px solid DodgerBlue;">Hello World</h1>
<h1 style="border:2px solid Violet;">Hello World</h1>
Try it Yourself »
Color Values
In HTML, colors can also be specified using RGB values, HEX values, HSL values, RGBA
values, and HSLA values:
#ff6347
Example
RGB Value
In HTML, a color can be specified as an RGB value, using this formula:
Each parameter (red, green, and blue) defines the intensity of the color between 0 and
255.
For example, rgb(255, 0, 0) is displayed as red, because red is set to its highest value
(255) and the others are set to 0.
To display the color black, all color parameters must be set to 0, like this: rgb(0, 0, 0).
To display the color white, all color parameters must be set to 255, like this: rgb(255,
255, 255).
RED
255
GREEN
99
BLUE
71
Example
rgb(255, 0, 0)
rgb(0, 0, 255)
rgb(255, 165, 0)
Try it Yourself »
Shades of gray are often defined using equal values for all the 3 light sources:
Example
rgb(0, 0, 0)
rgb(60, 60, 60)
Try it Yourself »
HEX Value
In HTML, a color can be specified using a hexadecimal value in the form:
#rrggbb
Where rr (red), gg (green) and bb (blue) are hexadecimal values between 00 and ff
(same as decimal 0-255).
For example, #ff0000 is displayed as red, because red is set to its highest value (ff) and
the others are set to the lowest value (00).
Example
#ff0000
#0000ff
#3cb371
#ee82ee
#ffa500
#6a5acd
Try it Yourself »
Shades of gray are often defined using equal values for all the 3 light sources:
Example
#000000
#3c3c3c
#787878
#b4b4b4
#f0f0f0
#ffffff
Try it Yourself »
HSL Value
In HTML, a color can be specified using hue, saturation, and lightness (HSL) in the form:
Hue is a degree on the color wheel from 0 to 360. 0 is red, 120 is green, and 240 is blue.
Saturation is a percentage value, 0% means a shade of gray, and 100% is the full color.
Lightness is also a percentage, 0% is black, 50% is neither light or dark, 100% is white
Example
Try it Yourself »
Saturation
Saturation can be described as the intensity of a color.
50% is 50% gray, but you can still see the color.
Example
Try it Yourself »
Lightness
The lightness of a color can be described as how much light you want to give the color,
where 0% means no light (black), 50% means 50% light (neither dark nor light) 100%
means full lightness (white).
Example
Try it Yourself »
Shades of gray are often defined by setting the hue and saturation to 0, and adjust the
lightness from 0% to 100% to get darker/lighter shades:
Example
Try it Yourself »
RGBA Value
RGBA color values are an extension of RGB color values with an alpha channel - which
specifies the opacity for a color.
The alpha parameter is a number between 0.0 (fully transparent) and 1.0 (not
transparent at all):
Example
Try it Yourself »
HSLA Value
HSLA color values are an extension of HSL color values with an alpha channel - which
specifies the opacity for a color.
The alpha parameter is a number between 0.0 (fully transparent) and 1.0 (not
transparent at all):
Example
Try it Yourself »
w3schools.com
C o l o r s , B o x e s
CSS saves a lot of work. It can control the layout of multiple web pages all at once.
Tip: You can learn much more about CSS in our CSS Tutorial.
Inline CSS
An inline CSS is used to apply a unique style to a single HTML element.
This example sets the text color of the <h1> element to blue:
Example
Try it Yourself »
Internal CSS
An internal CSS is used to define a style for a single HTML page.
An internal CSS is defined in the <head> section of an HTML page, within a <style>
element:
Example
<!DOCTYPE html>
<html>
<head>
<style>
body {background-color: powderblue;}
h1 {color: blue;}
p {color: red;}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Try it Yourself »
External CSS
An external style sheet is used to define the style for many HTML pages.
With an external style sheet, you can change the look of an entire web site, by
changing one file!
To use an external style sheet, add a link to it in the <head> section of the HTML page:
Example
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Try it Yourself »
An external style sheet can be written in any text editor. The file must not contain any
HTML code, and must be saved with a .css extension.
body {
background-color: powderblue;
}
h1 {
color: blue;
}
p {
color: red;
}
CSS Fonts
The CSS color property defines the text color to be used.
Example
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
color: blue;
font-family: verdana;
font-size: 300%;
}
p {
color: red;
font-family: courier;
font-size: 160%;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Try it Yourself »
CSS Border
The CSS border property defines a border around an HTML element:
Example
p {
border: 1px solid powderblue;
}
Try it Yourself »
CSS Padding
The CSS padding property defines a padding (space) between the text and the border:
Example
p {
border: 1px solid powderblue;
padding: 30px;
}
Try it Yourself »
CSS Margin
The CSS margin property defines a margin (space) outside the border:
Example
p {
border: 1px solid powderblue;
margin: 50px;
}
Try it Yourself »
The id Attribute
To define a specific style for one special element, add an id attribute to the element:
then define a style for the element with the specific id:
Example
#p01 {
color: blue;
}
Try it Yourself »
Note: The id of an element should be unique within a page, so the id selector is used
to select one unique element!
then define a style for the elements with the specific class:
Example
p.error {
color: red;
}
Try it Yourself »
External References
External style sheets can be referenced with a full URL or with a path relative to the
current web page.
Example
<link rel="stylesheet"
href="https://www.w3schools.com/html/styles.css">
Try it Yourself »
This example links to a style sheet located in the html folder on the current web site:
Example
Try it Yourself »
This example links to a style sheet located in the same folder as the current page:
Example
Try it Yourself »
You can read more about file paths in the chapter HTML File Paths.
Chapter Summary
Use the HTML style attribute for inline styling
Use the HTML <style> element to define internal CSS
Use the HTML <link> element to refer to an external CSS file
Use the HTML <head> element to store <style> and <link> elements
Use the CSS color property for text colors
Use the CSS font-family property for text fonts
Use the CSS font-size property for text sizes
Use the CSS border property for borders
Use the CSS padding property for space inside the border
Use the CSS margin property for space outside the border
HTML Exercises
Exercise:
Use CSS to set the background color of the document (body) to yellow.
<!DOCTYPE html>
<html>
<head>
<style>
:yellow;
</style>
</head>
<body>
</body>
</html>
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
HTML Links
❮ Previous Next ❯
Links are found in nearly all web pages. Links allow users to click their way from
page to page.
When you move the mouse over a link, the mouse arrow will turn into a little hand.
Note: A link does not have to be text. It can be an image or any other HTML
element.
Example
<a href="https://www.w3schools.com/html/">Visit our HTML tutorial</a>
Try it Yourself »
The link text is the visible part (Visit our HTML tutorial).
Clicking on the link text will send you to the specified address.
Note: Without a forward slash at the end of subfolder addresses, you might
generate two requests to the server. Many servers will automatically add a forward
slash to the end of the address, and then create a new request.
Local Links
The example above used an absolute URL (a full web address).
A local link (link to the same web site) is specified with a relative URL (without
https://www....).
Example
Try it Yourself »
Example
<style>
a:link {
color: green;
background-color: transparent;
text-decoration: none;
}
a:visited {
color: pink;
background-color: transparent;
text-decoration: none;
}
a:hover {
color: red;
background-color: transparent;
text-decoration: underline;
}
a:active {
color: yellow;
background-color: transparent;
text-decoration: underline;
}
</style>
Try it Yourself »
This is a link
Example
<style>
a:link, a:visited {
background-color: #f44336;
color: white;
padding: 15px 25px;
text-align: center;
text-decoration: none;
display: inline-block;
}
a:hover, a:active {
background-color: red;
}
</style>
Try it Yourself »
This example will open the linked document in a new browser window/tab:
Example
Tip: If your webpage is locked in a frame, you can use target="_top" to break out of
the frame:
Example
Try it Yourself »
Example
<a href="default.asp">
<img src="smiley.gif" alt="HTML tutorial"
style="width:42px;height:42px;border:0;">
</a>
Try it Yourself »
Note: border:0; is added to prevent IE9 (and earlier) from displaying a border
around the image (when the image is a link).
Link Titles
The title attribute specifies extra information about an element. The information is
most often shown as a tooltip text when the mouse moves over the element.
Example
<a href="https://www.w3schools.com/html/" title="Go to W3Schools HTML
section">Visit our HTML Tutorial</a>
Try it Yourself »
To make a bookmark, you must first create the bookmark, and then add a link to it.
When the link is clicked, the page will scroll to the location with the bookmark.
Example
First, create a bookmark with the id attribute:
Then, add a link to the bookmark ("Jump to Chapter 4"), from within the same page:
Or, add a link to the bookmark ("Jump to Chapter 4"), from another page:
Example
Try it Yourself »
External Paths
External pages can be referenced with a full URL or with a path relative to the current
web page.
Example
Try it Yourself »
This example links to a page located in the html folder on the current web site:
Example
Try it Yourself »
This example links to a page located in the same folder as the current page:
Example
Try it Yourself »
You can read more about file paths in the chapter HTML File Paths.
Chapter Summary
Use the <a> element to define a link
Use the href attribute to define the link address
Use the target attribute to define where to open the linked document
Use the <img> element (inside <a>) to use an image as a link
Use the id attribute (id="value") to define bookmarks in a page
Use the href attribute (href="#value") to link to the bookmark
HTML Exercises
Exercise:
Use the correct HTML to make the text below into a link to "default.html".
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
HTML Images
❮ Previous Next ❯
Images can improve the design and the appearance of a web page.
Example
Try it Yourself »
Example
Try it Yourself »
Example
Try it Yourself »
The src attribute specifies the URL (web address) of the image:
<img src="url">
Example
Try it Yourself »
If a browser cannot find an image, it will display the value of the alt attribute:
Example
Try it Yourself »
Note: The alt attribute is required. A web page will not validate correctly without
it.
Example
Try it Yourself »
Example
Try it Yourself »
The width and height attributes always defines the width and height of the image in
pixels.
Note: Always specify the width and height of an image. If width and height are not
specified, the page might flicker while the image loads.
However, we suggest using the style attribute. It prevents styles sheets from changing
the size of images:
Example
<!DOCTYPE html>
<html>
<head>
<style>
img {
width: 100%;
}
</style>
</head>
<body>
</body>
</html>
Try it Yourself »
However, it is common to store images in a sub-folder. You must then include the folder
name in the src attribute:
Example
Try it Yourself »
Example
<img src="https://www.w3schools.com/images/w3schools_green.jpg"
alt="W3Schools.com">
Try it Yourself »
You can read more about file paths in the chapter HTML File Paths.
Animated Images
HTML allows animated GIFs:
Example
Try it Yourself »
Image as a Link
To use an image as a link, put the <img> tag inside the <a> tag:
Example
<a href="default.asp">
<img src="smiley.gif" alt="HTML tutorial"
style="width:42px;height:42px;border:0;">
</a>
Try it Yourself »
Note: border:0; is added to prevent IE9 (and earlier) from displaying a border
around the image (when the image is a link).
Image Floating
Use the CSS float property to let the image float to the right or to the left of a text:
Example
Try it Yourself »
Tip: To learn more about CSS Float, read our CSS Float Tutorial.
Image Maps
The <map> tag defines an image-map. An image-map is an image with clickable areas.
In the image below, click on the computer, the phone, or the cup of coffee:
Example
<map name="workmap">
<area shape="rect" coords="34,44,270,350" alt="Computer"
href="computer.htm">
<area shape="rect" coords="290,172,333,250" alt="Phone"
href="phone.htm">
<area shape="circle" coords="337,300,44" alt="Coffee"
href="coffee.htm">
</map>
Try it Yourself »
The name attribute of the <map> tag is associated with the <img> 's usemap attribute
and creates a relationship between the image and the map.
The <map> element contains a number of <area> tags, that define the clickable areas in
the image-map.
Background Image
To add a background image on an HTML element, use the CSS property background-
image :
Example
To add a background image on a web page, specify the background-image property
on the BODY element:
<body style="background-image:url('clouds.jpg');">
<h2>Background Image</h2>
</body>
Try it Yourself »
Example
To add a background image on a paragraph, specify the background-image property
on the P element:
<body>
<p style="background-image:url('clouds.jpg');">
...
</p>
</body>
Try it Yourself »
To learn more about background images, study our CSS Background Tutorial.
Each <source> element have attributes describing when their image is the most
suitable.
The browser will use the first <source> element with matching attribute values, and
ignore any following <source> elements.
Example
Show one picture if the browser window (viewport) is a minimum of 650 pixels, and
another image if not, but larger than 465 pixels.
<picture>
<source media="(min-width: 650px)" srcset="img_pink_flowers.jpg">
<source media="(min-width: 465px)" srcset="img_white_flower.jpg">
<img src="img_orange_flowers.jpg" alt="Flowers" style="width:auto;">
</picture>
Try it Yourself »
Note: Always specify an <img> element as the last child element of the <picture>
element. The <img> element is used by browsers that do not support the
<picture> element, or if none of the <source> tags matched.
Chapter Summary
Use the HTML <img> element to define an image
Use the HTML src attribute to define the URL of the image
Use the HTML alt attribute to define an alternate text for an image, if it cannot be
displayed
Use the HTML width and height attributes to define the size of the image
Use the CSS width and height properties to define the size of the image
(alternatively)
Use the CSS float property to let the image float
Use the HTML <map> element to define an image-map
Use the HTML <area> element to define the clickable areas in the image-map
Use the HTML <img> 's element usemap attribute to point to an image-map
Use the HTML <picture> element to show different images for different devices
Note: Loading images takes time. Large images can slow down your page. Use
images carefully.
HTML Exercises
Exercise:
Use the HTML image attributes to set the size of the image to 250 pixels wide
and 400 pixels tall.
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
COLOR PICKER
w3schools.com
HTML Tables
❮ Previous Next ❯
Try it Yourself »
Each table row is defined with the <tr> tag. A table header is defined with the <th>
tag. By default, table headings are bold and centered. A table data/cell is defined with the
<td> tag.
Example
<table style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
Try it Yourself »
Note: The <td> elements are the data containers of the table.
They can contain all sorts of HTML elements; text, images, lists, other tables, etc.
Example
table, th, td {
border: 1px solid black;
}
Try it Yourself »
Remember to define borders for both the table and the table cells.
Example
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
Try it Yourself »
If you do not specify a padding, the table cells will be displayed without padding.
Example
th, td {
padding: 15px;
}
Try it Yourself »
Example
th {
text-align: left;
}
Try it Yourself »
To set the border spacing for a table, use the CSS border-spacing property:
Example
table {
border-spacing: 5px;
}
Try it Yourself »
Example
<table style="width:100%">
<tr>
<th>Name</th>
<th colspan="2">Telephone</th>
</tr>
<tr>
<td>Bill Gates</td>
<td>55577854</td>
<td>55577855</td>
</tr>
</table>
Try it Yourself »
Example
<table style="width:100%">
<tr>
<th>Name:</th>
<td>Bill Gates</td>
</tr>
<tr>
<th rowspan="2">Telephone:</th>
<td>55577854</td>
</tr>
<tr>
<td>55577855</td>
</tr>
</table>
Try it Yourself »
Example
<table style="width:100%">
<caption>Monthly savings</caption>
<tr>
<th>Month</th>
<th>Savings</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$50</td>
</tr>
</table>
Try it Yourself »
Note: The <caption> tag must be inserted immediately after the <table> tag.
Example
<table id="t01">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
table#t01 {
width: 100%;
background-color: #f1f1c1;
}
Try it Yourself »
table#t01 tr:nth-child(even) {
background-color: #eee;
}
table#t01 tr:nth-child(odd) {
background-color: #fff;
}
table#t01 th {
color: white;
background-color: black;
}
Try it Yourself »
Chapter Summary
Use the HTML <table> element to define a table
Use the HTML <tr> element to define a table row
Use the HTML <td> element to define a table data
Use the HTML <th> element to define a table heading
Use the HTML <caption> element to define a table caption
Use the CSS border property to define a border
Use the CSS border-collapse property to collapse cell borders
Use the CSS padding property to add padding to cells
Use the CSS text-align property to align cell text
Use the CSS border-spacing property to set the spacing between cells
Use the colspan attribute to make a cell span many columns
Use the rowspan attribute to make a cell span many rows
Use the id attribute to uniquely define one table
HTML Exercises
Exercise:
Add a table row with two table headers.
The two table headers should have the value "Name" and "Age".
<table>
<tr>
<td>Jill Smith</td>
<td>50</td>
</tr>
</table>
Submit Answer »
Start the Exercise
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
HTML Lists
❮ Previous Next ❯
An Unordered List:
Item
Item
Item
Item
An Ordered List:
1. First item
2. Second item
3. Third item
4. Fourth item
Try it Yourself »
The list items will be marked with bullets (small black circles) by default:
Example
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
Try it Yourself »
Value Description
Example - Disc
<ul style="list-style-type:disc;">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
Try it Yourself »
Example - Circle
<ul style="list-style-type:circle;">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
Try it Yourself »
Example - Square
<ul style="list-style-type:square;">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
Try it Yourself »
Example - None
<ul style="list-style-type:none;">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
Try it Yourself »
<ol>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
Try it Yourself »
Type Description
type="I" The list items will be numbered with uppercase roman numbers
type="i" The list items will be numbered with lowercase roman numbers
Numbers:
<ol type="1">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
Try it Yourself »
Uppercase Letters:
<ol type="A">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
Try it Yourself »
Lowercase Letters:
<ol type="a">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
Try it Yourself »
<ol type="I">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
Try it Yourself »
<ol type="i">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
Try it Yourself »
The <dl> tag defines the description list, the <dt> tag defines the term (name), and the
<dd> tag describes each term:
Example
<dl>
<dt>Coffee</dt>
<dd>- black hot drink</dd>
<dt>Milk</dt>
<dd>- white cold drink</dd>
</dl>
Try it Yourself »
Example
<ul>
<li>Coffee</li>
<li>Tea
<ul>
<li>Black tea</li>
<li>Green tea</li>
</ul>
</li>
<li>Milk</li>
</ul>
Try it Yourself »
Note: List items can contain new list, and other HTML elements, like images and
links, etc.
Example
<ol start="50">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
Try it Yourself »
Example
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333333;
}
li {
float: left;
}
li a {
display: block;
color: white;
text-align: center;
padding: 16px;
text-decoration: none;
}
li a:hover {
background-color: #111111;
}
</style>
</head>
<body>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#about">About</a></li>
</ul>
</body>
</html>
Try it Yourself »
Tip: You can learn much more about CSS in our CSS Tutorial.
Chapter Summary
Use the HTML <ul> element to define an unordered list
Use the CSS list-style-type property to define the list item marker
Use the HTML <ol> element to define an ordered list
Use the HTML type attribute to define the numbering type
Use the HTML <li> element to define a list item
Use the HTML <dl> element to define a description list
Use the HTML <dt> element to define the description term
Use the HTML <dd> element to describe the term in a description list
Lists can be nested inside lists
List items can contain other HTML elements
Use the CSS property float:left or display:inline to display a list horizontally
HTML Exercises
Exercise:
Add a list item with the text "Coffee" inside the <ul> element.
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
COLOR PICKER
w3schools.com
Every HTML element has a default display value depending on what type of element
it is. The default display value for most elements is block or inline.
Block-level Elements
A block-level element always starts on a new line and takes up the full width available
(stretches out to the left and right as far as it can).
Example
<div>Hello</div>
<div>World</div>
Try it Yourself »
Inline Elements
An inline element does not start on a new line and only takes up as much width as
necessary.
Example
<span>Hello</span>
<span>World</span>
Try it Yourself »
The <div> element has no required attributes, but style , class and id are common.
When used together with CSS, the <div> element can be used to style blocks of content:
Example
<div style="background-color:black;color:white;padding:20px;">
<h2>London</h2>
<p>London is the capital city of England. It is the most populous
city in the United Kingdom, with a metropolitan area of over 13 million
inhabitants.</p>
</div>
Try it Yourself »
The <span> element has no required attributes, but style , class and id are
common.
When used together with CSS, the <span> element can be used to style parts of the
text:
Example
Try it Yourself »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
So, all HTML elements with the same class attribute will have the same format and
style.
Here we have three <div> elements that point to the same class name:
Example
<!DOCTYPE html>
<html>
<head>
<style>
.cities {
background-color: black;
color: white;
margin: 20px;
padding: 20px;
}
</style>
</head>
<body>
<div class="cities">
<h2>London</h2>
<p>London is the capital of England.</p>
</div>
<div class="cities">
<h2>Paris</h2>
<p>Paris is the capital of France.</p>
</div>
<div class="cities">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
</div>
</body>
</html>
Result:
London
London is the capital of England.
Paris
Paris is the capital of France.
Tokyo
Tokyo is the capital of Japan.
Try it Yourself »
Example
<!DOCTYPE html>
<html>
<head>
<style>
span.note {
font-size: 120%;
color: red;
}
</style>
</head>
<body>
</body>
</html>
Try it Yourself »
Example
Use CSS to style all elements with the class name "city":
<style>
.city {
background-color: tomato;
color: white;
padding: 10px;
}
</style>
<h2 class="city">London</h2>
<p>London is the capital of England.</p>
<h2 class="city">Paris</h2>
<p>Paris is the capital of France.</p>
<h2 class="city">Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
Result:
London
London is the capital of England.
Paris
Paris is the capital of France.
Tokyo
Tokyo is the capital of Japan.
Try it Yourself »
Multiple Classes
HTML elements can have more than one class name, each class name must be separated
by a space.
Example
Style elements with the class name "city", also style elements with the class name
"main":
Try it Yourself »
In the example above, the first <h2> element belongs to both the "city" class and the
"main" class.
Example
<h2 class="city">Paris</h2>
<p class="city">Paris is the capital of France</p>
Try it Yourself »
JavaScript can access elements with a specified class name by using the
getElementsByClassName() method:
Example
When a user clicks on a button, hide all elements with the class name "city":
<script>
function myFunction() {
var x = document.getElementsByClassName("city");
for (var i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
}
</script>
Try it Yourself »
Tip: Study JavaScript in the chapter HTML JavaScript, or in our JavaScript Tutorial.
HTML Exercises
Exercise:
Create a class selector named "special".
Add a color property with the value "blue" inside the "special" class.
<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
</body>
</html>
Submit Answer »
❮ Previous Next ❯
COLOR PICKER
HOW TO
w3schools.com
The id value can be used by CSS and JavaScript to perform certain tasks for a unique
element with the specified id value.
In CSS, to select an element with a specific id, write a hash (#) character, followed by the
id of the element:
Example
Use CSS to style an element with the id "myHeader":
<style>
#myHeader {
background-color: lightblue;
color: black;
padding: 40px;
text-align: center;
}
</style>
Result:
My Header
Try it Yourself »
Note: The id value must contain at least one character, and must not contain
whitespace (spaces, tabs, etc.).
Example
<style>
/* Style the element with the id "myHeader" */
#myHeader {
background-color: lightblue;
color: black;
padding: 40px;
text-align: center;
}
<h2 class="city">Paris</h2>
<p>Paris is the capital of France.</p>
<h2 class="city">Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
Try it Yourself »
Tip: You can learn much more about CSS in our CSS Tutorial.
To make a bookmark, you must first create the bookmark, and then add a link to it.
When the link is clicked, the page will scroll to the location with the bookmark.
Example
First, create a bookmark with the id attribute:
Then, add a link to the bookmark ("Jump to Chapter 4"), from within the same page:
<a href="#C4">Jump to Chapter 4</a>
Or, add a link to the bookmark ("Jump to Chapter 4"), from another page:
Example
Try it Yourself »
Example
Use the id attribute to manipulate text with JavaScript:
<script>
function displayResult() {
document.getElementById("myHeader").innerHTML = "Have a nice day!";
}
</script>
Try it Yourself »
Tip: Study JavaScript in the HTML JavaScript chapter, or in our JavaScript Tutorial.
HTML Exercises
<!DOCTYPE html>
<html>
<head>
<style>
#myheader {color:red;}
</style>
</head>
<body>
</body>
</html>
Submit Answer »
❮ Previous Next ❯
w3schools.com
HTML Iframes
❮ Previous Next ❯
Iframe Syntax
An HTML iframe is defined with the <iframe> tag:
<iframe src="URL"></iframe>
The src attribute specifies the URL (web address) of the inline frame page.
Iframe - Set Height and Width
Use the height and width attributes to specify the size of the iframe.
The attribute values are specified in pixels by default, but they can also be in percent (like
"80%").
Example
Try it Yourself »
Or you can use CSS to set the height and width of the iframe:
Example
Try it Yourself »
To remove the border, add the style attribute and use the CSS border property:
Example
Try it Yourself »
With CSS, you can also change the size, style and color of the iframe's border:
Example
Try it Yourself »
The target attribute of the link must refer to the name attribute of the iframe:
Example
<p><a href="https://www.w3schools.com"
target="iframe_a">W3Schools.com</a></p>
Try it Yourself »
HTML Exercises
Exercise:
Create an iframe with a URL address that goes to https://www.w3schools.com.
<iframe ="https://www.w3schools.com"></iframe>
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
HTML CSS MORE
w3schools.com
HTML JavaScript
❮ Previous Next ❯
Example
My First JavaScript
Click me to display Date and Time
Try it Yourself »
Common uses for JavaScript are image manipulation, form validation, and dynamic
changes of content.
This JavaScript example writes "Hello JavaScript!" into an HTML element with id="demo":
HTML
Example CSS MORE
<script>
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
Try it Yourself »
Tip: You can learn much more about JavaScript in our JavaScript Tutorial.
A Taste of JavaScript
Here are some examples of what JavaScript can do:
Try it Yourself »
document.getElementById("demo").style.fontSize = "25px";
document.getElementById("demo").style.color = "red";
document.getElementById("demo").style.backgroundColor = "yellow";
Try it Yourself »
document.getElementById("image").src = "picture.gif";
Try it Yourself »
HTML CSS MORE
Create a Free Website
Build a Nice Website or Blog in 3 Minutes. No Ads, No OPEN
Trouble, Personal Domain
Example
<script>
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
Try it Yourself »
<noscript> Defines an alternate content for users that do not support client-side
scripts
HTML Exercises
<body>
<p id="demo">Hi.</p>
<script>
document. ("demo").innerHTML = "Hello
World!";
</script>
</body>
Submit Answer »
❮ Previous Next ❯
COLOR PICKER
HOW TO
HTML CSS MORE
w3schools.com
Path Description
Web pages
Images
Style sheets
JavaScripts
Example
Try it Yourself »
The <img> tag and the src and alt attributes are explained in the chapter about
HTML Images.
In this example, the file path points to a file in the images folder located at the root of the
current web:
Example
Try it Yourself »
In this example, the file path points to a file in the images folder located in the current
folder:
Example
Try it Yourself »
In this example, the file path points to a file in the images folder located in the folder one
level above the current folder:
HTML
Example CSS MORE
Try it Yourself »
Best Practice
It is best practice to use relative file paths (if possible).
When using relative file paths, your web pages will not be bound to your current base
URL. All links will work on your own computer (localhost) as well as on your current public
domain and your future public domains.
❮ Previous Next ❯
w3schools.com
HTML Head
❮ Previous Next ❯
HTML metadata is data about the HTML document. Metadata is not displayed.
Metadata typically define the document title, character set, styles, links, scripts, and other
meta information.
Example
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
The content of the document......
</body>
</html>
Try it Yourself »
Example
<style>
body {background-color: powderblue;}
h1 {color: red;}
p {color: blue;}
</style>
Try it Yourself »
Example
Try it Yourself »
<meta charset="UTF-8">
Example
<meta charset="UTF-8">
<meta name="description" content="Free Web tutorials">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="John Doe">
Try it Yourself »
The viewport is the user's visible area of a web page. It varies with the device, and will be
smaller on a mobile phone than on a computer screen.
You should include the following <meta> viewport element in all your web pages:
A <meta> viewport element gives the browser instructions on how to control the page's
dimensions and scaling.
The width=device-width part sets the width of the page to follow the screen-width of the
device (which will vary depending on the device).
The initial-scale=1.0 part sets the initial zoom level when the page is first loaded by the
browser.
Here is an example of a web page without the viewport meta tag, and the same web page
with the viewport <meta> tag:
Tip: If you are browsing this page with a phone or a tablet, you can click on the two
links below to see the difference.
Without the viewport meta tag
Example
<script>
function myFunction {
document.getElementById("demo").innerHTML = "Hello JavaScript!";
}
</script>
Try it Yourself »
Example
Try it Yourself »
Example
<!DOCTYPE html>
<title>Page Title</title>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
Try it Yourself »
Note:
W3Schools does not recommend omitting the <html> and <body> tags. Omitting
these tags can crash DOM or XML software and produce errors in older browsers
(IE9).
However, omitting the <head> tag has been a common practice for quite some time
now.
<base> Defines a default address or a default target for all links on a page
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
HTML Layouts
❮ Previous Next ❯
Cities
London
Paris
Tokyo
London
London is the capital city of England. It is the most populous city in the United Kingdom,
with a metropolitan area of over 13 million inhabitants.
Standing on the River Thames, London has been a major settlement for two millennia,
its history going back to its founding by the Romans, who named it Londinium.
Footer
Try it Yourself »
HTML5 offers new semantic elements that define the different parts of a web page:
2 Create a Free Website Build a Nice Website or Blog in 3 Minutes. No Ads, No Trouble, Personal Domain SimpleSite.com/Website
CSS Frameworks
If you want to create your layout fast, you can use a framework, like W3.CSS or
Bootstrap.
CSS Floats
It is common to do entire web layouts using the CSS float property. Float is easy to learn -
you just need to remember how the float and clear properties work. Disadvantages:
Floating elements are tied to the document flow, which may harm the flexibility. Learn
more about float in our CSS Float and Clear chapter.
Float Example
Cities
London
Paris
Tokyo
London
London is the capital city of England. It is the most populous city in the United Kingdom,
with a metropolitan area of over 13 million inhabitants.
Standing on the River Thames, London has been a major settlement for two millennia,
its history going back to its founding by the Romans, who named it Londinium.
Footer
Try it Yourself »
CSS Flexbox
Flexbox is a new layout mode in CSS3.
Use of flexbox ensures that elements behave predictably when the page layout must
accommodate different screen sizes and different display devices. Disadvantages: Does
not work in IE10 and earlier.
Flexbox Example
Cities
London
Paris
Tokyo
London
London is the capital city of England. It is the most populous city in the United Kingdom,
with a metropolitan area of over 13 million inhabitants.
Standing on the River Thames, London has been a major settlement for two millennia, its
history going back to its founding by the Romans, who named it Londinium.
Footer
Try it Yourself »
Learn more about CSS grids in our CSS Grid View chapter.
❮ Previous Next ❯
w3schools.com
Try it Yourself »
Example
Try it Yourself »
This will set the viewport of your page, which will give the browser instructions on how to
control the page's dimensions and scaling.
Here is an example of a web page without the viewport meta tag, and the same web page
with the viewport meta tag:
Tip: If you are browsing this page on a phone or a tablet, you can click on the two
links above to see the difference.
Responsive Images
Responsive images are images that scale nicely to fit any browser size.
Try it Yourself »
Notice that in the example above, the image can be scaled up to be larger than its
original size. A better solution, in many cases, will be to use the max-width property
instead.
Example
Try it Yourself »
Show Different Images Depending on Browser Width
The HTML <picture> element allows you to define different images for different browser
window sizes.
Resize the browser window to see how the image below change depending on the width:
Example
<picture>
<source srcset="img_smallflower.jpg" media="(max-width: 600px)">
<source srcset="img_flowers.jpg" media="(max-width: 1500px)">
<source srcset="flowers.jpg">
<img src="img_smallflower.jpg" alt="Flowers">
</picture>
Try it Yourself »
That way the text size will follow the size of the browser window:
Hello World
Resize the browser window to see how the text size scales.
Example
Try it Yourself »
Viewport is the browser window size. 1vw = 1% of viewport width. If the viewport is
50cm wide, 1vw is 0.5cm.
Media Queries
In addition to resize text and images, it is also common to use media queries in
responsive web pages.
With media queries you can define completely different styles for different browser sizes.
Example: resize the browser window to see that the three div elements below will display
horizontally on large screens and stacked vertically on small screens:
Left Menu
Main Content
Right Content
Example
<style>
.left, .right {
float: left;
width: 20%; /* The width is 20%, by default */
}
.main {
float: left;
width: 60%; /* The width is 60%, by default */
}
Try it Yourself »
Tip: To learn more about Media Queries and Responsive Web Design, read our RWD
Tutorial.
Using W3.CSS
A great way to create a responsive design, is to use a responsive style sheet, like W3.CSS
W3.CSS makes it easy to develop sites that look nice at any size; desktop, laptop, tablet,
or phone:
W3.CSS Demo
Resize the page to see the responsiveness!
London
London is the capital city of England.
It is the most populous city in the United Kingdom, with a metropolitan area of over
13 million inhabitants.
Paris
Paris is the capital of France.
The Paris area is one of the largest population centers in Europe, with more than 12
million inhabitants.
Tokyo
Tokyo is the capital of Japan.
It is the center of the Greater Tokyo Area, and the most populous metropolitan area
in the world.
Example
<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<body>
<div class="w3-row-padding">
<div class="w3-third">
<h2>London</h2>
<p>London is the capital city of England.</p>
<p>It is the most populous city in the United Kingdom,
with a metropolitan area of over 13 million inhabitants.</p>
</div>
<div class="w3-third">
<h2>Paris</h2>
<p>Paris is the capital of France.</p>
<p>The Paris area is one of the largest population centers in
Europe,
with more than 12 million inhabitants.</p>
</div>
<div class="w3-third">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
<p>It is the center of the Greater Tokyo Area,
and the most populous metropolitan area in the world.</p>
</div>
</div>
</body>
</html>
Try it Yourself »
To learn more about W3.CSS, read our W3.CSS Tutorial.
Bootstrap
Another popular framework is Bootstrap, it uses HTML, CSS and jQuery to make
responsive web pages.
Example
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min
.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js">
</script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.j
s"></script>
</head>
<body>
<div class="container">
<div class="jumbotron">
<h1>My First Bootstrap Page</h1>
</div>
<div class="row">
<div class="col-sm-4">
...
</div>
<div class="col-sm-4">
...
</div>
<div class="col-sm-4">
...
</div>
</div>
</div>
</body>
</html>
Try it Yourself »
❮ Previous Next ❯
COLOR PICKER
w3schools.com
Computer Code
<code>
x = 5;<br>
y = 6;<br>
z = x + y;
</code>
Try it Yourself »
Text surrounded by <kbd> tags is typically displayed in the browser's default monospace
font:
Example
Result:
Save the document by pressing Ctrl + S
Try it Yourself »
Example
<p>If you input wrong value, the program will return <samp>Error!
</samp></p>
Result:
Try it Yourself »
Example
<code>
x = 5;
y = 6;
z = x + y;
</code>
Result:
x = 5; y = 6; z = x + y;
Try it Yourself »
Notice that the <code> element does not preserve extra whitespace and line-breaks.
To fix this, you can put the <code> element inside a <pre> element:
Example
<pre>
<code>
x = 5;
y = 6;
z = x + y;
</code>
</pre>
Result:
x = 5;
y = 6;
z = x + y;
Try it Yourself »
Example
Result:
Try it Yourself »
HTML Exercises
Exercise:
Define the text "var person;" as programming code.
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
COLOR PICKER
w3schools.com
HTML Entities
❮ Previous Next ❯
Characters that are not present on your keyboard can also be replaced by entities.
HTML Entities
Some characters are reserved in HTML.
If you use the less than (<) or greater than (>) signs in your text, the browser might mix
them with tags.
&entity_name;
OR
&#entity_number;
A non-breaking space is a space that will not break into a new line.
Two words separated by a non-breaking space will stick together (not break into a new
line). This is handy when breaking the words might be disruptive.
Examples:
§ 10
10 km/h
10 PM
Another common use of the non-breaking space is to prevent browsers from truncating
spaces in HTML pages.
If you write 10 spaces in your text, the browser will remove 9 of them. To add real spaces
to your text, you can use the character entity.
The non-breaking hyphen (‑) lets you use a hyphen character (‑) that won't
break.
Some diacritical marks, like grave ( ̀) and acute ( ́) are called accents.
Diacritical marks can appear both above and below a letter, inside a letter, and between
two letters.
̀ a à à
́ a á á
̂ a â â
̃ a ã ã
̀ O Ò Ò
́ O Ó Ó
̂ O Ô Ô
̃ O Õ Õ
w3schools.com
HTML Symbols
❮ Previous Next ❯
Many mathematical, technical, and currency symbols, are not present on a normal
keyboard.
To add such symbols to an HTML page, you can use an HTML entity name.
If no entity name exists, you can use an entity number, a decimal, or hexadecimal
reference.
Example
Try it Yourself »
Some Mathematical Symbols Supported by HTML
Char Number Entity Description
❮ Previous Next ❯
w3schools.com
To display an HTML page correctly, a web browser must know which character set
(character encoding) to use.
ISO-8859-1 was the default character set for HTML 4. This character set also supported
256 different character codes.
ANSI (Windows-1252) was the original Windows character set. ANSI is identical to ISO-
8859-1, except that ANSI has 32 extra characters.
Because ANSI and ISO-8859-1 were so limited, HTML 4 also supported UTF-8.
UTF-8 (Unicode) covers almost all of the characters and symbols in the world.
For HTML4:
For HTML5:
<meta charset="UTF-8">
32 space
33 ! ! ! ! exclamation mark
35 # # # # number sign
36 $ $ $ $ dollar sign
37 % % % % percent sign
41 ) ) ) ) right parenthesis
42 * * * * asterisk
43 + + + + plus sign
44 , , , , comma
45 - - - - hyphen-minus
46 . . . . full stop
47 / / / / solidus
48 0 0 0 0 digit zero
49 1 1 1 1 digit one
50 2 2 2 2 digit two
51 3 3 3 3 digit three
52 4 4 4 4 digit four
53 5 5 5 5 digit five
54 6 6 6 6 digit six
55 7 7 7 7 digit seven
56 8 8 8 8 digit eight
57 9 9 9 9 digit nine
58 : : : : colon
59 ; ; ; ; semicolon
61 = = = = equals sign
63 ? ? ? ? question mark
64 @ @ @ @ commercial at
92 \ \ \ \ reverse solidus
93 ] ] ] ] right square bracket
94 ^ ^ ^ ^ circumflex accent
95 _ _ _ _ low line
96 ` ` ` ` grave accent
126 ~ ~ ~ ~ tilde
127 DEL
134 † dagger
149 • bullet
150 – en dash
151 — em dash
168 ¨ ¨ ¨ diaeresis
175 ¯ ¯ ¯ macron
184 ¸ ¸ ¸ cedilla
ASCII uses the values from 32 to 126 for letters, digits, and symbols.
ANSI has a proprietary set of characters for the values from 128 to 159.
UTF-8 is identical to both ANSI and 8859-1 for the values from 160 to 255.
UTF-8 continues from the value 256 with more than 10 000 different characters.
For a closer look, study our Complete HTML Character Set Reference.
The @charset CSS Rule
You can use the CSS @charset rule to specify the character encoding used in a style
sheet:
Example
Set the encoding of the style sheet to Unicode UTF-8:
@charset "UTF-8";
Read more about the CSS @charset Rule in our CSS Reference.
❮ Previous Next ❯
w3schools.com
Most people enter the name when surfing, because names are easier to remember
than numbers.
A Uniform Resource Locator (URL) is used to address a document (or other data) on the
web.
scheme://prefix.domain:port/path/filename
Explanation:
scheme - defines the type of Internet service (most common is http or https)
prefix - defines a domain prefix (default for http is www)
domain - defines the Internet domain name (like w3schools.com)
port - defines the port number at the host (default for http is 80)
path - defines a path at the server (If omitted: the root directory of the site)
filename - defines the name of a document or resource
URL Encoding
URLs can only be sent over the Internet using the ASCII character-set. If a URL contains
characters outside the ASCII set, the URL has to be converted.
URL encoding converts non-ASCII characters into a format that can be transmitted over
the Internet.
URL encoding replaces non-ASCII characters with a "%" followed by hexadecimal digits.
URLs cannot contain spaces. URL encoding normally replaces a space with a plus (+) sign,
or %20.
Try It Yourself
Hello Günter Submit
If you click "Submit", the browser will URL encode the input before it is sent to the server.
A page at the server will display the received input.
€ %80 %E2%82%AC
£ %A3 %C2%A3
© %A9 %C2%A9
® %AE %C2%AE
À %C0 %C3%80
Á %C1 %C3%81
 %C2 %C3%82
à %C3 %C3%83
Ä %C4 %C3%84
Å %C5 %C3%85
For a complete reference of all URL encodings, visit our URL Encoding Reference.
❮ Previous Next ❯
w3schools.com
What Is XHTML?
XHTML stands for EXtensible HyperText Markup Language
XHTML is almost identical to HTML
XHTML is stricter than HTML
XHTML is HTML defined as an XML application
XHTML is supported by all major browsers
Why XHTML?
Many pages on the internet contain "bad" HTML.
This HTML code works fine in most browsers (even if it does not follow the HTML rules):
<html>
<head>
<title>This is bad HTML</title>
<body>
<h1>Bad HTML
<p>This is a paragraph
</body>
Today's market consists of different browser technologies. Some browsers run on
computers, and some browsers run on mobile phones or other small devices. Smaller
devices often lack the resources or power to interpret "bad" markup.
XML is a markup language where documents must be marked up correctly (be "well-
formed").
XHTML Elements
XHTML elements must be properly nested
XHTML elements must always be closed
XHTML elements must be in lowercase
XHTML documents must have one root element
XHTML Attributes
Attribute names must be in lower case
Attribute values must be quoted
Attribute minimization is forbidden
The <html>, <head>, <title>, and <body> elements must also be present, and the
xmlns attribute in <html> must specify the xml namespace for the document.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title of document</title>
</head>
<body>
some content
</body>
</html>
In XHTML, all elements must be properly nested within each other, like this:
This is correct:
<p>This is a paragraph</p>
<p>This is another paragraph</p>
A break: <br>
A horizontal rule: <hr>
An image: <img src="happy.gif" alt="Happy face">
This is correct:
<BODY>
<P>This is a paragraph</P>
</BODY>
This is correct:
<body>
<p>This is a paragraph</p>
</body>
<table WIDTH="100%">
This is correct:
<table width="100%">
<table width=100%>
This is correct:
<table width="100%">
Wrong:
Correct:
https://www.w3schools.com/html/html_validate.html
❮ Previous Next ❯
w3schools.com
HTML Forms
❮ Previous Next ❯
Submit
Try it Yourself »
<form>
.
form elements
.
</form>
An HTML form contains form elements.
Form elements are different types of input elements, like text fields, checkboxes, radio
buttons, submit buttons, and more.
The <input> element can be displayed in several ways, depending on the type attribute.
Type Description
<input type="radio"> Defines a radio button (for selecting one of many choices)
You will learn a lot more about input types later in this tutorial.
Text Input
<input type="text"> defines a one-line input field for text input:
Example
<form>
First name:<br>
<input type="text" name="firstname"><br>
Last name:<br>
<input type="text" name="lastname">
</form>
Try it Yourself »
First name:
Last name:
Note: The form itself is not visible. Also note that the default width of a text field is
20 characters.
Example
<form>
<input type="radio" name="gender" value="male" checked> Male<br>
<input type="radio" name="gender" value="female"> Female<br>
<input type="radio" name="gender" value="other"> Other
</form>
Try it Yourself »
Male
Female
Other
Example
<form action="/action_page.php">
First name:<br>
<input type="text" name="firstname" value="Mickey"><br>
Last name:<br>
<input type="text" name="lastname" value="Mouse"><br><br>
<input type="submit" value="Submit">
</form>
Try it Yourself »
First name:
Mickey
Last name:
Mouse
Submit
Normally, the form data is sent to a web page on the server when the user clicks on the
submit button.
In the example above, the form data is sent to a page on the server called
"/action_page.php". This page contains a server-side script that handles the form data:
<form action="/action_page.php">
If the action attribute is omitted, the action is set to the current page.
The Target Attribute
The target attribute specifies if the submitted result will open in a new browser tab, a
frame, or in the current window.
The default value is " _self " which means the form will be submitted in the current
window.
To make the form result open in a new browser tab, use the value " _blank ":
Example
Try it Yourself »
Other legal values are " _parent ", " _top ", or a name representing the name of an
iframe.
Example
Try it Yourself »
or:
Example
Try it Yourself »
When to Use GET?
The default method when submitting form data is GET.
However, when GET is used, the submitted form data will be visible in the page
address field:
/action_page.php?firstname=Mickey&lastname=Mouse
Notes on GET:
Notes on POST:
POST has no size limitations, and can be used to send large amounts of data.
Form submissions with POST cannot be bookmarked
If the name attribute is omitted, the data of that input field will not be sent at all.
This example will only submit the "Last name" input field:
Example
<form action="/action_page.php">
First name:<br>
<input type="text" value="Mickey"><br>
Last name:<br>
<input type="text" name="lastname" value="Mouse"><br><br>
<input type="submit" value="Submit">
</form>
Try it Yourself »
Example
<form action="/action_page.php">
<fieldset>
<legend>Personal information:</legend>
First name:<br>
<input type="text" name="firstname" value="Mickey"><br>
Last name:<br>
<input type="text" name="lastname" value="Mouse"><br><br>
<input type="submit" value="Submit">
</fieldset>
</form>
Try it Yourself »
Personal information:
First name:
Mickey
Last name:
Mouse
Submit
HTML Exercises
Exercise:
In the form below, add an input field with the type "button" and the value "OK".
<form>
< >
</form>
Submit Answer »
Attribute Description
accept- Specifies the charset used in the submitted form (default: the page
charset charset).
action Specifies an address (url) where to submit the form (default: the
submitting page).
autocomplete Specifies if the browser should autocomplete the form (default: on).
method Specifies the HTTP method used when submitting the form (default:
GET).
name Specifies a name used to identify the form (for DOM usage:
document.forms.name).
novalidate Specifies that the browser should not validate the form.
target Specifies the target of the address in the action attribute (default:
_self).
You will learn more about the form attributes in the next chapters.
❮ Previous Next ❯
COLOR PICKER
HOW TO
Tabs
Dropdowns
Accordions
Side Navigation
Top Navigation
Modal Boxes
Progress Bars
Parallax
Login Form
HTML Includes
Google Maps
Range Sliders
Tooltips
Slideshow
Filter List
Sort List
SHARE
w3schools.com
The <input> element can be displayed in several ways, depending on the type
attribute.
Example
Try it Yourself »
If the type attribute is omitted, the input field gets the default type: "text".
All the different input types are covered in the next chapter.
Example
<select name="cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
Try it Yourself »
Example
Try it Yourself »
Visible Values:
Use the size attribute to specify the number of visible values:
Example
Example
Try it Yourself »
Example
Try it Yourself »
The rows attribute specifies the visible number of lines in a text area.
You can also define the size of the text area by using CSS:
Example
Try it Yourself »
Example
Try it Yourself »
Note: Always specify the type attribute for the button element. Different browsers
may use different default types for the button element.
<datalist>
<output>
Note: Browsers do not display unknown elements. New elements that are not
supported in older browsers will not "destroy" your web page.
Users will see a drop-down list of the pre-defined options as they input data.
The list attribute of the <input> element, must refer to the id attribute of the
<datalist> element.
Example
<form action="/action_page.php">
<input list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
</form>
Try it Yourself »
HTML5 <output> Element
The <output> element represents the result of a calculation (like one performed by a
script).
Example
Perform a calculation and show the result in an <output> element:
<form action="/action_page.php"
oninput="x.value=parseInt(a.value)+parseInt(b.value)">
0
<input type="range" id="a" name="a" value="50">
100 +
<input type="number" id="b" name="b" value="50">
=
<output name="x" for="a b"></output>
<br><br>
<input type="submit">
</form>
Try it Yourself »
HTML Exercises
Exercise:
In the form below, add an empty drop down list with the name "cars".
<form action="/action_page.php">
< >
</ >
</form>
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
This chapter describes the different input types for the <input> element.
<input type="button">
<input type="checkbox">
<input type="color">
<input type="date">
<input type="datetime-local">
<input type="email">
<input type="file">
<input type="hidden">
<input type="image">
<input type="month">
<input type="number">
<input type="password">
<input type="radio">
<input type="range">
<input type="reset">
<input type="search">
<input type="submit">
<input type="tel">
<input type="text">
<input type="time">
<input type="url">
<input type="week">
Example
<form>
First name:<br>
<input type="text" name="firstname"><br>
Last name:<br>
<input type="text" name="lastname">
</form>
Try it Yourself »
First name:
Last name:
Example
<form>
User name:<br>
<input type="text" name="username"><br>
User password:<br>
<input type="password" name="psw">
</form>
Try it Yourself »
User name:
User password:
The form-handler is typically a server page with a script for processing input data.
Example
<form action="/action_page.php">
First name:<br>
<input type="text" name="firstname" value="Mickey"><br>
Last name:<br>
<input type="text" name="lastname" value="Mouse"><br><br>
<input type="submit" value="Submit">
</form>
Try it Yourself »
Submit
If you omit the submit button's value attribute, the button will get a default text:
Example
<form action="/action_page.php">
First name:<br>
<input type="text" name="firstname" value="Mickey"><br>
Last name:<br>
<input type="text" name="lastname" value="Mouse"><br><br>
<input type="submit">
</form>
Try it Yourself »
Example
<form action="/action_page.php">
First name:<br>
<input type="text" name="firstname" value="Mickey"><br>
Last name:<br>
<input type="text" name="lastname" value="Mouse"><br><br>
<input type="submit" value="Submit">
<input type="reset">
</form>
Try it Yourself »
This is how the HTML code above will be displayed in a browser:
First name:
Mickey
Last name:
Mouse
Submit Reset
If you change the input values and then click the "Reset" button, the form-data will
be reset to the default values.
Radio buttons let a user select ONLY ONE of a limited number of choices:
Example
<form>
<input type="radio" name="gender" value="male" checked> Male<br>
<input type="radio" name="gender" value="female"> Female<br>
<input type="radio" name="gender" value="other"> Other
</form>
Try it Yourself »
Male
Female
Other
Checkboxes let a user select ZERO or MORE options of a limited number of choices.
Example
<form>
<input type="checkbox" name="vehicle1" value="Bike"> I have a
bike<br>
<input type="checkbox" name="vehicle2" value="Car"> I have a car
</form>
Try it Yourself »
I have a bike
I have a car
Example
Try it Yourself »
Click Me!
color
date
datetime-local
email
month
number
range
search
tel
time
url
week
New input types that are not supported by older web browsers, will behave as
<input type="text"> .
Depending on browser support, a color picker can show up in the input field.
Example
<form>
Select your favorite color:
<input type="color" name="favcolor">
</form>
Try it Yourself »
Depending on browser support, a date picker can show up in the input field.
Example
<form>
Birthday:
<input type="date" name="bday">
</form>
Try it Yourself »
You can also use the min and max attributes to add restrictions to dates:
Example
<form>
Enter a date before 1980-01-01:
<input type="date" name="bday" max="1979-12-31"><br>
Enter a date after 2000-01-01:
<input type="date" name="bday" min="2000-01-02"><br>
</form>
Try it Yourself »
Depending on browser support, a date picker can show up in the input field.
Example
<form>
Birthday (date and time):
<input type="datetime-local" name="bdaytime">
</form>
Try it Yourself »
Some smartphones recognize the email type, and add ".com" to the keyboard to match
email input.
Example
<form>
E-mail:
<input type="email" name="email">
</form>
Try it Yourself »
Example
<form>
Select a file: <input type="file" name="myFile">
</form>
Try it Yourself »
Depending on browser support, a date picker can show up in the input field.
Example
<form>
Birthday (month and year):
<input type="month" name="bdaymonth">
</form>
Try it Yourself »
The following example displays a numeric input field, where you can enter a value from 1
to 5:
Example
<form>
Quantity (between 1 and 5):
<input type="number" name="quantity" min="1" max="5">
</form>
Try it Yourself »
Input Restrictions
Here is a list of some common input restrictions:
Attribute Description
You will learn more about input restrictions in the next chapter.
The following example displays a numeric input field, where you can enter a value from 0
to 100, in steps of 10. The default value is 30:
Example
<form>
Quantity:
<input type="number" name="points" min="0" max="100" step="10"
value="30">
</form>
Try it Yourself »
Example
<form>
<input type="range" name="points" min="0" max="10">
</form>
Try it Yourself »
Input Type Search
The <input type="search"> is used for search fields (a search field behaves like a
regular text field).
Example
<form>
Search Google:
<input type="search" name="googlesearch">
</form>
Try it Yourself »
Example
<form>
Telephone:
<input type="tel" name="phone" pattern="[0-9]{3}-[0-9]{2}-[0-9]{3}">
</form>
Try it Yourself »
Depending on browser support, a time picker can show up in the input field.
Example
<form>
Select a time:
<input type="time" name="usr_time">
</form>
Try it Yourself »
Depending on browser support, the url field can be automatically validated when
submitted.
Some smartphones recognize the url type, and adds ".com" to the keyboard to match url
input.
Example
<form>
Add your homepage:
<input type="url" name="homepage">
</form>
Try it Yourself »
Depending on browser support, a date picker can show up in the input field.
Example
<form>
Select a week:
<input type="week" name="week_year">
</form>
Try it Yourself »
HTML Exercises
Exercise:
In the form below, add an input field for text, with the name "username" .
<form action="/action_page.php">
< >
</form>
Submit Answer »
❮ Previous Next ❯
w3schools.com
Example
<form action="">
First name:<br>
<input type="text" name="firstname" value="John">
</form>
Try it Yourself »
Example
<form action="">
First name:<br>
<input type="text" name="firstname" value="John" readonly>
</form>
Try it Yourself »
A disabled input field is unusable and un-clickable, and its value will not be sent when
submitting the form:
Example
<form action="">
First name:<br>
<input type="text" name="firstname" value="John" disabled>
</form>
Try it Yourself »
Example
<form action="">
First name:<br>
<input type="text" name="firstname" value="John" size="40">
</form>
Try it Yourself »
Example
<form action="">
First name:<br>
<input type="text" name="firstname" maxlength="10">
</form>
Try it Yourself »
With a maxlength attribute, the input field will not accept more than the allowed number
of characters.
The maxlength attribute does not provide any feedback. If you want to alert the user,
you must write JavaScript code.
Note: Input restrictions are not foolproof, and JavaScript provides many ways to add
illegal input. To safely restrict input, it must be checked by the receiver (the server)
as well!
HTML5 Attributes
HTML5 added the following attributes for <input> :
autocomplete
autofocus
form
formaction
formenctype
formmethod
formnovalidate
formtarget
height and width
list
min and max
multiple
pattern (regexp)
placeholder
required
step
autocomplete
novalidate
When autocomplete is on, the browser automatically completes the input values based on
values that the user has entered before.
Tip: It is possible to have autocomplete "on" for the form, and "off" for specific input
fields, or vice versa.
The autocomplete attribute works with <form> and the following <input> types: text,
search, url, tel, email, password, datepickers, range, and color.
Example
An HTML form with autocomplete on (and off for one input field):
Try it Yourself »
Tip: In some browsers you may need to activate the autocomplete function for this to
work.
The novalidate Attribute
The novalidate attribute is a <form> attribute.
When present, novalidate specifies that the form data should not be validated when
submitted.
Example
Indicates that the form is not to be validated on submit:
Try it Yourself »
Example
Let the "First name" input field automatically get focus when the page loads:
Try it Yourself »
Tip: To refer to more than one form, use a space-separated list of form ids.
Example
An input field located outside the HTML form (but still a part of the form):
Try it Yourself »
The formaction attribute overrides the action attribute of the <form> element.
Example
An HTML form with two submit buttons, with different actions:
<form action="/action_page.php">
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="/action_page2.php"
value="Submit as admin">
</form>
Try it Yourself »
The formenctype attribute overrides the enctype attribute of the <form> element.
Example
Send form-data that is default encoded (the first submit button), and encoded as
"multipart/form-data" (the second submit button):
Try it Yourself »
The formmethod attribute overrides the method attribute of the <form> element.
Example
The second submit button overrides the HTTP method of the form:
Example
A form with two submit buttons (with and without validation):
<form action="/action_page.php">
E-mail: <input type="email" name="userid"><br>
<input type="submit" value="Submit"><br>
<input type="submit" formnovalidate value="Submit without
validation">
</form>
Try it Yourself »
The formtarget attribute overrides the target attribute of the <form> element.
Example
A form with two submit buttons, with different target windows:
<form action="/action_page.php">
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 »
Always specify the size of images. If the browser does not know the size, the page
will flicker while images load.
Example
Define an image as the submit button, with height and width attributes:
Try it Yourself »
Example
An <input> element with pre-defined values in a <datalist>:
<input list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
Try it Yourself »
The min and max attributes work with the following input types: number, range, date,
datetime-local, month, time and week.
Example
<input> elements with min and max values:
Try it Yourself »
The multiple attribute works with the following input types: email, and file.
Example
A file upload field that accepts multiple values:
Try it Yourself »
The pattern attribute works with the following input types: text, search, url, tel, email,
and password.
Tip: Use the global title attribute to describe the pattern to help the user.
Example
An input field that can contain only three letters (no numbers or special characters):
Try it Yourself »
The hint is displayed in the input field before the user enters a value.
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 »
The required attribute works with the following input types: text, search, url, tel, email,
password, date pickers, number, checkbox, radio, and file.
Example
A required input field:
Try it Yourself »
Tip: The step attribute can be used together with the max and min attributes to
create a range of legal values.
The step attribute works with the following input types: number, range, date, datetime-
local, month, time and week.
Example
An input field with a specified legal number intervals:
HTML Exercises
Exercise:
In the input field below, add placeholder that says "Your name here".
<form action="/action_page.php">
<input type="text" >
</form>
Submit Answer »
For a complete list of all available HTML tags, visit our HTML Tag Reference.
❮ Previous Next ❯
w3schools.com
HTML5 Introduction
❮ Previous Next ❯
<!DOCTYPE html>
<meta charset="UTF-8">
HTML5 Example:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
</head>
<body>
Content of the document......
</body>
</html>
Try it Yourself »
New attributes of form elements like number, date, time, calendar, and range.
In the next chapter, HTML5 Support, you will learn how to "teach" older browsers to
handle "unknown" (new) HTML elements.
HTML Geolocation
HTML Drag and Drop
HTML Local Storage
HTML Application Cache
HTML Web Workers
HTML SSE
<acronym> <abbr>
<applet> <object>
<basefont> CSS
<big> CSS
<center> CSS
<dir> <ul>
<font> CSS
<frame>
<frameset>
<noframes>
<tt> CSS
In the chapter HTML5 Migration, you will learn how to easily migrate from HTML4 to
HTML5.
HTML History
Since the early days of the World Wide Web, there have been many versions of HTML:
Year Version
1989 Tim Berners-Lee invented www
In year 2000, the World Wide Web Consortium (W3C) recommended XHTML 1.0. The
XHTML syntax was strict, and the developers were forced to write valid and "well-formed"
code.
In 2004, W3C's decided to close down the development of HTML, in favor of XHTML.
In 2004, WHATWG (Web Hypertext Application Technology Working Group) was formed.
The WHATWG wanted to develop HTML, consistent with how the web was used, while
being backward compatible with older versions of HTML.
In 2004 - 2006, the WHATWG gained support by the major browser vendors.
The WHATWG HTML5 Living Standard was published in 2012, and is continuously
updated.
W3C wanted to develop a definitive HTML5 and XHTML standard.
The W3C HTML5.1 2nd Edition Recommendation was released 3 October 2017.
❮ Previous Next ❯
Unwind,
Enjoy
Makati
At The Alpha
Suites Makati We
Offer Comfort,
Ease, and Prime
Location. Book
Now.
COLOR PICKER
w3schools.com
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.
You can even teach IE6 (Windows XP 2001) how to handle unknown HTML elements.
To secure correct behavior in older browsers, you can set the CSS display property for
these HTML elements to block:
This example adds a new element called <myHero> to an HTML page, and defines a style
for it:
Example
<!DOCTYPE html>
<html>
<head>
<script>document.createElement("myHero")</script>
<style>
myHero {
display: block;
background-color: #dddddd;
padding: 50px;
font-size: 30px;
}
</style>
</head>
<body>
<h1>A Heading</h1>
<myHero>My Hero Element</myHero>
</body>
</html>
Try it Yourself »
However, IE8 (and earlier) does not allow styling of unknown elements!
You will require the HTML5shiv to provide compatibility for IE Browsers older than IE
9.
You should use the HTML5Shiv when you are using the new HTML5 elements such as:
<article> , <section> , <aside> , <nav> , <footer> .
You can download the latest version of HTML5shiv from github or reference the CDN
version at https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js
Syntax
<head>
<!--[if lt IE 9]>
<script src="/js/html5shiv.js"></script>
<![endif]-->
</head>
HTML5Shiv Example
If you do not want to download and store the HTML5Shiv on your site, you could
reference the version found on the CDN site.
The HTML5Shiv script must be placed in the <head> element, after any stylesheets:
Example
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!--[if lt IE 9]>
<script
src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js">
</script>
<![endif]-->
</head>
<body>
<section>
<h1>Famous Cities</h1>
<article>
<h2>London</h2>
<p>London is the capital city of England. It is the most populous city
in the United Kingdom, with a metropolitan area of over 13 million
inhabitants.</p>
</article>
<article>
<h2>Paris</h2>
<p>Paris is the capital and most populous city of France.</p>
</article>
<article>
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan, the center of the Greater Tokyo Area,
and the most populous metropolitan area in the world.</p>
</article>
</section>
</body>
</html>
w3schools.com
Tag Description
<details> Defines additional details that the user can view or hide
<rp> Defines what to show in browsers that do not support ruby annotations
4K videos starting at
Ready-to-use $147/clip. Over 11
million SD, HD, and 4K
model videos video clips.
Read all about old and new form elements in HTML Form Elements.
color autocomplete
date autofocus
datetime form
datetime-local formaction
email formenctype
month formmethod
number formnovalidate
range formtarget
search height and width
tel list
time min and max
url multiple
week pattern (regexp)
placeholder
required
step
Learn all about old and new input types in HTML Input Types.
Type Example
In HTML5, all four syntaxes may be used, depending on what is needed for the attribute.
HTML5 Graphics
Tag Description
<source> Defines multiple media resources for media elements (<video> and
<audio>)
<track> Defines text tracks for media elements (<video> and <audio>)
❮ Previous Next ❯
w3schools.com
Examples of non-semantic elements: <div> and <span> - Tells nothing about its
content.
Browser Support
In addition, you can "teach" older browsers how to handle "unknown elements".
HTML5 offers new semantic elements to define different parts of a web page:
<article>
<aside>
<details>
<figcaption>
<figure>
<footer>
<header>
<main>
<mark>
<nav>
<section>
<summary>
<time>
A home page could normally be split into sections for introduction, content, and contact
information.
Example
<section>
<h1>WWF</h1>
<p>The World Wide Fund for Nature (WWF) is....</p>
</section>
Try it Yourself »
An article should make sense on its own, and it should be possible to read it
independently from the rest of the web site.
Forum post
Blog post
Newspaper article
Example
<article>
<h1>What Does WWF Do?</h1>
<p>WWF's mission is to stop the degradation of our planet's natural
environment,
and build a future in which humans live in harmony with nature.</p>
</article>
Try it Yourself »
Can we use the definitions to decide how to nest those elements? No, we cannot!
So, on the Internet, you will find HTML pages with <section> elements containing
<article> elements, and <article> elements containing <section> elements.
You will also find pages with <section> elements containing <section> elements, and
<article> elements containing <article> elements.
Example for a newspaper: The sport <article> in the sport section, may have a
technical section in each <article> .
Example
<article>
<header>
<h1>What Does WWF Do?</h1>
<p>WWF's mission:</p>
</header>
<p>WWF's mission is to stop the degradation of our planet's natural
environment,
and build a future in which humans live in harmony with nature.</p>
</article>
Try it Yourself »
A footer typically contains the author of the document, copyright information, links to
terms of use, contact information, etc.
<footer>
<p>Posted by: Hege Refsnes</p>
<p>Contact information: <a href="mailto:[email protected]">
[email protected]</a>.</p>
</footer>
Try it Yourself »
Notice that NOT all links of a document should be inside a <nav> element. The
<nav> element is intended only for major block of navigation links.
Example
<nav>
<a href="/html/">HTML</a> |
<a href="/css/">CSS</a> |
<a href="/js/">JavaScript</a> |
<a href="/jquery/">jQuery</a>
</nav>
Try it Yourself »
<aside>
<h4>Epcot Center</h4>
<p>The Epcot Center is a theme park in Disney World, Florida.</p>
</aside>
Try it Yourself »
Example
<figure>
<img src="pic_trulli.jpg" alt="Trulli">
<figcaption>Fig1. - Trulli, Puglia, Italy.</figcaption>
</figure>
Try it Yourself »
The <img> element defines the image, the <figcaption> element defines the caption.
This made it impossible for search engines to identify the correct web page content.
With the new HTML5 elements ( <header> <footer> <nav> <section> <article> ),
this will become easier.
According to the W3C, a Semantic Web: "Allows data to be shared and reused across
applications, enterprises, and communities."
Tag Description
<details> Defines additional details that the user can view or hide
❮ Previous Next ❯
w3schools.com
HTML5 Migration
❮ Previous Next ❯
This chapter demonstrates how to convert an HTML4 page into an HTML5 page, without
destroying anything of the original content or structure.
You can migrate from XHTML to HTML5, using the same recipe.
Example
div#header, div#footer {
padding: 10px;
color: white;
background-color: black;
}
div#content {
margin: 5px;
padding: 10px;
background-color: lightgrey;
}
div.article {
margin: 5px;
padding: 10px;
background-color: white;
}
div#menu ul {
padding: 0;
}
div#menu ul li {
display: inline;
margin: 5px;
}
</style>
</head>
<body>
<div id="header">
<h1>Monday Times</h1>
</div>
<div id="menu">
<ul>
<li>News</li>
<li>Sports</li>
<li>Weather</li>
</ul>
</div>
<div id="content">
<h2>News Section</h2>
<div class="article">
<h2>News Article</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Pellentesque in porta lorem. Morbi condimentum est nibh, et consectetur
tortor feugiat at.</p>
</div>
<div class="article">
<h2>News Article</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Pellentesque in porta lorem. Morbi condimentum est nibh, et consectetur
tortor feugiat at.</p>
</div>
</div>
<div id="footer">
<p>&copy; 2016 Monday Times. All rights reserved.</p>
</div>
</body>
</html>
Try it Yourself »
Change to HTML5 Doctype
Change the doctype:
Example
<!DOCTYPE html>
Try it Yourself »
to HTML5 encoding:
Example
<meta charset="utf-8">
Try it Yourself »
However, IE8 and earlier, does not allow styling of unknown elements. So, the HTML5Shiv
is a JavaScript workaround to enable styling of HTML5 elements in versions of Internet
Explorer prior to version 9.
Example
<!--[if lt IE 9]>
<script
src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js">
</script>
<![endif]-->
Try it Yourself »
body {
font-family: Verdana,sans-serif;
font-size: 0.9em;
}
div#header, div#footer {
padding: 10px;
color: white;
background-color: black;
}
div#content {
margin: 5px;
padding: 10px;
background-color: lightgrey;
}
div.article {
margin: 5px;
padding: 10px;
background-color: white;
}
div#menu ul {
padding: 0;
}
div#menu ul li {
display: inline;
margin: 5px;
}
body {
font-family: Verdana,sans-serif;
font-size: 0.9em;
}
header, footer {
padding: 10px;
color: white;
background-color: black;
}
section {
margin: 5px;
padding: 10px;
background-color: lightgrey;
}
article {
margin: 5px;
padding: 10px;
background-color: white;
}
nav ul {
padding: 0;
}
nav ul li {
display: inline;
margin: 5px;
}
Example
<body>
<header>
<h1>Monday Times</h1>
</header>
<nav>
<ul>
<li>News</li>
<li>Sports</li>
<li>Weather</li>
</ul>
</nav>
<section>
<h2>News Section</h2>
<article>
<h2>News Article</h2>
<p>Lorem ipsum dolor sit amet..</p>
</article>
<article>
<h2>News Article</h2>
<p>Lorem ipsum dolor sit amet..</p>
</article>
</section>
<footer>
<p>© 2014 Monday Times. All rights reserved.</p>
</footer>
</body>
Try it Yourself »
In the example above, we have used <section> as a container for related <articles> .
<article> in <article>:
<article>
<h2>Famous Cities</h2>
<article>
<h2>London</h2>
<p>London is the capital city of England.</p>
</article>
<article>
<h2>Paris</h2>
<p>Paris is the capital and most populous city of France.</p>
</article>
<article>
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
</article>
</article>
Try it Yourself »
<div> in <article>:
<article>
<h2>Famous Cities</h2>
<div class="city">
<h2>London</h2>
<p>London is the capital city of England.</p>
</div>
<div class="city">
<h2>Paris</h2>
<p>Paris is the capital and most populous city of France.</p>
</div>
<div class="city">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
</div>
</article>
Try it Yourself »
<article>
<section>
<h2>Famous Cities</h2>
<div class="city">
<h2>London</h2>
<p>London is the capital city of England.</p>
</div>
<div class="city">
<h2>Paris</h2>
<p>Paris is the capital and most populous city of France.</p>
</div>
<div class="city">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
</div>
</section>
<section>
<h2>Famous Countries</h2>
<div class="country">
<h2>England</h2>
<p>London is the capital city of England.</p>
</div>
<div class="country">
<h2>France</h2>
<p>Paris is the capital and most populous city of France.</p>
</div>
<div class="country">
<h2>Japan</h2>
<p>Tokyo is the capital of Japan.</p>
</div>
</section>
</article>
Try it Yourself »
❮ Previous Next ❯
COLOR PICKER
w3schools.com
Between 2000 and 2010, many web developers converted from HTML to XHTML.
With XHTML, developers were forced to write valid and "well-formed" code.
In the future, programs like XML readers may want to read your HTML.
If you want consistency with lower case tags, you can use:
<!doctype html>
Bad:
<SECTION>
<p>This is a paragraph.</p>
</SECTION>
Very Bad:
<Section>
<p>This is a paragraph.</p>
</SECTION>
Good:
<section>
<p>This is a paragraph.</p>
</section>
Create a Free Website
Free to Try and Free to Keep. SimpleSite Makes it OPEN
Easy - You Make it Great.
Bad:
<section>
<p>This is a paragraph.
<p>This is a paragraph.
</section>
Good:
<section>
<p>This is a paragraph.</p>
<p>This is a paragraph.</p>
</section>
Allowed:
<meta charset="utf-8">
Also Allowed:
<meta charset="utf-8" />
If you expect XML software to access your page, it is a good idea to keep the closing
slash!
Bad:
<div CLASS="menu">
Good:
<div class="menu">
Very bad:
This will not work, because the value contains spaces:
<table class=table striped>
Bad:
<table class=striped>
Good:
<table class="striped">
Image Attributes
Always add the alt attribute to images. This attribute is important when the image for
some reason cannot be displayed. Also, always define image width and height. It reduces
flickering because the browser can reserve space for the image before loading.
Bad:
<img src="html5.gif">
Good:
Bad:
For readability, add blank lines to separate large or logical code blocks.
For readability, add two spaces of indentation. Do not use the tab key.
Do not use unnecessary blank lines and indentation. It is not necessary to indent every
element:
Unnecessary:
<body>
<h1>Famous Cities</h1>
<h2>Tokyo</h2>
<p>
Tokyo is the capital of Japan, the center of the Greater Tokyo
Area,
and the most populous metropolitan area in the world.
It is the seat of the Japanese government and the Imperial Palace,
and the home of the Japanese Imperial Family.
</p>
</body>
Better:
<body>
<h1>Famous Cities</h1>
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan, the center of the Greater Tokyo Area,
and the most populous metropolitan area in the world.
It is the seat of the Japanese government and the Imperial Palace,
and the home of the Japanese Imperial Family.</p>
</body>
Table Example:
<table>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
<tr>
<td>A</td>
<td>Description of A</td>
</tr>
<tr>
<td>B</td>
<td>Description of B</td>
</tr>
</table>
List Example:
<ul>
<li>London</li>
<li>Paris</li>
<li>Tokyo</li>
</ul>
Example
<!DOCTYPE html>
<head>
<title>Page Title</title>
</head>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
Try it Yourself »
However, we do not recommend omitting the <html> and the <body> tag.
The <html> element is the document root. It is the recommended place for specifying
the page language:
<!DOCTYPE html>
<html lang="en-US">
Omitting <head>?
In HTML5, the <head> tag can also be omitted.
By default, browsers will add all elements before <body> to a default <head> element.
You can reduce the complexity of HTML by omitting the <head> tag:
Example
<!DOCTYPE html>
<html>
<title>Page Title</title>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Try it Yourself »
Meta Data
The <title> element is required in HTML5. Make the title as meaningful as possible:
To ensure proper interpretation and correct search engine indexing, both the language
and the character encoding should be defined as early as possible in a document:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>HTML5 Syntax and Coding Style</title>
</head>
The viewport is the user's visible area of a web page. It varies with the device, and will be
smaller on a mobile phone than on a computer screen.
You should include the following <meta> viewport element in all your web pages:
A <meta> viewport element gives the browser instructions on how to control the page's
dimensions and scaling.
The width=device-width part sets the width of the page to follow the screen-width of the
device (which will vary depending on the device).
The initial-scale=1.0 part sets the initial zoom level when the page is first loaded by the
browser.
Here is an example of a web page without the viewport meta tag, and the same web page
with the viewport meta tag:
Tip: If you are browsing this page with a phone or a tablet, you can click on the two
links below to see the difference.
Without the viewport meta tag
HTML Comments
Short comments should be written on one line, like this:
<!-- This is a comment -->
Comments that spans more than one line, should be written like this:
<!--
This is a long comment example. This is a long comment example.
This is a long comment example. This is a long comment example.
-->
Long comments are easier to observe if they are indented two spaces.
Style Sheets
Use simple syntax for linking to style sheets (the type attribute is not necessary):
body {
background-color: lightgrey;
font-family: "Arial Black", Helvetica, sans-serif;
font-size: 16em;
color: black;
}
<script src="myscript.js">
Example
Try it Yourself »
Other web servers (Microsoft, IIS) are not case sensitive: "london.jpg" can be accessed as
"London.jpg" or "london.jpg".
If you use a mix of upper and lower case, you have to be extremely consistent.
If you move from a case insensitive to a case sensitive server, even small errors will
break your web!
To avoid these problems, always use lower case file names.
File Extensions
HTML files should have a .html or .htm extension.
.htm "smells" of early DOS systems where the system limited the extensions to 3
characters.
.html "smells" of Unix operating systems that did not have this limitation.
Technical Differences
When a URL does not specify a filename (like https://www.w3schools.com/css/), the
server returns a default filename. Common default filenames are index.html, index.htm,
default.html and default.htm.
If your server is configured only with "index.html" as default filename, your file must be
named "index.html", not "index.htm."
However, servers can be configured with more than one default filename, and normally
you can set up as many default filenames as needed.
Anyway, the full extension for HTML files is .html, and there's no reason it should not be
used.
❮ Previous Next ❯
w3schools.com
HTML5 Canvas
❮ Previous Next ❯
The <canvas> element is only a container for graphics. You must use JavaScript to
actually draw the graphics.
Canvas has several methods for drawing paths, boxes, circles, text, and adding images.
Browser Support
The numbers in the table specify the first browser version that fully supports the
<canvas> element.
Element
Note: Always specify an id attribute (to be referred to in a script), and a width and
height attribute to define the size of the canvas. To add a border, use the style
attribute.
Example
Try it Yourself »
Draw a Line
Example
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.moveTo(0, 0);
ctx.lineTo(200, 100);
ctx.stroke();
Try it Yourself »
Draw a Circle
Example
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
Example
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
ctx.fillText("Hello World", 10, 50);
Try it Yourself »
Stroke Text
Example
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
ctx.strokeText("Hello World", 10, 50);
Try it Yourself »
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
// Create gradient
var grd = ctx.createLinearGradient(0, 0, 200, 0);
grd.addColorStop(0, "red");
grd.addColorStop(1, "white");
Try it Yourself »
Example
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
// Create gradient
var grd = ctx.createRadialGradient(75, 50, 5, 90, 60, 100);
grd.addColorStop(0, "red");
grd.addColorStop(1, "white");
Try it Yourself »
Draw Image
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = document.getElementById("scream");
ctx.drawImage(img, 10, 10);
Try it Yourself »
❮ Previous Next ❯
w3schools.com
HTML5 SVG
❮ Previous Next ❯
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.
Browser Support
The numbers in the table specify the first browser version that fully supports the <svg>
element.
Element
SVG Circle
Example
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Try it Yourself »
SVG Rectangle
Example
<svg width="400" height="100">
<rect width="400" height="100" style="fill:rgb(0,0,255);stroke-
width:10;stroke:rgb(0,0,0)" />
</svg>
Try it Yourself »
Example
Try it Yourself »
SVG Star
Example
Try it Yourself »
SVG Logo
SVG
Example
Try it Yourself »
Differences Between SVG and Canvas
SVG is a language for describing 2D graphics in XML.
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.
Canvas SVG
SVG Tutorial
To learn more about SVG, read our SVG Tutorial.
❮ Previous Next ❯
w3schools.com
HTML Multimedia
❮ Previous Next ❯
What is Multimedia?
Multimedia comes in many different formats. It can be almost anything you can hear or
see.
Examples: Images, music, sound, videos, records, films, animations, and more.
Web pages often contain 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 images!
Audio, video, and animation have been handled differently by the major browsers.
Different formats have been supported, and some formats require extra helper programs
(plug-ins) to work.
Hopefully this will become history. HTML5 multimedia promises an easier future for
multimedia.
Multimedia Formats
Multimedia elements (like audio or video) are stored in media files.
The most common way to discover the type of a file, is to look at the file extension.
Multimedia files have formats and different extensions like: .swf, .wav, .mp3, .mp4,
.mpg, .wmv, and .avi.
MPEG .mpg MPEG. Developed by the Moving Pictures Expert Group. The first
.mpeg popular video format on the web. Used to be supported by all
browsers, but it is not supported in HTML5 (See MP4).
MPEG-4 .mp4 MP4. Developed by the Moving Pictures Expert Group. Based on
or MP4 QuickTime. Commonly used in newer video cameras and TV
hardware. Supported by all HTML5 browsers. Recommended by
YouTube.
Only MP4, WebM, and Ogg video are supported by the HTML5 standard.
Audio Formats
MP3 is the newest format for compressed recorded music. The term MP3 has become
synonymous with digital music.
MIDI .mid MIDI (Musical Instrument Digital Interface). Main format for all
.midi 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.
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.
Only MP3, WAV, and Ogg audio are supported by the HTML5 standard.
❮ Previous Next ❯
Taste of
Luxury in
Nuvali
Seda Nuvali
HTML CSS MORE
w3schools.com
HTML5 Video
❮ Previous Next ❯
0:00 / 0:10
Try it Yourself »
Browser Support
The numbers in the table specify the first browser version that fully supports the
<video> element.
Element
Example
Try it Yourself »
How it Works
The controls attribute adds video controls, like play, pause, and volume.
It is a good idea to always include width and height attributes. If height and width are
not set, the page might flicker while the video loads.
The <source> element allows you to specify alternative video files which the browser
HTML CSS MORE
may choose from. The browser will use the first recognized format.
The text between the <video> and </video> tags will only be displayed in browsers
that do not support the <video> element.
Example
Try it Yourself »
The autoplay attribute does not work in mobile devices like iPad and iPhone.
Safari YES NO NO
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 »
For a full DOM reference, go to our HTML5 Audio/Video DOM Reference.
HTML CSS MORE
❮ Previous Next ❯
w3schools.com
HTML5 Audio
❮ Previous Next ❯
The HTML5 <audio> element specifies a standard way to embed audio in a web page.
Browser Support
The numbers in the table specify the first browser version that fully supports the
<audio> element.
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 <source> element allows you to specify alternative audio files which the browser
may choose from. The browser will use the first recognized format.
The text between the <audio> and </audio> tags will only be displayed in browsers
that do not support the <audio> element.
MP3 audio/mpeg
OGG audio/ogg
WAV audio/wav
This allows you to load, play, and pause audios, as well as set duration and volume.
There are also DOM events that can notify you when an audio begins to play, is paused,
etc.
❮ Previous Next ❯
w3schools.com
HTML Plug-ins
❮ Previous Next ❯
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
Try it Yourself »
Example
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.
Example
Try it Yourself »
Note that the <embed> element does not have a closing tag. It can not contain
alternative text.
Example
Try it Yourself »
Example
<embed src="audi.jpeg">
Try it Yourself »
❮ Previous Next ❯
w3schools.com
An easier solution is to let YouTube play the videos in your web page.
YouTube Video Id
YouTube will display an id (like tgbNymZ7vqY), when you save (or play) a video.
You can use this id, and refer to your video in the HTML code.
Try it Yourself »
YouTube Autoplay
You can have your video start playing automatically when a user visits that page by
adding a simple parameter to your YouTube URL.
Value 0 (default): The video will not play automatically when the player loads.
Value 1: The video will play automatically when the player loads.
YouTube - Autoplay
Try it Yourself »
YouTube Loop
Value 0 (default): The video will play only once.
YouTube - Loop
Try it Yourself »
YouTube Controls
Value 0: Player controls does not display.
YouTube - Controls
Try it Yourself »
Try it Yourself »
Try it Yourself »
❮ Previous Next ❯
w3schools.com
HTML5 Geolocation
❮ Previous Next ❯
Try It
Report
Map data a map
©2019 error
Google
Since this can compromise privacy, the position is not available unless the user approves
it.
Note: Geolocation is most accurate for devices with GPS, like smartphone.
Browser Support
The numbers in the table specify the first browser version that fully supports Geolocation.
API
Note: As of Chrome 50, the Geolocation API will only work on secure contexts such
as HTTPS. If your site is hosted on an non-secure origin (such as HTTP) the requests
to get the users location will no longer function.
The example below returns the latitude and longitude of the user's position:
Example
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
x.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>
Try it Yourself »
Example explained:
The 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 »
In the example below, the returned latitude and longitude is used to show the location in
a Google Map (using a static image):
Example
function showPosition(position) {
var latlon = position.coords.latitude + "," +
position.coords.longitude;
document.getElementById("mapholder").innerHTML = "<img
src='"+img_url+"'>";
}
Location-specific Information
This page has demonstrated how to show a user's position on a map.
coords.altitude The altitude in meters above the mean sea level (returned if
available)
watchPosition() - Returns the current position of the user and continues to return
updated position as the user moves (like the GPS in a car).
clearWatch() - Stops the watchPosition() method.
The example below shows the watchPosition() method. You need an accurate GPS
device to test this (like smartphone):
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 »
❮ Previous Next ❯
COLOR PICKER
HOW TO
Tabs
Dropdowns
Accordions
Side Navigation
Top Navigation
Modal Boxes
Progress Bars
Parallax
Login Form
HTML Includes
Google Maps
Range Sliders
Tooltips
Slideshow
Filter List
Sort List
SHARE
w3schools.com
In HTML5, drag and drop is part of the standard: Any element can be draggable.
Browser Support
The numbers in the table specify the first browser version that fully supports Drag and
Drop.
API
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>
</body>
</html>
Try it Yourself »
It might seem complicated, but lets go through all the different parts of a drag and drop
event.
Make an Element Draggable
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").
This is done by calling the event.preventDefault() method for the ondragover event:
event.preventDefault()
Do the Drop - ondrop
When the dragged data is dropped, a drop event occurs.
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
Code explained:
Call preventDefault() to prevent the browser default handling of the data (default is
open as link on drop)
Get the dragged data with the dataTransfer.getData() 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
More Examples
Try it Yourself »
❮ Previous Next ❯
HTML CSS MORE
w3schools.com
Before HTML5, application data had to be stored in cookies, included in every server
request. Web 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.
Web storage is per origin (per domain and protocol). All pages, from one origin, can store
and access the same data.
Browser Support
The numbers in the table specify the first browser version that fully supports Web
Storage.
API
HTML web storage provides two objects for storing data on the client:
Before using web storage, check browser support for localStorage and sessionStorage:
Example
// Store
localStorage.setItem("lastname", "Smith");
// Retrieve
document.getElementById("result").innerHTML =
localStorage.getItem("lastname");
Try it Yourself »
Example explained:
// 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;
}
document.getElementById("result").innerHTML = "You have clicked the
button " +
localStorage.clickcount + " time(s).";
Try it Yourself »
The following example counts the number of times a user has clicked a button, in the
current session:
HTML
Example CSS MORE
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 »
❮ Previous Next ❯
COLOR PICKER
HOW TO
Tabs
Dropdowns
Accordions
Side Navigation
Top Navigation
Modal Boxes
Progress Bars
Parallax
Login Form
HTML Includes
Google Maps
Range Sliders
Tooltips
HTML CSS MORE
w3schools.com
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
Count numbers:
Try it Yourself »
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);
}
HTML CSS MORE
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.
The following lines checks if the worker already exists, if not - it creates a new web
worker object and runs the code in "demo_workers.js":
if (typeof(w) == "undefined") {
w = new Worker("demo_workers.js");
}
Then we can send and receive messages from the web worker.
w.onmessage = function(event){
document.getElementById("result").innerHTML = event.data;
};
When the web worker posts a message, the code within the event listener is executed.
The data from the web worker is stored in event.data.
To terminate a web worker, and free browser/computer resources, use the terminate()
method:
w.terminate();
Reuse
the Web
HTML CSSWorker
MORE
If you set the worker variable to undefined, after it has been terminated, you can reuse
the code:
w = undefined;
Example
<!DOCTYPE html>
<html>
<body>
<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! No Web Worker
support.";
}
}
function stopWorker() {
w.terminate();
w = undefined;
HTML CSS MORE
}
</script>
</body>
</html>
Try it Yourself »
❮ Previous Next ❯
w3schools.com
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
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"
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>
<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: The server time is: " & now())
Response.Flush()
%>
Code explained:
Events Description