Source: https://html.spec.whatwg.org/multipage/#auto-toc-4
HTML
Living Standard — Last Updated 21 July 2015
Table of contents
- 1 Introduction
- 2 Common infrastructure
- 3 Semantics, structure, and APIs of HTML documents
- 4 The elements of HTML
- 5 Microdata
- 6 User interaction
- 7 Loading Web pages
- 8 Web application APIs
- 9 Communication
- 10 Web workers
- 11 Web storage
- 12 The HTML syntax
- 13 The XHTML syntax
- 14 Rendering
- 15 Obsolete features
- 16 IANA considerations
- Index
- References
- Acknowledgements
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 Annotations for assistive technology products (ARIA)
- 4 The elements of HTML
- 4.1 The root element
- 4.2 Document metadata
- 4.3 Sections
- 4.3.1 The
body
element - 4.3.2 The
article
element - 4.3.3 The
section
element - 4.3.4 The
nav
element - 4.3.5 The
aside
element - 4.3.6 The
h1
,h2
,h3
,h4
,h5
, andh6
elements - 4.3.7 The
hgroup
element - 4.3.8 The
header
element - 4.3.9 The
footer
element - 4.3.10 The
address
element - 4.3.11 Headings and sections
- 4.3.12 Usage summary
- 4.3.1 The
- 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
rt
element - 4.5.12 The
rp
element - 4.5.13 The
data
element - 4.5.14 The
time
element - 4.5.15 The
code
element - 4.5.16 The
var
element - 4.5.17 The
samp
element - 4.5.18 The
kbd
element - 4.5.19 The
sub
andsup
elements - 4.5.20 The
i
element - 4.5.21 The
b
element - 4.5.22 The
u
element - 4.5.23 The
mark
element - 4.5.24 The
bdi
element - 4.5.25 The
bdo
element - 4.5.26 The
span
element - 4.5.27 The
br
element - 4.5.28 The
wbr
element - 4.5.29 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 "
external
" - 4.6.5.5 Link type "
help
" - 4.6.5.6 Link type "
icon
" - 4.6.5.7 Link type "
license
" - 4.6.5.8 Link type "
nofollow
" - 4.6.5.9 Link type "
noreferrer
" - 4.6.5.10 Link type "
pingback
" - 4.6.5.11 Link type "
prefetch
" - 4.6.5.12 Link type "
search
" - 4.6.5.13 Link type "
sidebar
" - 4.6.5.14 Link type "
stylesheet
" - 4.6.5.15 Link type "
tag
" - 4.6.5.16 Sequential link types
- 4.6.5.17 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 General guidelines
- 4.8.5.1.2 A link or button containing nothing but the image
- 4.8.5.1.3 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
- 4.8.5.1.4 A short phrase or label with an alternative graphical representation: icons, logos
- 4.8.5.1.5 Text that has been rendered to a graphic for typographical effect
- 4.8.5.1.6 A graphical representation of some of the surrounding text
- 4.8.5.1.7 Ancillary images
- 4.8.5.1.8 A purely decorative image that doesn't add any information
- 4.8.5.1.9 A group of images that form a single larger picture with no links
- 4.8.5.1.10 A group of images that form a single larger picture with links
- 4.8.5.1.11 A key part of the content
- 4.8.5.1.12 An image not intended for the user
- 4.8.5.1.13 An image in an e-mail or private document intended for a specific person who is known to be able to view images
- 4.8.5.1.14 Guidance for markup generators
- 4.8.5.1.15 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 describing chapters
- 4.8.14.12.7 Event handlers for objects of the text track APIs
- 4.8.14.12.8 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 Local Date and Time state (
type=datetime-local
) - 4.10.5.1.13 Number state (
type=number
) - 4.10.5.1.14 Range state (
type=range
) - 4.10.5.1.15 Colour state (
type=color
) - 4.10.5.1.16 Checkbox state (
type=checkbox
) - 4.10.5.1.17 Radio Button state (
type=radio
) - 4.10.5.1.18 File Upload state (
type=file
) - 4.10.5.1.19 Submit Button state (
type=submit
) - 4.10.5.1.20 Image Button state (
type=image
) - 4.10.5.1.21 Reset Button state (
type=reset
) - 4.10.5.1.22 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.12.1 The
script
element - 4.12.2 The
noscript
element - 4.12.3 The
template
element - 4.12.4 The
canvas
element- 4.12.4.1 Proxying canvases to workers
- 4.12.4.2 The 2D rendering context
- 4.12.4.2.1 Implementation notes
- 4.12.4.2.2 The canvas state
- 4.12.4.2.3
DrawingStyle
objects - 4.12.4.2.4 Line styles
- 4.12.4.2.5 Text styles
- 4.12.4.2.6 Building paths
- 4.12.4.2.7
Path2D
objects - 4.12.4.2.8 Transformations
- 4.12.4.2.9 Image sources for 2D rendering contexts
- 4.12.4.2.10 Fill and stroke styles
- 4.12.4.2.11 Drawing rectangles to the bitmap
- 4.12.4.2.12 Drawing text to the bitmap
- 4.12.4.2.13 Drawing paths to the canvas
- 4.12.4.2.14 Drawing images
- 4.12.4.2.15 Hit regions
- 4.12.4.2.16 Pixel manipulation
- 4.12.4.2.17 Compositing
- 4.12.4.2.18 Image smoothing
- 4.12.4.2.19 Shadows
- 4.12.4.2.20 Drawing model
- 4.12.4.2.21 Best practices
- 4.12.4.2.22 Examples
- 4.12.4.3 Colour spaces and colour correction
- 4.12.4.4 Serialising bitmaps to a file
- 4.12.4.5 Security with
canvas
elements
- 4.12.1 The
- 4.13 Common idioms without dedicated elements
- 4.14 Disabled elements
- 4.15 Matching HTML elements using selectors
- 5 Microdata
- 6 User interaction
- 6.1 The
hidden
attribute - 6.2 Inert subtrees
- 6.3 Activation
- 6.4 Focus
- 6.5 Assigning keyboard shortcuts
- 6.6 Editing
- 6.7 Drag and drop
- 6.1 The
- 7 Loading Web pages
- 7.1 Browsing contexts
- 7.2 The
Window
object- 7.2.1 Security
- 7.2.2 APIs for creating and navigating browsing contexts by name
- 7.2.3 Accessing other browsing contexts
- 7.2.4 Named access on the
Window
object - 7.2.5 Garbage collection and browsing contexts
- 7.2.6 Closing browsing contexts
- 7.2.7 Browser interface elements
- 7.2.8 The
WindowProxy
object
- 7.3 Origin
- 7.4 Sandboxing
- 7.5 Session history and navigation
- 7.6 Browsing the Web
- 7.6.1 Navigating across documents
- 7.6.2 Page load processing model for HTML files
- 7.6.3 Page load processing model for XML files
- 7.6.4 Page load processing model for text files
- 7.6.5 Page load processing model for
multipart/x-mixed-replace
resources - 7.6.6 Page load processing model for media
- 7.6.7 Page load processing model for content that uses plugins
- 7.6.8 Page load processing model for inline content that doesn't have a DOM
- 7.6.9 Navigating to a fragment identifier
- 7.6.10 History traversal
- 7.6.11 Unloading documents
- 7.6.12 Aborting a document load
- 7.7 Offline Web applications
- 7.7.1 Introduction
- 7.7.2 Application caches
- 7.7.3 The cache manifest syntax
- 7.7.4 Downloading or updating an application cache
- 7.7.5 The application cache selection algorithm
- 7.7.6 Changes to the networking model
- 7.7.7 Expiring application caches
- 7.7.8 Disk space
- 7.7.9 Security concerns with offline applications caches
- 7.7.10 Application cache API
- 7.7.11 Browser state
- 8 Web application APIs
- 8.1 Scripting
- 8.2 Base64 utility methods
- 8.3 Dynamic markup insertion
- 8.4 Timers
- 8.5 User prompts
- 8.6 System state and capabilities
- 8.7 Images
- 8.8 Animation Frames
- 9 Communication
- 9.1 The
MessageEvent
interfaces - 9.2 Server-sent events
- 9.3 Web sockets
- 9.4 Cross-document messaging
- 9.5 Channel messaging
- 9.6 Broadcasting to other browsing contexts
- 9.1 The
- 10 Web workers
- 11 Web storage
- 12 The HTML syntax
- 12.1 Writing HTML documents
- 12.2 Parsing HTML documents
- 12.2.1 Overview of the parsing model
- 12.2.2 The input byte stream
- 12.2.3 Parse state
- 12.2.4 Tokenization
- 12.2.4.1 Data state
- 12.2.4.2 Character reference in data state
- 12.2.4.3 RCDATA state
- 12.2.4.4 Character reference in RCDATA state
- 12.2.4.5 RAWTEXT state
- 12.2.4.6 Script data state
- 12.2.4.7 PLAINTEXT state
- 12.2.4.8 Tag open state
- 12.2.4.9 End tag open state
- 12.2.4.10 Tag name state
- 12.2.4.11 RCDATA less-than sign state
- 12.2.4.12 RCDATA end tag open state
- 12.2.4.13 RCDATA end tag name state
- 12.2.4.14 RAWTEXT less-than sign state
- 12.2.4.15 RAWTEXT end tag open state
- 12.2.4.16 RAWTEXT end tag name state
- 12.2.4.17 Script data less-than sign state
- 12.2.4.18 Script data end tag open state
- 12.2.4.19 Script data end tag name state
- 12.2.4.20 Script data escape start state
- 12.2.4.21 Script data escape start dash state
- 12.2.4.22 Script data escaped state
- 12.2.4.23 Script data escaped dash state
- 12.2.4.24 Script data escaped dash dash state
- 12.2.4.25 Script data escaped less-than sign state
- 12.2.4.26 Script data escaped end tag open state
- 12.2.4.27 Script data escaped end tag name state
- 12.2.4.28 Script data double escape start state
- 12.2.4.29 Script data double escaped state
- 12.2.4.30 Script data double escaped dash state
- 12.2.4.31 Script data double escaped dash dash state
- 12.2.4.32 Script data double escaped less-than sign state
- 12.2.4.33 Script data double escape end state
- 12.2.4.34 Before attribute name state
- 12.2.4.35 Attribute name state
- 12.2.4.36 After attribute name state
- 12.2.4.37 Before attribute value state
- 12.2.4.38 Attribute value (double-quoted) state
- 12.2.4.39 Attribute value (single-quoted) state
- 12.2.4.40 Attribute value (unquoted) state
- 12.2.4.41 Character reference in attribute value state
- 12.2.4.42 After attribute value (quoted) state
- 12.2.4.43 Self-closing start tag state
- 12.2.4.44 Bogus comment state
- 12.2.4.45 Markup declaration open state
- 12.2.4.46 Comment start state
- 12.2.4.47 Comment start dash state
- 12.2.4.48 Comment state
- 12.2.4.49 Comment end dash state
- 12.2.4.50 Comment end state
- 12.2.4.51 Comment end bang state
- 12.2.4.52 DOCTYPE state
- 12.2.4.53 Before DOCTYPE name state
- 12.2.4.54 DOCTYPE name state
- 12.2.4.55 After DOCTYPE name state
- 12.2.4.56 After DOCTYPE public keyword state
- 12.2.4.57 Before DOCTYPE public identifier state
- 12.2.4.58 DOCTYPE public identifier (double-quoted) state
- 12.2.4.59 DOCTYPE public identifier (single-quoted) state
- 12.2.4.60 After DOCTYPE public identifier state
- 12.2.4.61 Between DOCTYPE public and system identifiers state
- 12.2.4.62 After DOCTYPE system keyword state
- 12.2.4.63 Before DOCTYPE system identifier state
- 12.2.4.64 DOCTYPE system identifier (double-quoted) state
- 12.2.4.65 DOCTYPE system identifier (single-quoted) state
- 12.2.4.66 After DOCTYPE system identifier state
- 12.2.4.67 Bogus DOCTYPE state
- 12.2.4.68 CDATA section state
- 12.2.4.69 Tokenizing character references
- 12.2.5 Tree construction
- 12.2.5.1 Creating and inserting nodes
- 12.2.5.2 Parsing elements that contain only text
- 12.2.5.3 Closing elements that have implied end tags
- 12.2.5.4 The rules for parsing tokens in HTML content
- 12.2.5.4.1 The "initial" insertion mode
- 12.2.5.4.2 The "before html" insertion mode
- 12.2.5.4.3 The "before head" insertion mode
- 12.2.5.4.4 The "in head" insertion mode
- 12.2.5.4.5 The "in head noscript" insertion mode
- 12.2.5.4.6 The "after head" insertion mode
- 12.2.5.4.7 The "in body" insertion mode
- 12.2.5.4.8 The "text" insertion mode
- 12.2.5.4.9 The "in table" insertion mode
- 12.2.5.4.10 The "in table text" insertion mode
- 12.2.5.4.11 The "in caption" insertion mode
- 12.2.5.4.12 The "in column group" insertion mode
- 12.2.5.4.13 The "in table body" insertion mode
- 12.2.5.4.14 The "in row" insertion mode
- 12.2.5.4.15 The "in cell" insertion mode
- 12.2.5.4.16 The "in select" insertion mode
- 12.2.5.4.17 The "in select in table" insertion mode
- 12.2.5.4.18 The "in template" insertion mode
- 12.2.5.4.19 The "after body" insertion mode
- 12.2.5.4.20 The "in frameset" insertion mode
- 12.2.5.4.21 The "after frameset" insertion mode
- 12.2.5.4.22 The "after after body" insertion mode
- 12.2.5.4.23 The "after after frameset" insertion mode
- 12.2.5.5 The rules for parsing tokens in foreign content
- 12.2.6 The end
- 12.2.7 Coercing an HTML DOM into an infoset
- 12.2.8 An introduction to error handling and strange cases in the parser
- 12.3 Serialising HTML fragments
- 12.4 Parsing HTML fragments
- 12.5 Named character references
- 13 The XHTML syntax
- 14 Rendering
- 14.1 Introduction
- 14.2 The CSS user agent style sheet and presentational hints
- 14.3 Non-replaced elements
- 14.4 Replaced elements
- 14.5 Bindings
- 14.5.1 Introduction
- 14.5.2 The
button
element - 14.5.3 The
details
element - 14.5.4 The
input
element as a text entry widget - 14.5.5 The
input
element as domain-specific widgets - 14.5.6 The
input
element as a range control - 14.5.7 The
input
element as a colour well - 14.5.8 The
input
element as a checkbox and radio button widgets - 14.5.9 The
input
element as a file upload control - 14.5.10 The
input
element as a button - 14.5.11 The
marquee
element - 14.5.12 The
meter
element - 14.5.13 The
progress
element - 14.5.14 The
select
element - 14.5.15 The
textarea
element - 14.5.16 The
keygen
element
- 14.6 Frames and framesets
- 14.7 Interactive media
- 14.8 Print media
- 14.9 Unstyled XML documents
- 15 Obsolete features
- 16 IANA considerations
- Index
- References
- Acknowledgements