CARVIEW |
HTML 5.1
W3C Working Draft 17 April 2015
- This Version:
- https://www.w3.org/TR/2015/WD-html51-20150417/
- Latest Published Version:
- https://www.w3.org/TR/html51/
- Previous Version:
- https://www.w3.org/TR/2015/WD-html51-20150413/
- Editors:
- WHATWG:
- Ian Hickson, Google, Inc.
- W3C:
- Robin Berjon, W3C
- Steve Faulkner, The Paciello Group
- Travis Leithead, Microsoft
- Erika Doyle Navara, Microsoft
- Edward O'Connor, Apple Inc.
- For the
img
andpicture
elements: - Tab Atkins (Google)
- Simon Pieters (Opera Software)
- Yoav Weiss
- Marcos Cáceres (Mozilla)
- Mat Marquis
Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and document use rules apply.
Abstract
This specification defines the 5th major version, first minor revision of the core language of the World Wide Web: the Hypertext Markup Language (HTML). In this version, new features continue to be introduced to help Web application authors, new elements continue to be introduced based on research into prevailing authoring practices, and special attention continues to be given to defining clear conformance criteria for user agents in an effort to improve interoperability.
Status of This Document
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
The management and production of this document follows a relatively complex setup. Details are provided as part of the introduction.
This document was published by the HTML Working Group as a Working Draft. If you wish to make comments regarding this document, please send them to public-html@w3.org (subscribe, archives). All comments are welcome.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This document is governed by the 1 August 2014 W3C Process Document.
Table of Contents
Full Table of Contents
- 1 Introduction
- 2 Common infrastructure
- 2.1 Terminology
- 2.2 Conformance requirements
- 2.3 Case-sensitivity and string comparison
- 2.4 Common microsyntaxes
- 2.5 URLs
- 2.6 Fetching resources
- 2.7 Common DOM interfaces
- 2.8 Namespaces
- 3 Semantics, structure, and APIs of HTML documents
- 3.1 Documents
- 3.2 Elements
- 3.2.1 Semantics
- 3.2.2 Elements in the DOM
- 3.2.3 Element definitions
- 3.2.4 Content models
- 3.2.5 Global attributes
- 3.2.5.1 The
id
attribute - 3.2.5.2 The
title
attribute - 3.2.5.3 The
lang
andxml:lang
attributes - 3.2.5.4 The
translate
attribute - 3.2.5.5 The
xml:base
attribute (XML only) - 3.2.5.6 The
dir
attribute - 3.2.5.7 The
class
attribute - 3.2.5.8 The
style
attribute - 3.2.5.9 Embedding custom non-visible data with the
data-*
attributes
- 3.2.5.1 The
- 3.2.6 Requirements relating to the bidirectional algorithm
- 3.2.7 WAI-ARIA and HTML Accessibility API Mappings
- 3.2.8 ARIA roles, states and properties
- 4 The elements of HTML
- 4.1 The root element
- 4.2 Document metadata
- 4.3 Sections
- 4.4 Grouping content
- 4.4.1 The
p
element - 4.4.2 The
hr
element - 4.4.3 The
pre
element - 4.4.4 The
blockquote
element - 4.4.5 The
ol
element - 4.4.6 The
ul
element - 4.4.7 The
li
element - 4.4.8 The
dl
element - 4.4.9 The
dt
element - 4.4.10 The
dd
element - 4.4.11 The
figure
element - 4.4.12 The
figcaption
element - 4.4.13 The
main
element - 4.4.14 The
div
element
- 4.4.1 The
- 4.5 Text-level semantics
- 4.5.1 The
a
element - 4.5.2 The
em
element - 4.5.3 The
strong
element - 4.5.4 The
small
element - 4.5.5 The
s
element - 4.5.6 The
cite
element - 4.5.7 The
q
element - 4.5.8 The
dfn
element - 4.5.9 The
abbr
element - 4.5.10 The
ruby
element - 4.5.11 The
rb
element - 4.5.12 The
rt
element - 4.5.13 The
rtc
element - 4.5.14 The
rp
element - 4.5.15 The
data
element - 4.5.16 The
time
element - 4.5.17 The
code
element - 4.5.18 The
var
element - 4.5.19 The
samp
element - 4.5.20 The
kbd
element - 4.5.21 The
sub
andsup
elements - 4.5.22 The
i
element - 4.5.23 The
b
element - 4.5.24 The
u
element - 4.5.25 The
mark
element - 4.5.26 The
bdi
element - 4.5.27 The
bdo
element - 4.5.28 The
span
element - 4.5.29 The
br
element - 4.5.30 The
wbr
element - 4.5.31 Usage summary
- 4.5.1 The
- 4.6 Links
- 4.6.1 Introduction
- 4.6.2 Links created by
a
andarea
elements - 4.6.3 Following hyperlinks
- 4.6.4 Downloading resources
- 4.6.5 Link types
- 4.6.5.1 Link type "
alternate
" - 4.6.5.2 Link type "
author
" - 4.6.5.3 Link type "
bookmark
" - 4.6.5.4 Link type "
help
" - 4.6.5.5 Link type "
icon
" - 4.6.5.6 Link type "
license
" - 4.6.5.7 Link type "
nofollow
" - 4.6.5.8 Link type "
noreferrer
" - 4.6.5.9 Link type "
prefetch
" - 4.6.5.10 Link type "
search
" - 4.6.5.11 Link type "
stylesheet
" - 4.6.5.12 Link type "
tag
" - 4.6.5.13 Sequential link types
- 4.6.5.14 Other link types
- 4.6.5.1 Link type "
- 4.7 Edits
- 4.8 Embedded content
- 4.8.1 Introduction
- 4.8.2 Dependencies
- 4.8.3 The
picture
element - 4.8.4 The
source
element when used with thepicture
element - 4.8.5 The
img
element- 4.8.5.1 Requirements for providing text to act as an alternative for images
- 4.8.5.1.1 Examples of scenarios where users benefit from text alternatives for images
- 4.8.5.1.2 General guidelines
- 4.8.5.1.3 A link or button containing nothing but an image
- 4.8.5.1.4 Graphical Representations: Charts, diagrams, graphs, maps, illustrations
- 4.8.5.1.5 Images of text
- 4.8.5.1.6 Images that include text
- 4.8.5.1.7 Images that enhance the themes or subject matter of the page content
- 4.8.5.1.8 A graphical representation of some of the surrounding text
- 4.8.5.1.9 A purely decorative image that doesn't add any information
- 4.8.5.1.10 Inline images
- 4.8.5.1.11 A group of images that form a single larger picture with no links
- 4.8.5.1.12 Image maps
- 4.8.5.1.13 A group of images that form a single larger picture with links
- 4.8.5.1.14 Images of Pictures
- 4.8.5.1.15 Webcam images
- 4.8.5.1.16 When a text alternative is not available at the time of publication
- 4.8.5.1.17 An image not intended for the user
- 4.8.5.1.18 Icon Images
- 4.8.5.1.19 Logos, insignia, flags, or emblems
- 4.8.5.1.20 CAPTCHA Images
- 4.8.5.1.21 An image in a
picture
element - 4.8.5.1.22 Guidance for markup generators
- 4.8.5.1.23 Guidance for conformance checkers
- 4.8.5.1 Requirements for providing text to act as an alternative for images
- 4.8.6 The
iframe
element - 4.8.7 The
embed
element - 4.8.8 The
object
element - 4.8.9 The
param
element - 4.8.10 The
video
element - 4.8.11 The
audio
element - 4.8.12 The
source
element - 4.8.13 The
track
element - 4.8.14 Media elements
- 4.8.14.1 Error codes
- 4.8.14.2 Location of the media resource
- 4.8.14.3 MIME types
- 4.8.14.4 Network states
- 4.8.14.5 Loading the media resource
- 4.8.14.6 Offsets into the media resource
- 4.8.14.7 Ready states
- 4.8.14.8 Playing the media resource
- 4.8.14.9 Seeking
- 4.8.14.10 Media resources with multiple media tracks
- 4.8.14.11 Synchronising multiple media elements
- 4.8.14.12 Timed text tracks
- 4.8.14.12.1 Text track model
- 4.8.14.12.2 Sourcing in-band text tracks
- 4.8.14.12.3 Sourcing out-of-band text tracks
- 4.8.14.12.4 Guidelines for exposing cues in various formats as text track cues
- 4.8.14.12.5 Text track API
- 4.8.14.12.6 Text tracks exposing in-band metadata
- 4.8.14.12.7 Text tracks describing chapters
- 4.8.14.12.8 Event handlers for objects of the text track APIs
- 4.8.14.12.9 Best practices for metadata text tracks
- 4.8.14.13 User interface
- 4.8.14.14 Time ranges
- 4.8.14.15 The
TrackEvent
interface - 4.8.14.16 Event summary
- 4.8.14.17 Security and privacy considerations
- 4.8.14.18 Best practices for authors using media elements
- 4.8.14.19 Best practices for implementors of media elements
- 4.8.15 The
map
element - 4.8.16 The
area
element - 4.8.17 Image maps
- 4.8.18 MathML
- 4.8.19 SVG
- 4.8.20 Dimension attributes
- 4.9 Tabular data
- 4.9.1 The
table
element - 4.9.2 The
caption
element - 4.9.3 The
colgroup
element - 4.9.4 The
col
element - 4.9.5 The
tbody
element - 4.9.6 The
thead
element - 4.9.7 The
tfoot
element - 4.9.8 The
tr
element - 4.9.9 The
td
element - 4.9.10 The
th
element - 4.9.11 Attributes common to
td
andth
elements - 4.9.12 Processing model
- 4.9.13 Table sorting model
- 4.9.14 Examples
- 4.9.1 The
- 4.10 Forms
- 4.10.1 Introduction
- 4.10.1.1 Writing a form's user interface
- 4.10.1.2 Implementing the server-side processing for a form
- 4.10.1.3 Configuring a form to communicate with a server
- 4.10.1.4 Client-side form validation
- 4.10.1.5 Enabling client-side automatic filling of form controls
- 4.10.1.6 Improving the user experience on mobile devices
- 4.10.1.7 The difference between the field type, the autofill field name, and the input modality
- 4.10.1.8 Date, time, and number formats
- 4.10.2 Categories
- 4.10.3 The
form
element - 4.10.4 The
label
element - 4.10.5 The
input
element- 4.10.5.1 States of the
type
attribute- 4.10.5.1.1 Hidden state (
type=hidden
) - 4.10.5.1.2 Text (
type=text
) state and Search state (type=search
) - 4.10.5.1.3 Telephone state (
type=tel
) - 4.10.5.1.4 URL state (
type=url
) - 4.10.5.1.5 E-mail state (
type=email
) - 4.10.5.1.6 Password state (
type=password
) - 4.10.5.1.7 Date and Time state (
type=datetime
) - 4.10.5.1.8 Date state (
type=date
) - 4.10.5.1.9 Month state (
type=month
) - 4.10.5.1.10 Week state (
type=week
) - 4.10.5.1.11 Time state (
type=time
) - 4.10.5.1.12 Number state (
type=number
) - 4.10.5.1.13 Range state (
type=range
) - 4.10.5.1.14 Colour state (
type=color
) - 4.10.5.1.15 Checkbox state (
type=checkbox
) - 4.10.5.1.16 Radio Button state (
type=radio
) - 4.10.5.1.17 File Upload state (
type=file
) - 4.10.5.1.18 Submit Button state (
type=submit
) - 4.10.5.1.19 Image Button state (
type=image
) - 4.10.5.1.20 Reset Button state (
type=reset
) - 4.10.5.1.21 Button state (
type=button
)
- 4.10.5.1.1 Hidden state (
- 4.10.5.2 Implemention notes regarding localization of form controls
- 4.10.5.3 Common
input
element attributes- 4.10.5.3.1 The
maxlength
andminlength
attributes - 4.10.5.3.2 The
size
attribute - 4.10.5.3.3 The
readonly
attribute - 4.10.5.3.4 The
required
attribute - 4.10.5.3.5 The
multiple
attribute - 4.10.5.3.6 The
pattern
attribute - 4.10.5.3.7 The
min
andmax
attributes - 4.10.5.3.8 The
step
attribute - 4.10.5.3.9 The
list
attribute - 4.10.5.3.10 The
placeholder
attribute
- 4.10.5.3.1 The
- 4.10.5.4 Common
input
element APIs - 4.10.5.5 Common event behaviours
- 4.10.5.1 States of the
- 4.10.6 The
button
element - 4.10.7 The
select
element - 4.10.8 The
datalist
element - 4.10.9 The
optgroup
element - 4.10.10 The
option
element - 4.10.11 The
textarea
element - 4.10.12 The
keygen
element - 4.10.13 The
output
element - 4.10.14 The
progress
element - 4.10.15 The
meter
element - 4.10.16 The
fieldset
element - 4.10.17 The
legend
element - 4.10.18 Form control infrastructure
- 4.10.19 Attributes common to form controls
- 4.10.19.1 Naming form controls: the
name
attribute - 4.10.19.2 Submitting element directionality: the
dirname
attribute - 4.10.19.3 Limiting user input length: the
maxlength
attribute - 4.10.19.4 Setting minimum input length requirements: the
minlength
attribute - 4.10.19.5 Enabling and disabling form controls: the
disabled
attribute - 4.10.19.6 Form submission
- 4.10.19.7 Input modalities: the
inputmode
attribute - 4.10.19.8 Autofill
- 4.10.19.1 Naming form controls: the
- 4.10.20 APIs for the text field selections
- 4.10.21 Constraints
- 4.10.22 Form submission
- 4.10.23 Resetting a form
- 4.10.1 Introduction
- 4.11 Interactive elements
- 4.11.1 The
details
element - 4.11.2 The
summary
element - 4.11.3 The
menu
element - 4.11.4 The
menuitem
element - 4.11.5 Context menus
- 4.11.6 Commands
- 4.11.6.1 Facets
- 4.11.6.2 Using the
a
element to define a command - 4.11.6.3 Using the
button
element to define a command - 4.11.6.4 Using the
input
element to define a command - 4.11.6.5 Using the
option
element to define a command - 4.11.6.6 Using the
menuitem
element to define a command - 4.11.6.7 Using the
command
attribute onmenuitem
elements to define a command indirectly - 4.11.6.8 Using the
accesskey
attribute on alabel
element to define a command - 4.11.6.9 Using the
accesskey
attribute on alegend
element to define a command - 4.11.6.10 Using the
accesskey
attribute to define a command on other elements
- 4.11.7 The
dialog
element
- 4.11.1 The
- 4.12 Scripting
- 4.13 Common idioms without dedicated elements
- 4.14 Disabled elements
- 4.15 Matching HTML elements using selectors
- 5 User interaction
- 5.1 The
hidden
attribute - 5.2 Inert subtrees
- 5.3 Activation
- 5.4 Focus
- 5.5 Assigning keyboard shortcuts
- 5.6 Editing
- 5.7 Drag and drop
- 5.1 The
- 6 Loading Web pages
- 6.1 Browsing contexts
- 6.2 The
Window
object - 6.3 Origin
- 6.4 Sandboxing
- 6.5 Session history and navigation
- 6.6 Browsing the Web
- 6.6.1 Navigating across documents
- 6.6.2 Page load processing model for HTML files
- 6.6.3 Page load processing model for XML files
- 6.6.4 Page load processing model for text files
- 6.6.5 Page load processing model for
multipart/x-mixed-replace
resources - 6.6.6 Page load processing model for media
- 6.6.7 Page load processing model for content that uses plugins
- 6.6.8 Page load processing model for inline content that doesn't have a DOM
- 6.6.9 Navigating to a fragment identifier
- 6.6.10 History traversal
- 6.6.11 Unloading documents
- 6.6.12 Aborting a document load
- 6.7 Offline Web applications
- 6.7.1 Introduction
- 6.7.2 Application caches
- 6.7.3 The cache manifest syntax
- 6.7.4 Downloading or updating an application cache
- 6.7.5 The application cache selection algorithm
- 6.7.6 Changes to the networking model
- 6.7.7 Expiring application caches
- 6.7.8 Disk space
- 6.7.9 Security concerns with offline applications caches
- 6.7.10 Application cache API
- 6.7.11 Browser state
- 7 Web application APIs
- 7.1 Scripting
- 7.2 Base64 utility methods
- 7.3 Dynamic markup insertion
- 7.4 Timers
- 7.5 User prompts
- 7.6 System state and capabilities
- 7.7 Images
- 7.8 Animation Frames
- 8 The HTML syntax
- 8.1 Writing HTML documents
- 8.2 Parsing HTML documents
- 8.2.1 Overview of the parsing model
- 8.2.2 The input byte stream
- 8.2.3 Parse state
- 8.2.4 Tokenization
- 8.2.4.1 Data state
- 8.2.4.2 Character reference in data state
- 8.2.4.3 RCDATA state
- 8.2.4.4 Character reference in RCDATA state
- 8.2.4.5 RAWTEXT state
- 8.2.4.6 Script data state
- 8.2.4.7 PLAINTEXT state
- 8.2.4.8 Tag open state
- 8.2.4.9 End tag open state
- 8.2.4.10 Tag name state
- 8.2.4.11 RCDATA less-than sign state
- 8.2.4.12 RCDATA end tag open state
- 8.2.4.13 RCDATA end tag name state
- 8.2.4.14 RAWTEXT less-than sign state
- 8.2.4.15 RAWTEXT end tag open state
- 8.2.4.16 RAWTEXT end tag name state
- 8.2.4.17 Script data less-than sign state
- 8.2.4.18 Script data end tag open state
- 8.2.4.19 Script data end tag name state
- 8.2.4.20 Script data escape start state
- 8.2.4.21 Script data escape start dash state
- 8.2.4.22 Script data escaped state
- 8.2.4.23 Script data escaped dash state
- 8.2.4.24 Script data escaped dash dash state
- 8.2.4.25 Script data escaped less-than sign state
- 8.2.4.26 Script data escaped end tag open state
- 8.2.4.27 Script data escaped end tag name state
- 8.2.4.28 Script data double escape start state
- 8.2.4.29 Script data double escaped state
- 8.2.4.30 Script data double escaped dash state
- 8.2.4.31 Script data double escaped dash dash state
- 8.2.4.32 Script data double escaped less-than sign state
- 8.2.4.33 Script data double escape end state
- 8.2.4.34 Before attribute name state
- 8.2.4.35 Attribute name state
- 8.2.4.36 After attribute name state
- 8.2.4.37 Before attribute value state
- 8.2.4.38 Attribute value (double-quoted) state
- 8.2.4.39 Attribute value (single-quoted) state
- 8.2.4.40 Attribute value (unquoted) state
- 8.2.4.41 Character reference in attribute value state
- 8.2.4.42 After attribute value (quoted) state
- 8.2.4.43 Self-closing start tag state
- 8.2.4.44 Bogus comment state
- 8.2.4.45 Markup declaration open state
- 8.2.4.46 Comment start state
- 8.2.4.47 Comment start dash state
- 8.2.4.48 Comment state
- 8.2.4.49 Comment end dash state
- 8.2.4.50 Comment end state
- 8.2.4.51 Comment end bang state
- 8.2.4.52 DOCTYPE state
- 8.2.4.53 Before DOCTYPE name state
- 8.2.4.54 DOCTYPE name state
- 8.2.4.55 After DOCTYPE name state
- 8.2.4.56 After DOCTYPE public keyword state
- 8.2.4.57 Before DOCTYPE public identifier state
- 8.2.4.58 DOCTYPE public identifier (double-quoted) state
- 8.2.4.59 DOCTYPE public identifier (single-quoted) state
- 8.2.4.60 After DOCTYPE public identifier state
- 8.2.4.61 Between DOCTYPE public and system identifiers state
- 8.2.4.62 After DOCTYPE system keyword state
- 8.2.4.63 Before DOCTYPE system identifier state
- 8.2.4.64 DOCTYPE system identifier (double-quoted) state
- 8.2.4.65 DOCTYPE system identifier (single-quoted) state
- 8.2.4.66 After DOCTYPE system identifier state
- 8.2.4.67 Bogus DOCTYPE state
- 8.2.4.68 CDATA section state
- 8.2.4.69 Tokenizing character references
- 8.2.5 Tree construction
- 8.2.5.1 Creating and inserting nodes
- 8.2.5.2 Parsing elements that contain only text
- 8.2.5.3 The rules for parsing tokens in HTML content
- 8.2.5.3.1 The "initial" insertion mode
- 8.2.5.3.2 The "before html" insertion mode
- 8.2.5.3.3 The "before head" insertion mode
- 8.2.5.3.4 The "in head" insertion mode
- 8.2.5.3.5 The "in head noscript" insertion mode
- 8.2.5.3.6 The "after head" insertion mode
- 8.2.5.3.7 The "in body" insertion mode
- 8.2.5.3.8 The "text" insertion mode
- 8.2.5.3.9 The "in table" insertion mode
- 8.2.5.3.10 The "in table text" insertion mode
- 8.2.5.3.11 The "in caption" insertion mode
- 8.2.5.3.12 The "in column group" insertion mode
- 8.2.5.3.13 The "in table body" insertion mode
- 8.2.5.3.14 The "in row" insertion mode
- 8.2.5.3.15 The "in cell" insertion mode
- 8.2.5.3.16 The "in select" insertion mode
- 8.2.5.3.17 The "in select in table" insertion mode
- 8.2.5.3.18 The "in template" insertion mode
- 8.2.5.3.19 The "after body" insertion mode
- 8.2.5.3.20 The "in frameset" insertion mode
- 8.2.5.3.21 The "after frameset" insertion mode
- 8.2.5.3.22 The "after after body" insertion mode
- 8.2.5.3.23 The "after after frameset" insertion mode
- 8.2.5.4 The rules for parsing tokens in foreign content
- 8.2.6 The end
- 8.2.7 Coercing an HTML DOM into an infoset
- 8.2.8 An introduction to error handling and strange cases in the parser
- 8.3 Serialising HTML fragments
- 8.4 Parsing HTML fragments
- 8.5 Named character references
- 9 The XHTML syntax
- 10 Rendering
- 10.1 Introduction
- 10.2 The CSS user agent style sheet and presentational hints
- 10.3 Non-replaced elements
- 10.4 Replaced elements
- 10.5 Bindings
- 10.5.1 Introduction
- 10.5.2 The
button
element - 10.5.3 The
details
element - 10.5.4 The
input
element as a text entry widget - 10.5.5 The
input
element as domain-specific widgets - 10.5.6 The
input
element as a range control - 10.5.7 The
input
element as a colour well - 10.5.8 The
input
element as a checkbox and radio button widgets - 10.5.9 The
input
element as a file upload control - 10.5.10 The
input
element as a button - 10.5.11 The
marquee
element - 10.5.12 The
meter
element - 10.5.13 The
progress
element - 10.5.14 The
select
element - 10.5.15 The
textarea
element - 10.5.16 The
keygen
element
- 10.6 Frames and framesets
- 10.7 Interactive media
- 10.8 Print media
- 10.9 Unstyled XML documents
- 11 Obsolete features
- 12 IANA considerations
- Index
- References
- Acknowledgements