HTML Standard (Commit Snapshot 4cfb2b76873e23e8a8ac762f5ddaa0a6630b3e6e)
This is a Commit Snapshot of the standard
This document contains the contents of the standard as of the
4cfb2b76873e23e8a8ac762f5ddaa0a6630b3e6e commit
, and
should only be used as a historical reference. This commit may not even have been merged into the
main branch.
Do not attempt to implement this version of the standard. Do not reference this version as
authoritative in any way. Instead, see
for the living
standard.
Table of contents
Introduction
Common infrastructure
Semantics, structure, and APIs of HTML documents
The elements of HTML
Microdata
User interaction
Loading web pages
Web application APIs
Communication
10
Web workers
11
Worklets
12
Web storage
13
The HTML syntax
14
The XML syntax
15
Rendering
16
Obsolete features
17
IANA considerations
Index
References
Acknowledgments
Intellectual property rights
Full table of contents
Introduction
1.1
Where does this specification fit?
1.2
Is this HTML5?
1.3
Background
1.4
Audience
1.5
Scope
1.6
History
1.7
Design notes
1.7.1
Serializability of script execution
1.7.2
Compliance with other specifications
1.7.3
Extensibility
1.8
HTML vs XML syntax
1.9
Structure of this specification
1.9.1
How to read this specification
1.9.2
Typographic conventions
1.10
A quick introduction to HTML
1.10.1
Writing secure applications with HTML
1.10.2
Common pitfalls to avoid when using the scripting APIs
1.10.3
How to catch mistakes when writing HTML: validators and conformance checkers
1.11
Conformance requirements for authors
1.11.1
Presentational markup
1.11.2
Syntax errors
1.11.3
Restrictions on content models and on attribute values
1.12
Suggested reading
Common infrastructure
2.1
Terminology
2.1.1
Parallelism
2.1.2
Resources
2.1.3
XML compatibility
2.1.4
DOM trees
2.1.5
Scripting
2.1.6
Plugins
2.1.7
Character encodings
2.1.8
Conformance classes
2.1.9
Dependencies
2.1.10
Extensibility
2.1.11
Interactions with XPath and XSLT
2.2
Policy-controlled features
2.3
Common microsyntaxes
2.3.1
Common parser idioms
2.3.2
Boolean attributes
2.3.3
Keywords and enumerated attributes
2.3.4
Numbers
2.3.4.1
Signed integers
2.3.4.2
Non-negative integers
2.3.4.3
Floating-point numbers
2.3.4.4
Percentages and lengths
2.3.4.5
Non-zero percentages and lengths
2.3.4.6
Lists of floating-point numbers
2.3.4.7
Lists of dimensions
2.3.5
Dates and times
2.3.5.1
Months
2.3.5.2
Dates
2.3.5.3
Yearless dates
2.3.5.4
Times
2.3.5.5
Local dates and times
2.3.5.6
Time zones
2.3.5.7
Global dates and times
2.3.5.8
Weeks
2.3.5.9
Durations
2.3.5.10
Vaguer moments in time
2.3.6
Colors
2.3.7
Space-separated tokens
2.3.8
Comma-separated tokens
2.3.9
References
2.3.10
Media queries
2.4
URLs
2.4.1
Terminology
2.4.2
Parsing URLs
2.4.3
Dynamic changes to base URLs
2.5
Fetching resources
2.5.1
Terminology
2.5.2
Determining the type of a resource
2.5.3
Extracting character encodings from
meta
elements
2.5.4
CORS settings attributes
2.5.5
Referrer policy attributes
2.5.6
Nonce attributes
2.5.7
Lazy loading attributes
2.6
Common DOM interfaces
2.6.1
Reflecting content attributes in IDL attributes
2.6.2
Collections
2.6.2.1
The
HTMLAllCollection
interface
2.6.2.1.1
[[Call]] (
thisArgument
argumentsList
2.6.2.2
The
HTMLFormControlsCollection
interface
2.6.2.3
The
HTMLOptionsCollection
interface
2.6.3
The
DOMStringList
interface
2.7
Safe passing of structured data
2.7.1
Serializable objects
2.7.2
Transferable objects
2.7.3
StructuredSerializeInternal (
value
forStorage
[ ,
memory
] )
2.7.4
StructuredSerialize (
value
2.7.5
StructuredSerializeForStorage (
value
2.7.6
StructuredDeserialize (
serialized
targetRealm
[ ,
memory
] )
2.7.7
StructuredSerializeWithTransfer (
value
transferList
2.7.8
StructuredDeserializeWithTransfer (
serializeWithTransferResult
targetRealm
2.7.9
Performing serialization and
transferring from other specifications
Semantics, structure, and APIs of HTML documents
3.1
Documents
3.1.1
The
Document
object
3.1.2
The
DocumentOrShadowRoot
interface
3.1.3
Resource metadata management
3.1.4
Reporting document loading status
3.1.5
DOM tree accessors
3.2
Elements
3.2.1
Semantics
3.2.2
Elements in the DOM
3.2.3
HTML element constructors
3.2.4
Element definitions
3.2.4.1
Attributes
3.2.5
Content models
3.2.5.1
The "nothing" content model
3.2.5.2
Kinds of content
3.2.5.2.1
Metadata content
3.2.5.2.2
Flow content
3.2.5.2.3
Sectioning content
3.2.5.2.4
Heading content
3.2.5.2.5
Phrasing content
3.2.5.2.6
Embedded content
3.2.5.2.7
Interactive content
3.2.5.2.8
Palpable content
3.2.5.2.9
Script-supporting elements
3.2.5.3
Transparent content models
3.2.5.4
Paragraphs
3.2.6
Global attributes
3.2.6.1
The
title
attribute
3.2.6.2
The
lang
and
xml:lang
attributes
3.2.6.3
The
translate
attribute
3.2.6.4
The
dir
attribute
3.2.6.5
The
style
attribute
3.2.6.6
Embedding custom non-visible data with the
data-*
attributes
3.2.7
The
innerText
and
outerText
properties
3.2.8
Requirements relating to the bidirectional algorithm
3.2.8.1
Authoring conformance criteria for bidirectional-algorithm formatting characters
3.2.8.2
User agent conformance criteria
3.2.9
Requirements related to ARIA and to platform accessibility APIs
The elements of HTML
4.1
The document element
4.1.1
The
html
element
4.2
Document metadata
4.2.1
The
head
element
4.2.2
The
title
element
4.2.3
The
base
element
4.2.4
The
link
element
4.2.4.1
Processing the
media
attribute
4.2.4.2
Processing the
type
attribute
4.2.4.3
Fetching and processing a resource
from a
link
element
4.2.4.4
Processing `
Link
` headers
4.2.4.5
Providing users with a means to follow hyperlinks created using the
link
element
4.2.5
The
meta
element
4.2.5.1
Standard metadata names
4.2.5.2
Other metadata names
4.2.5.3
Pragma directives
4.2.5.4
Specifying the document's character encoding
4.2.6
The
style
element
4.2.7
Interactions of styling and scripting
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
, and
h6
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.11.1
Creating an outline
4.3.11.2
Sample outlines
4.3.11.3
Exposing outlines to users
4.3.12
Usage summary
4.3.12.1
Article or section?
4.4
Grouping content
4.4.1
The
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
element
4.4.8
The
li
element
4.4.9
The
dl
element
4.4.10
The
dt
element
4.4.11
The
dd
element
4.4.12
The
figure
element
4.4.13
The
figcaption
element
4.4.14
The
main
element
4.4.15
The
div
element
4.5
Text-level semantics
4.5.1
The
element
4.5.2
The
em
element
4.5.3
The
strong
element
4.5.4
The
small
element
4.5.5
The
element
4.5.6
The
cite
element
4.5.7
The
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
and
sup
elements
4.5.20
The
element
4.5.21
The
element
4.5.22
The
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.6
Links
4.6.1
Introduction
4.6.2
Links created by
and
area
elements
4.6.3
API for
and
area
elements
4.6.4
Following hyperlinks
4.6.5
Downloading resources
4.6.5.1
Hyperlink auditing
4.6.6
Link types
4.6.6.1
Link type "
alternate
4.6.6.2
Link type "
author
4.6.6.3
Link type "
4.6.6.4
Link type "
canonical
4.6.6.5
Link type "
dns-prefetch
4.6.6.6
Link type "
external
4.6.6.7
Link type "
help
4.6.6.8
Link type "
icon
4.6.6.9
Link type "
license
4.6.6.10
Link type "
manifest
4.6.6.11
Link type "
modulepreload
4.6.6.12
Link type "
nofollow
4.6.6.13
Link type "
noopener
4.6.6.14
Link type "
noreferrer
4.6.6.15
Link type "
opener
4.6.6.16
Link type "
pingback
4.6.6.17
Link type "
preconnect
4.6.6.18
Link type "
prefetch
4.6.6.19
Link type "
preload
4.6.6.20
Link type "
prerender
4.6.6.21
Link type "
4.6.6.22
Link type "
stylesheet
4.6.6.23
Link type "
tag
4.6.6.24
Sequential link types
4.6.6.24.1
Link type "
next
4.6.6.24.2
Link type "
prev
4.6.6.25
Other link types
4.7
Edits
4.7.1
The
ins
element
4.7.2
The
del
element
4.7.3
Attributes common to
ins
and
del
elements
4.7.4
Edits and paragraphs
4.7.5
Edits and lists
4.7.6
Edits and tables
4.8
Embedded content
4.8.1
The
picture
element
4.8.2
The
source
element
4.8.3
The
img
element
4.8.4
Images
4.8.4.1
Introduction
4.8.4.1.1
Adaptive images
4.8.4.2
Attributes common to
source
img
, and
link
elements
4.8.4.2.1
Srcset attributes
4.8.4.2.2
Sizes attributes
4.8.4.3
Processing model
4.8.4.3.1
When to obtain images
4.8.4.3.2
Reacting to DOM mutations
4.8.4.3.3
The list of available images
4.8.4.3.4
Decoding images
4.8.4.3.5
Updating the image data
4.8.4.3.6
Selecting an image source
4.8.4.3.7
Updating the source set
4.8.4.3.8
Parsing a srcset attribute
4.8.4.3.9
Parsing a sizes attribute
4.8.4.3.10
Normalizing the source densities
4.8.4.3.11
Reacting to environment changes
4.8.4.4
Requirements for providing text to act as an alternative for images
4.8.4.4.1
General guidelines
4.8.4.4.2
A link or button containing nothing but the image
4.8.4.4.3
A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
4.8.4.4.4
A short phrase or label with an alternative graphical representation: icons, logos
4.8.4.4.5
Text that has been rendered to a graphic for typographical effect
4.8.4.4.6
A graphical representation of some of the surrounding text
4.8.4.4.7
Ancillary images
4.8.4.4.8
A purely decorative image that doesn't add any information
4.8.4.4.9
A group of images that form a single larger picture with no links
4.8.4.4.10
A group of images that form a single larger picture with links
4.8.4.4.11
A key part of the content
4.8.4.4.12
An image not intended for the user
4.8.4.4.13
An image in an email or private document intended for a specific person who is known to be able to view images
4.8.4.4.14
Guidance for markup generators
4.8.4.4.15
Guidance for conformance checkers
4.8.5
The
iframe
element
4.8.6
The
embed
element
4.8.7
The
object
element
4.8.8
The
param
element
4.8.9
The
video
element
4.8.10
The
audio
element
4.8.11
The
track
element
4.8.12
Media elements
4.8.12.1
Error codes
4.8.12.2
Location of the media resource
4.8.12.3
MIME types
4.8.12.4
Network states
4.8.12.5
Loading the media resource
4.8.12.6
Offsets into the media resource
4.8.12.7
Ready states
4.8.12.8
Playing the media resource
4.8.12.9
Seeking
4.8.12.10
Media resources with multiple media tracks
4.8.12.10.1
AudioTrackList
and
VideoTrackList
objects
4.8.12.10.2
Selecting specific audio and video tracks declaratively
4.8.12.11
Timed text tracks
4.8.12.11.1
Text track model
4.8.12.11.2
Sourcing in-band text tracks
4.8.12.11.3
Sourcing out-of-band text tracks
4.8.12.11.4
Guidelines for exposing cues in various formats as text track cues
4.8.12.11.5
Text track API
4.8.12.11.6
Event handlers for objects of the text track APIs
4.8.12.11.7
Best practices for metadata text tracks
4.8.12.12
Identifying a track kind through a URL
4.8.12.13
User interface
4.8.12.14
Time ranges
4.8.12.15
The
TrackEvent
interface
4.8.12.16
Events summary
4.8.12.17
Security and privacy considerations
4.8.12.18
Best practices for authors using media elements
4.8.12.19
Best practices for implementers of media elements
4.8.13
The
map
element
4.8.14
The
area
element
4.8.15
Image maps
4.8.15.1
Authoring
4.8.15.2
Processing model
4.8.16
MathML
4.8.17
SVG
4.8.18
Dimension attributes
4.9
Tabular data
4.9.1
The
table
element
4.9.1.1
Techniques for describing tables
4.9.1.2
Techniques for table design
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
and
th
elements
4.9.12
Processing model
4.9.12.1
Forming a table
4.9.12.2
Forming relationships between data cells and header cells
4.9.13
Examples
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
Email state (
type=email
4.10.5.1.6
Password state (
type=password
4.10.5.1.7
Date state (
type=date
4.10.5.1.8
Month state (
type=month
4.10.5.1.9
Week state (
type=week
4.10.5.1.10
Time state (
type=time
4.10.5.1.11
Local Date and Time state (
type=datetime-local
4.10.5.1.12
Number state (
type=number
4.10.5.1.13
Range state (
type=range
4.10.5.1.14
Color 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.2
Implementation notes regarding localization of form controls
4.10.5.3
Common
input
element attributes
4.10.5.3.1
The
maxlength
and
minlength
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
and
max
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.4
Common
input
element APIs
4.10.5.5
Common event behaviors
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
output
element
4.10.13
The
progress
element
4.10.14
The
meter
element
4.10.15
The
fieldset
element
4.10.16
The
legend
element
4.10.17
Form control infrastructure
4.10.17.1
A form control's value
4.10.17.2
Mutability
4.10.17.3
Association of controls and forms
4.10.18
Attributes common to form controls
4.10.18.1
Naming form controls: the
name
attribute
4.10.18.2
Submitting element directionality: the
dirname
attribute
4.10.18.3
Limiting user input length: the
maxlength
attribute
4.10.18.4
Setting minimum input length requirements: the
minlength
attribute
4.10.18.5
Enabling and disabling form controls: the
disabled
attribute
4.10.18.6
Form submission attributes
4.10.18.7
Autofill
4.10.18.7.1
Autofilling form controls: the
autocomplete
attribute
4.10.18.7.2
Processing model
4.10.19
APIs for the text control selections
4.10.20
Constraints
4.10.20.1
Definitions
4.10.20.2
Constraint validation
4.10.20.3
The constraint validation API
4.10.20.4
Security
4.10.21
Form submission
4.10.21.1
Introduction
4.10.21.2
Implicit submission
4.10.21.3
Form submission algorithm
4.10.21.4
Constructing the entry list
4.10.21.5
Selecting a form submission encoding
4.10.21.6
URL-encoded form data
4.10.21.7
Multipart form data
4.10.21.8
Plain text form data
4.10.21.9
The
SubmitEvent
interface
4.10.21.10
The
FormDataEvent
interface
4.10.22
Resetting a form
4.11
Interactive elements
4.11.1
The
details
element
4.11.2
The
summary
element
4.11.3
Commands
4.11.3.1
Facets
4.11.3.2
Using the
element to define a command
4.11.3.3
Using the
button
element to define a command
4.11.3.4
Using the
input
element to define a command
4.11.3.5
Using the
option
element to define a command
4.11.3.6
Using the
accesskey
attribute
on a
legend
element to define a command
4.11.3.7
Using the
accesskey
attribute to define a command on other elements
4.11.4
The
dialog
element
4.12
Scripting
4.12.1
The
script
element
4.12.1.1
Processing model
4.12.1.2
Scripting languages
4.12.1.3
Restrictions for contents of
script
elements
4.12.1.4
Inline documentation for external scripts
4.12.1.5
Interaction of
script
elements and XSLT
4.12.2
The
noscript
element
4.12.3
The
template
element
4.12.3.1
Interaction of
template
elements with XSLT and XPath
4.12.4
The
slot
element
4.12.5
The
canvas
element
4.12.5.1
The 2D rendering context
4.12.5.1.1
Implementation notes
4.12.5.1.2
The canvas state
4.12.5.1.3
Line styles
4.12.5.1.4
Text styles
4.12.5.1.5
Building paths
4.12.5.1.6
Path2D
objects
4.12.5.1.7
Transformations
4.12.5.1.8
Image sources for 2D rendering contexts
4.12.5.1.9
Fill and stroke styles
4.12.5.1.10
Drawing rectangles to the bitmap
4.12.5.1.11
Drawing text to the bitmap
4.12.5.1.12
Drawing paths to the canvas
4.12.5.1.13
Drawing focus rings and scrolling paths into view
4.12.5.1.14
Drawing images
4.12.5.1.15
Pixel manipulation
4.12.5.1.16
Compositing
4.12.5.1.17
Image smoothing
4.12.5.1.18
Shadows
4.12.5.1.19
Filters
4.12.5.1.20
Working with externally-defined SVG filters
4.12.5.1.21
Drawing model
4.12.5.1.22
Best practices
4.12.5.1.23
Examples
4.12.5.2
The
ImageBitmap
rendering context
4.12.5.2.1
Introduction
4.12.5.2.2
The
ImageBitmapRenderingContext
interface
4.12.5.3
The
OffscreenCanvas
interface
4.12.5.3.1
The offscreen 2D rendering context
4.12.5.4
Color spaces and color space
conversion
4.12.5.5
Serializing bitmaps to a file
4.12.5.6
Security with
canvas
elements
4.12.5.7
Premultiplied alpha and the 2D rendering context
4.13
Custom elements
4.13.1
Introduction
4.13.1.1
Creating an autonomous custom element
4.13.1.2
Creating a form-associated custom element
4.13.1.3
Creating a custom element with default accessible roles, states, and properties
4.13.1.4
Creating a customized built-in element
4.13.1.5
Drawbacks of autonomous custom elements
4.13.1.6
Upgrading elements after their creation
4.13.2
Requirements for custom element constructors and
reactions
4.13.3
Core concepts
4.13.4
The
CustomElementRegistry
interface
4.13.5
Upgrades
4.13.6
Custom element reactions
4.13.7
Element internals
4.13.7.1
The
ElementInternals
interface
4.13.7.2
Shadow root access
4.13.7.3
Form-associated custom elements
4.13.7.4
Accessibility semantics
4.14
Common idioms without dedicated elements
4.14.1
Bread crumb navigation
4.14.2
Tag clouds
4.14.3
Conversations
4.14.4
Footnotes
4.15
Disabled elements
4.16
Matching HTML elements using selectors and CSS
4.16.1
Case-sensitivity of the CSS 'attr()' function
4.16.2
Case-sensitivity of selectors
4.16.3
Pseudo-classes
Microdata
5.1
Introduction
5.1.1
Overview
5.1.2
The basic syntax
5.1.3
Typed items
5.1.4
Global identifiers for items
5.1.5
Selecting names when defining vocabularies
5.2
Encoding microdata
5.2.1
The microdata model
5.2.2
Items
5.2.3
Names: the
itemprop
attribute
5.2.4
Values
5.2.5
Associating names with items
5.2.6
Microdata and other namespaces
5.3
Sample microdata vocabularies
5.3.1
vCard
5.3.1.1
Conversion to vCard
5.3.1.2
Examples
5.3.2
vEvent
5.3.2.1
Conversion to iCalendar
5.3.2.2
Examples
5.3.3
Licensing works
5.3.3.1
Examples
5.4
Converting HTML to other formats
5.4.1
JSON
User interaction
6.1
The
hidden
attribute
6.2
Inert subtrees
6.3
Tracking user activation
6.3.1
Data model
6.3.2
Processing model
6.3.3
APIs gated by user activation
6.4
Activation behavior of elements
6.5
Focus
6.5.1
Introduction
6.5.2
Data model
6.5.3
The
tabindex
attribute
6.5.4
Processing model
6.5.5
Sequential focus navigation
6.5.6
Focus management APIs
6.5.7
The
autofocus
attribute
6.6
Assigning keyboard shortcuts
6.6.1
Introduction
6.6.2
The
accesskey
attribute
6.6.3
Processing
model
6.7
Editing
6.7.1
Making document regions editable: The
contenteditable
content attribute
6.7.2
Making entire documents
editable: the
designMode
getter and setter
6.7.3
Best practices for in-page editors
6.7.4
Editing APIs
6.7.5
Spelling and grammar checking
6.7.6
Autocapitalization
6.7.7
Input modalities: the
inputmode
attribute
6.7.8
Input modalities: the
enterkeyhint
attribute
6.8
Find-in-page
6.8.1
Introduction
6.8.2
Interaction with selection
6.9
Drag and drop
6.9.1
Introduction
6.9.2
The drag data store
6.9.3
The
DataTransfer
interface
6.9.3.1
The
DataTransferItemList
interface
6.9.3.2
The
DataTransferItem
interface
6.9.4
The
DragEvent
interface
6.9.5
Processing model
6.9.6
Events summary
6.9.7
The
draggable
attribute
6.9.8
Security risks in the drag-and-drop model
Loading web pages
7.1
Browsing contexts
7.1.1
Creating browsing contexts
7.1.2
Related browsing contexts
7.1.2.1
Navigating related browsing contexts in
the DOM
7.1.3
Security
7.1.4
Groupings of browsing contexts
7.1.5
Browsing context names
7.2
Security infrastructure for
Window
WindowProxy
, and
Location
objects
7.2.1
Integration with IDL
7.2.2
Shared internal slot: [[CrossOriginPropertyDescriptorMap]]
7.2.3
Shared abstract operations
7.2.3.1
CrossOriginProperties (
7.2.3.2
CrossOriginPropertyFallback (
7.2.3.3
IsPlatformObjectSameOrigin (
7.2.3.4
CrossOriginGetOwnPropertyHelper (
7.2.3.5
CrossOriginGet (
Receiver
7.2.3.6
CrossOriginSet (
Receiver
7.2.3.7
CrossOriginOwnPropertyKeys (
7.3
The
Window
object
7.3.1
APIs for creating and navigating browsing contexts by name
7.3.2
Accessing other browsing contexts
7.3.3
Named access on the
Window
object
7.3.4
Discarding browsing contexts
7.3.5
Closing browsing contexts
7.3.6
Browser interface elements
7.3.7
Script settings for
Window
objects
7.4
The
WindowProxy
exotic object
7.4.1
[[GetPrototypeOf]] ( )
7.4.2
[[SetPrototypeOf]] (
7.4.3
[[IsExtensible]] ( )
7.4.4
[[PreventExtensions]] ( )
7.4.5
[[GetOwnProperty]] (
7.4.6
[[DefineOwnProperty]] (
Desc
7.4.7
[[Get]] (
Receiver
7.4.8
[[Set]] (
Receiver
7.4.9
[[Delete]] (
7.4.10
[[OwnPropertyKeys]] ( )
7.5
Origin
7.5.1
Sites
7.5.2
Relaxing the same-origin restriction
7.5.3
Origin-keyed agent clusters
7.6
Sandboxing
7.7
Cross-origin opener policies
7.7.1
The headers
7.7.2
Browsing context group switches due to cross-origin opener policy
7.7.3
Reporting
7.8
Cross-origin embedder policies
7.8.1
The headers
7.8.2
Embedder policy checks
7.9
Policy containers
7.10
Session history and navigation
7.10.1
Browsing sessions
7.10.2
The session history of browsing contexts
7.10.3
The
History
interface
7.10.4
Implementation notes for session history
7.10.5
The
Location
interface
7.10.5.1
[[GetPrototypeOf]] ( )
7.10.5.2
[[SetPrototypeOf]] (
7.10.5.3
[[IsExtensible]] ( )
7.10.5.4
[[PreventExtensions]] ( )
7.10.5.5
[[GetOwnProperty]] (
7.10.5.6
[[DefineOwnProperty]] (
Desc
7.10.5.7
[[Get]] (
Receiver
7.10.5.8
[[Set]] (
Receiver
7.10.5.9
[[Delete]] (
7.10.5.10
[[OwnPropertyKeys]] ( )
7.11
Browsing the web
7.11.1
Navigating across documents
7.11.2
Page load processing model for HTML files
7.11.3
Page load processing model for XML files
7.11.4
Page load processing model for text files
7.11.5
Page load processing model for
multipart/x-mixed-replace
resources
7.11.6
Page load processing model for media
7.11.7
Page load processing model for content that uses plugins
7.11.8
Page load processing model for inline
content that doesn't have a DOM
7.11.9
Navigating to a fragment
7.11.10
History traversal
7.11.10.1
Persisted history entry state
7.11.10.2
The
PopStateEvent
interface
7.11.10.3
The
HashChangeEvent
interface
7.11.10.4
The
PageTransitionEvent
interface
7.11.11
Loading documents
7.11.12
Unloading documents
7.11.12.1
The
BeforeUnloadEvent
interface
7.11.13
Aborting a document load
7.11.14
The `
X-Frame-Options
` header
Web application APIs
8.1
Scripting
8.1.1
Introduction
8.1.2
Agents and agent clusters
8.1.2.1
Integration with the JavaScript agent formalism
8.1.2.2
Integration with the JavaScript agent cluster formalism
8.1.3
Realms and their counterparts
8.1.3.1
Environments
8.1.3.2
Environment settings objects
8.1.3.3
Realms, settings objects, and global objects
8.1.3.3.1
Entry
8.1.3.3.2
Incumbent
8.1.3.3.3
Current
8.1.3.3.4
Relevant
8.1.3.4
Enabling and disabling scripting
8.1.3.5
Secure contexts
8.1.4
Script processing
model
8.1.4.1
Scripts
8.1.4.2
Fetching scripts
8.1.4.3
Creating scripts
8.1.4.4
Calling scripts
8.1.4.5
Killing scripts
8.1.4.6
Runtime script errors
8.1.4.7
Unhandled promise rejections
8.1.5
JavaScript specification host hooks
8.1.5.1
HostEnsureCanCompileStrings(
callerRealm
calleeRealm
8.1.5.2
HostPromiseRejectionTracker(
promise
operation
8.1.5.3
Job-related host hooks
8.1.5.3.1
HostCallJobCallback(
callback
argumentsList
8.1.5.3.2
HostEnqueueFinalizationRegistryCleanupJob(
finalizationRegistry
8.1.5.3.3
HostEnqueuePromiseJob(
job
realm
8.1.5.3.4
HostMakeJobCallback(
callable
8.1.5.4
Module-related host hooks
8.1.5.4.1
HostGetImportMetaProperties(
moduleRecord
8.1.5.4.2
HostImportModuleDynamically(
referencingScriptOrModule
specifier
promiseCapability
8.1.5.4.3
HostResolveImportedModule(
referencingScriptOrModule
specifier
8.1.6
Event loops
8.1.6.1
Definitions
8.1.6.2
Queuing tasks
8.1.6.3
Processing model
8.1.6.4
Generic task sources
8.1.6.5
Dealing with the event loop from other specifications
8.1.7
Events
8.1.7.1
Event handlers
8.1.7.2
Event handlers on elements,
Document
objects, and
Window
objects
8.1.7.2.1
IDL definitions
8.1.7.3
Event firing
8.2
The
WindowOrWorkerGlobalScope
mixin
8.3
Base64 utility methods
8.4
Dynamic markup insertion
8.4.1
Opening the input stream
8.4.2
Closing the input stream
8.4.3
document.write()
8.4.4
document.writeln()
8.5
DOM parsing
8.6
Timers
8.7
Microtask queuing
8.8
User prompts
8.8.1
Simple dialogs
8.8.2
Printing
8.9
System state and capabilities
8.9.1
The
Navigator
object
8.9.1.1
Client identification
8.9.1.2
Language preferences
8.9.1.3
Browser state
8.9.1.4
Custom scheme handlers: the
registerProtocolHandler()
method
8.9.1.4.1
Security and privacy
8.9.1.5
8.10
Images
8.11
Animation frames
Communication
9.1
The
MessageEvent
interface
9.2
Server-sent events
9.2.1
Introduction
9.2.2
The
EventSource
interface
9.2.3
Processing model
9.2.4
Parsing an event stream
9.2.5
Interpreting an event stream
9.2.6
Authoring notes
9.2.7
Connectionless push and other features
9.2.8
Garbage collection
9.2.9
Implementation advice
9.3
Web sockets
9.3.1
Introduction
9.3.2
The
WebSocket
interface
9.3.3
Feedback from the protocol
9.3.4
Ping and Pong frames
9.3.5
The
CloseEvent
interface
9.3.6
Garbage collection
9.4
Cross-document messaging
9.4.1
Introduction
9.4.2
Security
9.4.2.1
Authors
9.4.2.2
User agents
9.4.3
Posting messages
9.5
Channel messaging
9.5.1
Introduction
9.5.1.1
Examples
9.5.1.2
Ports as the basis of an object-capability model on the web
9.5.1.3
Ports as the basis of abstracting out service implementations
9.5.2
Message channels
9.5.3
Message ports
9.5.4
Broadcasting to many ports
9.5.5
Ports and garbage collection
9.6
Broadcasting to other browsing contexts
10
Web workers
10.1
Introduction
10.1.1
Scope
10.1.2
Examples
10.1.2.1
A background number-crunching worker
10.1.2.2
Using a JavaScript module as a worker
10.1.2.3
Shared workers introduction
10.1.2.4
Shared state using a shared worker
10.1.2.5
Delegation
10.1.2.6
Providing libraries
10.1.3
Tutorials
10.1.3.1
Creating a dedicated worker
10.1.3.2
Communicating with a dedicated worker
10.1.3.3
Shared workers
10.2
Infrastructure
10.2.1
The global scope
10.2.1.1
The
WorkerGlobalScope
common interface
10.2.1.2
Dedicated workers and the
DedicatedWorkerGlobalScope
interface
10.2.1.3
Shared workers and the
SharedWorkerGlobalScope
interface
10.2.2
The event loop
10.2.3
The worker's lifetime
10.2.4
Processing model
10.2.5
Runtime script errors
10.2.6
Creating workers
10.2.6.1
The
AbstractWorker
mixin
10.2.6.2
Script settings for workers
10.2.6.3
Dedicated workers and the
Worker
interface
10.2.6.4
Shared workers and the
SharedWorker
interface
10.2.7
Concurrent hardware capabilities
10.3
APIs available to workers
10.3.1
Importing scripts and libraries
10.3.2
The
WorkerNavigator
interface
10.3.3
The
WorkerLocation
interface
11
Worklets
11.1
Introduction
11.1.1
Motivations
11.1.2
Code idempotence
11.1.3
Speculative evaluation
11.2
Examples
11.2.1
Loading scripts
11.2.2
Registering a class and invoking its methods
11.3
Infrastructure
11.3.1
The global scope
11.3.1.1
Agents and event loops
11.3.1.2
Creation and termination
11.3.1.3
Script settings for worklets
11.3.2
The
Worklet
class
11.3.3
The worklet's lifetime
12
Web storage
12.1
Introduction
12.2
The API
12.2.1
The
Storage
interface
12.2.2
The
sessionStorage
getter
12.2.3
The
localStorage
getter
12.2.4
The
StorageEvent
interface
12.3
12.3.1
User tracking
12.3.2
Sensitivity of data
12.4
Security
12.4.1
DNS spoofing attacks
12.4.2
Cross-directory attacks
12.4.3
Implementation risks
13
The HTML syntax
13.1
Writing HTML documents
13.1.1
The DOCTYPE
13.1.2
Elements
13.1.2.1
Start tags
13.1.2.2
End tags
13.1.2.3
Attributes
13.1.2.4
Optional tags
13.1.2.5
Restrictions on content models
13.1.2.6
Restrictions on the contents of raw text and escapable raw text elements
13.1.3
Text
13.1.3.1
Newlines
13.1.4
Character references
13.1.5
CDATA sections
13.1.6
Comments
13.2
Parsing HTML documents
13.2.1
Overview of the parsing model
13.2.2
Parse errors
13.2.3
The input byte stream
13.2.3.1
Parsing with a known character encoding
13.2.3.2
Determining the character encoding
13.2.3.3
Character encodings
13.2.3.4
Changing the encoding while parsing
13.2.3.5
Preprocessing the input stream
13.2.4
Parse state
13.2.4.1
The insertion mode
13.2.4.2
The stack of open elements
13.2.4.3
The list of active formatting elements
13.2.4.4
The element pointers
13.2.4.5
Other parsing state flags
13.2.5
Tokenization
13.2.5.1
Data state
13.2.5.2
RCDATA state
13.2.5.3
RAWTEXT state
13.2.5.4
Script data state
13.2.5.5
PLAINTEXT state
13.2.5.6
Tag open state
13.2.5.7
End tag open state
13.2.5.8
Tag name state
13.2.5.9
RCDATA less-than sign state
13.2.5.10
RCDATA end tag open state
13.2.5.11
RCDATA end tag name state
13.2.5.12
RAWTEXT less-than sign state
13.2.5.13
RAWTEXT end tag open state
13.2.5.14
RAWTEXT end tag name state
13.2.5.15
Script data less-than sign state
13.2.5.16
Script data end tag open state
13.2.5.17
Script data end tag name state
13.2.5.18
Script data escape start state
13.2.5.19
Script data escape start dash state
13.2.5.20
Script data escaped state
13.2.5.21
Script data escaped dash state
13.2.5.22
Script data escaped dash dash state
13.2.5.23
Script data escaped less-than sign state
13.2.5.24
Script data escaped end tag open state
13.2.5.25
Script data escaped end tag name state
13.2.5.26
Script data double escape start state
13.2.5.27
Script data double escaped state
13.2.5.28
Script data double escaped dash state
13.2.5.29
Script data double escaped dash dash state
13.2.5.30
Script data double escaped less-than sign state
13.2.5.31
Script data double escape end state
13.2.5.32
Before attribute name state
13.2.5.33
Attribute name state
13.2.5.34
After attribute name state
13.2.5.35
Before attribute value state
13.2.5.36
Attribute value (double-quoted) state
13.2.5.37
Attribute value (single-quoted) state
13.2.5.38
Attribute value (unquoted) state
13.2.5.39
After attribute value (quoted) state
13.2.5.40
Self-closing start tag state
13.2.5.41
Bogus comment state
13.2.5.42
Markup declaration open state
13.2.5.43
Comment start state
13.2.5.44
Comment start dash state
13.2.5.45
Comment state
13.2.5.46
Comment less-than sign state
13.2.5.47
Comment less-than sign bang state
13.2.5.48
Comment less-than sign bang dash state
13.2.5.49
Comment less-than sign bang dash dash state
13.2.5.50
Comment end dash state
13.2.5.51
Comment end state
13.2.5.52
Comment end bang state
13.2.5.53
DOCTYPE state
13.2.5.54
Before DOCTYPE name state
13.2.5.55
DOCTYPE name state
13.2.5.56
After DOCTYPE name state
13.2.5.57
After DOCTYPE public keyword state
13.2.5.58
Before DOCTYPE public identifier state
13.2.5.59
DOCTYPE public identifier (double-quoted) state
13.2.5.60
DOCTYPE public identifier (single-quoted) state
13.2.5.61
After DOCTYPE public identifier state
13.2.5.62
Between DOCTYPE public and system identifiers state
13.2.5.63
After DOCTYPE system keyword state
13.2.5.64
Before DOCTYPE system identifier state
13.2.5.65
DOCTYPE system identifier (double-quoted) state
13.2.5.66
DOCTYPE system identifier (single-quoted) state
13.2.5.67
After DOCTYPE system identifier state
13.2.5.68
Bogus DOCTYPE state
13.2.5.69
CDATA section state
13.2.5.70
CDATA section bracket state
13.2.5.71
CDATA section end state
13.2.5.72
Character reference state
13.2.5.73
Named character reference state
13.2.5.74
Ambiguous ampersand state
13.2.5.75
Numeric character reference state
13.2.5.76
Hexadecimal character reference start state
13.2.5.77
Decimal character reference start state
13.2.5.78
Hexadecimal character reference state
13.2.5.79
Decimal character reference state
13.2.5.80
Numeric character reference end state
13.2.6
Tree construction
13.2.6.1
Creating and inserting nodes
13.2.6.2
Parsing elements that contain only text
13.2.6.3
Closing elements that have implied end tags
13.2.6.4
The rules for parsing tokens in HTML content
13.2.6.4.1
The "initial" insertion mode
13.2.6.4.2
The "before html" insertion mode
13.2.6.4.3
The "before head" insertion mode
13.2.6.4.4
The "in head" insertion mode
13.2.6.4.5
The "in head noscript" insertion mode
13.2.6.4.6
The "after head" insertion mode
13.2.6.4.7
The "in body" insertion mode
13.2.6.4.8
The "text" insertion mode
13.2.6.4.9
The "in table" insertion mode
13.2.6.4.10
The "in table text" insertion mode
13.2.6.4.11
The "in caption" insertion mode
13.2.6.4.12
The "in column group" insertion mode
13.2.6.4.13
The "in table body" insertion mode
13.2.6.4.14
The "in row" insertion mode
13.2.6.4.15
The "in cell" insertion mode
13.2.6.4.16
The "in select" insertion mode
13.2.6.4.17
The "in select in table" insertion mode
13.2.6.4.18
The "in template" insertion mode
13.2.6.4.19
The "after body" insertion mode
13.2.6.4.20
The "in frameset" insertion mode
13.2.6.4.21
The "after frameset" insertion mode
13.2.6.4.22
The "after after body" insertion mode
13.2.6.4.23
The "after after frameset" insertion mode
13.2.6.5
The rules for parsing tokens in foreign content
13.2.7
The end
13.2.8
Coercing an HTML DOM into an infoset
13.2.9
An introduction to error handling and strange cases in the parser
13.2.9.1
Misnested tags:
13.2.9.2
Misnested tags:


13.2.9.3
Unexpected markup in tables
13.2.9.4
Scripts that modify the page as it is being parsed
13.2.9.5
The execution of scripts that are moving across multiple documents
13.2.9.6
Unclosed formatting elements
13.3
Serializing HTML fragments
13.4
Parsing HTML fragments
13.5
Named character references
14
The XML syntax
14.1
Writing documents in the XML syntax
14.2
Parsing XML documents
14.3
Serializing XML fragments
14.4
Parsing XML fragments
15
Rendering
15.1
Introduction
15.2
The CSS user agent style sheet and presentational hints
15.3
Non-replaced elements
15.3.1
Hidden elements
15.3.2
The page
15.3.3
Flow content
15.3.4
Phrasing content
15.3.5
Bidirectional text
15.3.6
Sections and headings
15.3.7
Lists
15.3.8
Tables
15.3.9
Margin collapsing quirks
15.3.10
Form controls
15.3.11
The
hr
element
15.3.12
The
fieldset
and
legend
elements
15.4
Replaced elements
15.4.1
Embedded content
15.4.2
Images
15.4.3
Attributes for embedded content and images
15.4.4
Image maps
15.5
Widgets
15.5.1
Introduction
15.5.2
Button layout
15.5.3
The
button
element
15.5.4
The
details
and
summary
elements
15.5.5
The
input
element as a text entry widget
15.5.6
The
input
element as domain-specific widgets
15.5.7
The
input
element as a range control
15.5.8
The
input
element as a color
well
15.5.9
The
input
element as a checkbox and radio button widgets
15.5.10
The
input
element as a file upload control
15.5.11
The
input
element as a button
15.5.12
The
marquee
element
15.5.13
The
meter
element
15.5.14
The
progress
element
15.5.15
The
select
element
15.5.16
The
textarea
element
15.6
Frames and framesets
15.7
Interactive media
15.7.1
Links, forms, and navigation
15.7.2
The
title
attribute
15.7.3
Editing hosts
15.7.4
Text rendered in native user interfaces
15.8
Print media
15.9
Unstyled XML documents
16
Obsolete features
16.1
Obsolete but conforming features
16.1.1
Warnings for obsolete but conforming features
16.2
Non-conforming features
16.3
Requirements for implementations
16.3.1
The
marquee
element
16.3.2
Frames
16.3.3
Other elements, attributes and APIs
17
IANA considerations
17.1
text/html
17.2
multipart/x-mixed-replace
17.3
application/xhtml+xml
17.4
text/ping
17.5
application/microdata+json
17.6
text/event-stream
17.7
Cross-Origin-Embedder-Policy
17.8
Cross-Origin-Embedder-Policy-Report-Only
17.9
Cross-Origin-Opener-Policy
17.10
Cross-Origin-Opener-Policy-Report-Only
17.11
Origin-Agent-Cluster
17.12
Ping-From
17.13
Ping-To
17.14
Refresh
17.15
Last-Event-ID
17.16
X-Frame-Options
17.17
web+
scheme prefix
Index
Elements
Element content categories
Attributes
Element Interfaces
All Interfaces
Events
MIME Types
References
Acknowledgments
Intellectual property rights
Introduction
1.1
Where does this specification fit?
This specification defines a big part of the web platform, in lots of detail. Its place in the
web platform specification stack relative to other specifications can be best summed up as
follows:
1.2
Is this HTML5?
This section is non-normative.
In short: Yes.
In more length: the term "HTML5" is widely used as a buzzword to refer to modern web
technologies, many of which (though by no means all) are developed at the WHATWG. This document is
one such; others are available from
the WHATWG Standards
overview
1.3
Background
This section is non-normative.
HTML is the World Wide Web's core markup language. Originally, HTML was primarily designed as a
language for semantically describing scientific documents. Its general design, however, has
enabled it to be adapted, over the subsequent years, to describe a number of other types of
documents and even applications.
1.4
Audience
This section is non-normative.
This specification is intended for authors of documents and scripts that use the features
defined in this specification, implementers of tools that operate on pages that
use the features defined in this specification, and individuals wishing to establish the
correctness of documents or implementations with respect to the requirements of this
specification.
This document is probably not suited to readers who do not already have at least a passing
familiarity with web technologies, as in places it sacrifices clarity for precision, and brevity
for completeness. More approachable tutorials and authoring guides can provide a gentler
introduction to the topic.
In particular, familiarity with the basics of DOM is necessary for a complete understanding of
some of the more technical parts of this specification. An understanding of Web IDL, HTTP, XML,
Unicode, character encodings, JavaScript, and CSS will also be helpful in places but is not
essential.
1.5
Scope
This section is non-normative.
This specification is limited to providing a semantic-level markup language and associated
semantic-level scripting APIs for authoring accessible pages on the web ranging from static
documents to dynamic applications.
The scope of this specification does not include providing mechanisms for media-specific
customization of presentation (although default rendering rules for web browsers are included at
the end of this specification, and several mechanisms for hooking into CSS are provided as part of
the language).
The scope of this specification is not to describe an entire operating system. In particular,
hardware configuration software, image manipulation tools, and applications that users would be
expected to use with high-end workstations on a daily basis are out of scope. In terms of
applications, this specification is targeted specifically at applications that would be expected
to be used by users on an occasional basis, or regularly but from disparate locations, with low
CPU requirements. Examples of such applications include online purchasing systems, searching
systems, games (especially multiplayer online games), public telephone books or address books,
communications software (email clients, instant messaging clients, discussion software), document
editing software, etc.
1.6
History
This section is non-normative.
For its first five years (1990-1995), HTML went through a number of revisions and experienced a
number of extensions, primarily hosted first at CERN, and then at the IETF.
With the creation of the W3C, HTML's development changed venue again. A first abortive attempt
at extending HTML in 1995 known as HTML 3.0 then made way to a more pragmatic approach known as
HTML 3.2, which was completed in 1997. HTML4 quickly followed later that same year.
The following year, the W3C membership decided to stop evolving HTML and instead begin work on
an XML-based equivalent, called XHTML. This
effort started with a reformulation of HTML4 in XML, known as XHTML 1.0, which added no new
features except the new serialization, and which was completed in 2000. After XHTML 1.0, the W3C's
focus turned to making it easier for other working groups to extend XHTML, under the banner of
XHTML Modularization. In parallel with this, the W3C also worked on a new language that was not
compatible with the earlier HTML and XHTML languages, calling it XHTML2.
Around the time that HTML's evolution was stopped in 1998, parts of the API for HTML developed
by browser vendors were specified and published under the name DOM Level 1 (in 1998) and DOM Level
2 Core and DOM Level 2 HTML (starting in 2000 and culminating in 2003). These efforts then petered
out, with some DOM Level 3 specifications published in 2004 but the working group being closed
before all the Level 3 drafts were completed.
In 2003, the publication of XForms, a technology which was positioned as the next generation of
web forms, sparked a renewed interest in evolving HTML itself, rather than finding replacements
for it. This interest was borne from the realization that XML's deployment as a web technology was
limited to entirely new technologies (like RSS and later Atom), rather than as a replacement for
existing deployed technologies (like HTML).
A proof of concept to show that it was possible to extend HTML4's forms to provide many of the
features that XForms 1.0 introduced, without requiring browsers to implement rendering engines
that were incompatible with existing HTML web pages, was the first result of this renewed
interest. At this early stage, while the draft was already publicly available, and input was
already being solicited from all sources, the specification was only under Opera Software's
copyright.
The idea that HTML's evolution should be reopened was tested at a W3C workshop in 2004, where
some of the principles that underlie the HTML5 work (described below), as well as the
aforementioned early draft proposal covering just forms-related features, were presented to the
W3C jointly by Mozilla and Opera. The proposal was rejected on the grounds that the proposal
conflicted with the previously chosen direction for the web's evolution; the W3C staff and
membership voted to continue developing XML-based replacements instead.
Shortly thereafter, Apple, Mozilla, and Opera jointly announced their intent to continue
working on the effort under the umbrella of a new venue called the WHATWG. A public mailing list
was created, and the draft was moved to the WHATWG site. The copyright was subsequently amended to
be jointly owned by all three vendors, and to allow reuse of the specification.
The WHATWG was based on several core principles, in particular that technologies need to be
backwards compatible, that specifications and implementations need to match even if this means
changing the specification rather than the implementations, and that specifications need to be
detailed enough that implementations can achieve complete interoperability without
reverse-engineering each other.
The latter requirement in particular required that the scope of the HTML5 specification include
what had previously been specified in three separate documents: HTML4, XHTML1, and DOM2 HTML. It
also meant including significantly more detail than had previously been considered the norm.
In 2006, the W3C indicated an interest to participate in the development of HTML5 after all,
and in 2007 formed a working group chartered to work with the WHATWG on the development of the
HTML5 specification. Apple, Mozilla, and Opera allowed the W3C to publish the specification under
the W3C copyright, while keeping a version with the less restrictive license on the WHATWG
site.
For a number of years, both groups then worked together. In 2011, however, the groups came to
the conclusion that they had different goals: the W3C wanted to publish a "finished" version of
"HTML5", while the WHATWG wanted to continue working on a Living Standard for HTML, continuously
maintaining the specification rather than freezing it in a state with known problems, and adding
new features as needed to evolve the platform.
In 2019, the WHATWG and W3C
signed an
agreement
to collaborate on a single version of HTML going forward: this document.
1.7
Design notes
This section is non-normative.
It must be admitted that many aspects of HTML appear at first glance to be nonsensical and
inconsistent.
HTML, its supporting DOM APIs, as well as many of its supporting technologies, have been
developed over a period of several decades by a wide array of people with different priorities
who, in many cases, did not know of each other's existence.
Features have thus arisen from many sources, and have not always been designed in especially
consistent ways. Furthermore, because of the unique characteristics of the web, implementation
bugs have often become de-facto, and now de-jure, standards, as content is often unintentionally
written in ways that rely on them before they can be fixed.
Despite all this, efforts have been made to adhere to certain design goals. These are described
in the next few subsections.
1.7.1
Serializability of script execution
This section is non-normative.
To avoid exposing web authors to the complexities of multithreading, the HTML and DOM APIs are
designed such that no script can ever detect the simultaneous execution of other scripts. Even
with
workers
, the intent is that the behavior of implementations can
be thought of as completely serializing the execution of all scripts in all
browsing contexts
The exception to this general design principle is the JavaScript
SharedArrayBuffer
class. Using
SharedArrayBuffer
objects, it can in fact be observed that scripts in
other
agents
are executing simultaneously. Furthermore, due to the
JavaScript memory model, there are situations which not only are un-representable via serialized
script
execution, but also un-representable via serialized
statement
execution
among those scripts.
1.7.2
Compliance with other specifications
This section is non-normative.
This specification interacts with and relies on a wide variety of other specifications. In
certain circumstances, unfortunately, conflicting needs have led to this specification violating
the requirements of these other specifications. Whenever this has occurred, the transgressions
have each been noted as a "
willful violation
", and the reason for the violation has
been noted.
1.7.3
Extensibility
This section is non-normative.
HTML has a wide array of extensibility mechanisms that can be used for adding semantics in a
safe manner:
Authors can use the
class
attribute to extend elements,
effectively creating their own elements, while using the most applicable existing "real" HTML
element, so that browsers and other tools that don't know of the extension can still support it
somewhat well. This is the tack used by microformats, for example.
Authors can include data for inline client-side scripts or server-side site-wide scripts
to process using the
data-*=""
attributes. These are guaranteed
to never be touched by browsers, and allow scripts to include data on HTML elements that scripts
can then look for and process.
Authors can use the

mechanism to
include page-wide metadata.
Authors can use the
rel=""
mechanism to annotate
links with specific meanings by registering
extensions to
the predefined set of link types
. This is also used by microformats.
Authors can embed raw data using the

", or having a
element that contains a
ul
element (as the
ul
element's
start
tag
would imply the end tag for the
).
This can enable cross-site scripting attacks. An example of this would be a page that lets the
user enter some font family names that are then inserted into a CSS
style
block via
the DOM and which then uses the
innerHTML
IDL attribute to get
the HTML serialization of that
style
element: if the user enters

" as a font family name,
innerHTML
will return markup that, if parsed in a different context,
would contain a
script
node, even though no
script
node existed in the
original DOM.
For example, consider the following markup:
form
id
"outer"
><
div
>form
><
form
id
"inner"
><
input
This will be parsed into:
html
head
body
form
id
="
outer
div
form
id
="
inner
input
The
input
element will be associated with the inner
form
element.
Now, if this tree structure is serialized and reparsed, the
id="inner">
start tag will be ignored, and so the
input
element will be
associated with the outer
form
element instead.
html
><
head
>head
><
body
><
form
id
"outer"
><
div
form
id
"inner"
input
>form
>div
>form
>body
>html
html
head
body
form
id
="
outer
div
input
As another example, consider the following markup:
><
table
><
This will be parsed into:
html
head
body
table
That is, the
elements are nested, because the second
element is
foster parented
. After a serialize-reparse roundtrip, the
elements and the
table
element would all be siblings, because the
second

start tag implicitly closes the first
element.
html
><
head
>head
><
body
><
><
table
>table
>>body
>html
html
head
body
table
For historical reasons, this algorithm does not round-trip an initial U+000A LINE FEED (LF)
character in
pre
textarea
, or
listing
elements, even
though (in the first two cases) the markup being round-tripped can be conforming. The
HTML
parser
will drop such a character during parsing, but this algorithm does
not
serialize an extra U+000A LINE FEED (LF) character.
For example, consider the following markup:
pre
Hello.
pre
When this document is first parsed, the
pre
element's
child text
content
starts with a single newline character. After a serialize-reparse roundtrip, the
pre
element's
child text content
is simply "
Hello.
".
Because of the special role of the
is
attribute in signaling the creation of
customized built-in elements
, in that it provides a mechanism for parsed
HTML to set the element's
is
value
, we special-case its handling during serialization. This ensures that an element's
is
value
is preserved
through serialize-parse roundtrips.
When creating a
customized built-in element
via the parser, a developer uses the
is
attribute directly; in such cases serialize-parse roundtrips work fine.
script
window
SuperP
class
extends
HTMLParagraphElement
{};
customElements
define
"super-p"
SuperP
extends
"p"
});
script
div
id
"container"
><
is
"super-p"
Superb!
>div
script
console
log
container
innerHTML
);
//


container
innerHTML
container
innerHTML
console
log
container
innerHTML
);
//


console
assert
container
firstChild
instanceof
SuperP
);
script
But when creating a customized built-in element via its
constructor
or via
createElement()
, the
is
attribute is not added. Instead, the
is
value
(which is what the custom elements machinery uses) is set
without intermediating through an attribute.
script
container
innerHTML
""
const
document
createElement
"p"
is
"super-p"
});
container
appendChild
);
// The is attribute is not present in the DOM:
console
assert
hasAttribute
"is"
));
// But the element is still a super-p:
console
assert
instanceof
SuperP
);
script
To ensure that serialize-parse roundtrips still work, the serialization process explicitly
writes out the element's
is
value
as an
is
attribute:
script
console
log
container
innerHTML
);
//


container
innerHTML
container
innerHTML
console
log
container
innerHTML
);
//


console
assert
container
firstChild
instanceof
SuperP
);
script
Escaping a string
(for the purposes of the algorithm above)
consists of running the following steps:
Replace any occurrence of the "
" character by the string "
&
".
Replace any occurrences of the U+00A0 NO-BREAK SPACE character by the string "
 
".
If the algorithm was invoked in the
attribute mode
, replace any occurrences of the
" character by the string "
"
".
If the algorithm was
not
invoked in the
attribute mode
, replace any
occurrences of the "
" character by the string "
<
", and any occurrences of the "
" character by
the string "
>
".
13.4
Parsing HTML fragments
The following steps form the
HTML fragment parsing algorithm
. The algorithm
takes as input an
Element
node, referred to as the
context
element, which gives the context for
the parser, as well as
input
, a string to parse, and returns a list of zero or
more nodes.
Parts marked
fragment case
in algorithms in the parser section are
parts that only occur if the parser was created for the purposes of this algorithm. The algorithms have been annotated
with such markings for informational purposes only; such markings have no normative weight. If it
is possible for a condition described as a
fragment case
to occur even when the
parser wasn't created for the purposes of handling this algorithm, then that is an error in the
specification.
Create a new
Document
node, and mark it as being an
HTML document
If the
node document
of the
context
element is in
quirks mode
, then let the
Document
be in
quirks mode
Otherwise, the
node document
of the
context
element is in
limited-quirks mode
, then let the
Document
be in
limited-quirks
mode
. Otherwise, leave the
Document
in
no-quirks mode
Create a new
HTML parser
, and associate it with the just created
Document
node.
Set the state of the
HTML parser
's
tokenization
stage as
follows, switching on the
context
element:
title
textarea
Switch the tokenizer to the
RCDATA state
style
xmp
iframe
noembed
noframes
Switch the tokenizer to the
RAWTEXT state
script
Switch the tokenizer to the
script data state
noscript
If the
scripting flag
is enabled, switch the tokenizer to the
RAWTEXT
state
. Otherwise, leave the tokenizer in the
data state
plaintext
Switch the tokenizer to the
PLAINTEXT state
Any other element
Leave the tokenizer in the
data state
For performance reasons, an implementation that does not report errors and
that uses the actual state machine described in this specification directly could use the
PLAINTEXT state instead of the RAWTEXT and script data states where those are mentioned in the
list above. Except for rules regarding parse errors, they are equivalent, since there is no
appropriate end tag token
in the fragment case, yet they involve far fewer state
transitions.
Let
root
be a new
html
element with no attributes.
Append the element
root
to the
Document
node created
above.
Set up the parser's
stack of open elements
so that it contains just the single
element
root
If the
context
element is a
template
element, push "
in
template
" onto the
stack of template insertion modes
so that it is the new
current template insertion mode
Create a start tag token whose name is the local name of
context
and whose attributes are the attributes of
context
Let this start tag token be the start tag token of the
context
node, e.g. for the purposes of determining
if it is an
HTML integration point
Reset the parser's insertion mode
appropriately
The parser will reference the
context
element as part of that algorithm.
Set the parser's
form
element pointer
to the nearest node to the
context
element that is a
form
element (going straight up the ancestor chain, and including the element itself, if it is a
form
element), if any. (If there is no such
form
element, the
form
element pointer
keeps its initial value, null.)
Place the
input
into the
input stream
for the
HTML
parser
just created. The encoding
confidence
is
irrelevant
Start the parser and let it run until it has consumed all the characters just inserted into
the input stream.
Return the child
nodes of
root
, in
tree order
13.5
Named character references
This table lists the character reference names that are supported by HTML, and the code points
to which they refer. It is referenced by the previous sections.
It is intentional, for legacy compatibility, that many code points have multiple
character reference names. For example, some appear both with and without the trailing semicolon,
or with different capitalizations.
Name
Character(s)
Glyph
Aacute;
U+000C1
Aacute
U+000C1
aacute;
U+000E1
aacute
U+000E1
Abreve;
U+00102
abreve;
U+00103
ac;
U+0223E
acd;
U+0223F
acE;
U+0223E U+00333
∾̳
Acirc;
U+000C2
Acirc
U+000C2
acirc;
U+000E2
acirc
U+000E2
acute;
U+000B4
acute
U+000B4
Acy;
U+00410
acy;
U+00430
AElig;
U+000C6
AElig
U+000C6
aelig;
U+000E6
aelig
U+000E6
af;
U+02061
Afr;
U+1D504
afr;
U+1D51E
Agrave;
U+000C0
Agrave
U+000C0
agrave;
U+000E0
agrave
U+000E0
alefsym;
U+02135
aleph;
U+02135
Alpha;
U+00391
alpha;
U+003B1
Amacr;
U+00100
amacr;
U+00101
amalg;
U+02A3F
AMP;
U+00026
AMP
U+00026
amp;
U+00026
amp
U+00026
And;
U+02A53
and;
U+02227
andand;
U+02A55
andd;
U+02A5C
andslope;
U+02A58
andv;
U+02A5A
ang;
U+02220
ange;
U+029A4
angle;
U+02220
angmsd;
U+02221
angmsdaa;
U+029A8
angmsdab;
U+029A9
angmsdac;
U+029AA
angmsdad;
U+029AB
angmsdae;
U+029AC
angmsdaf;
U+029AD
angmsdag;
U+029AE
angmsdah;
U+029AF
angrt;
U+0221F
angrtvb;
U+022BE
angrtvbd;
U+0299D
angsph;
U+02222
angst;
U+000C5
angzarr;
U+0237C
Aogon;
U+00104
aogon;
U+00105
Aopf;
U+1D538
aopf;
U+1D552
ap;
U+02248
apacir;
U+02A6F
apE;
U+02A70
ape;
U+0224A
apid;
U+0224B
apos;
U+00027
ApplyFunction;
U+02061
approx;
U+02248
approxeq;
U+0224A
Aring;
U+000C5
Aring
U+000C5
aring;
U+000E5
aring
U+000E5
Ascr;
U+1D49C
ascr;
U+1D4B6
Assign;
U+02254
ast;
U+0002A
asymp;
U+02248
asympeq;
U+0224D
Atilde;
U+000C3
Atilde
U+000C3
atilde;
U+000E3
atilde
U+000E3
Auml;
U+000C4
Auml
U+000C4
auml;
U+000E4
auml
U+000E4
awconint;
U+02233
awint;
U+02A11
backcong;
U+0224C
backepsilon;
U+003F6
backprime;
U+02035
backsim;
U+0223D
backsimeq;
U+022CD
Backslash;
U+02216
Barv;
U+02AE7
barvee;
U+022BD
Barwed;
U+02306
barwed;
U+02305
barwedge;
U+02305
bbrk;
U+023B5
bbrktbrk;
U+023B6
bcong;
U+0224C
Bcy;
U+00411
bcy;
U+00431
bdquo;
U+0201E
becaus;
U+02235
Because;
U+02235
because;
U+02235
bemptyv;
U+029B0
bepsi;
U+003F6
bernou;
U+0212C
Bernoullis;
U+0212C
Beta;
U+00392
beta;
U+003B2
beth;
U+02136
between;
U+0226C
Bfr;
U+1D505
bfr;
U+1D51F
bigcap;
U+022C2
bigcirc;
U+025EF
bigcup;
U+022C3
bigodot;
U+02A00
bigoplus;
U+02A01
bigotimes;
U+02A02
bigsqcup;
U+02A06
bigstar;
U+02605
bigtriangledown;
U+025BD
bigtriangleup;
U+025B3
biguplus;
U+02A04
bigvee;
U+022C1
bigwedge;
U+022C0
bkarow;
U+0290D
blacklozenge;
U+029EB
blacksquare;
U+025AA
blacktriangle;
U+025B4
blacktriangledown;
U+025BE
blacktriangleleft;
U+025C2
blacktriangleright;
U+025B8
blank;
U+02423
blk12;
U+02592
blk14;
U+02591
blk34;
U+02593
block;
U+02588
bne;
U+0003D U+020E5
=⃥
bnequiv;
U+02261 U+020E5
≡⃥
bNot;
U+02AED
bnot;
U+02310
Bopf;
U+1D539
bopf;
U+1D553
bot;
U+022A5
bottom;
U+022A5
bowtie;
U+022C8
boxbox;
U+029C9
boxDL;
U+02557
boxDl;
U+02556
boxdL;
U+02555
boxdl;
U+02510
boxDR;
U+02554
boxDr;
U+02553
boxdR;
U+02552
boxdr;
U+0250C
boxH;
U+02550
boxh;
U+02500
boxHD;
U+02566
boxHd;
U+02564
boxhD;
U+02565
boxhd;
U+0252C
boxHU;
U+02569
boxHu;
U+02567
boxhU;
U+02568
boxhu;
U+02534
boxminus;
U+0229F
boxplus;
U+0229E
boxtimes;
U+022A0
boxUL;
U+0255D
boxUl;
U+0255C
boxuL;
U+0255B
boxul;
U+02518
boxUR;
U+0255A
boxUr;
U+02559
boxuR;
U+02558
boxur;
U+02514
boxV;
U+02551
boxv;
U+02502
boxVH;
U+0256C
boxVh;
U+0256B
boxvH;
U+0256A
boxvh;
U+0253C
boxVL;
U+02563
boxVl;
U+02562
boxvL;
U+02561
boxvl;
U+02524
boxVR;
U+02560
boxVr;
U+0255F
boxvR;
U+0255E
boxvr;
U+0251C
bprime;
U+02035
Breve;
U+002D8
breve;
U+002D8
brvbar;
U+000A6
brvbar
U+000A6
Bscr;
U+0212C
bscr;
U+1D4B7
bsemi;
U+0204F
bsim;
U+0223D
bsime;
U+022CD
bsol;
U+0005C
bsolb;
U+029C5
bsolhsub;
U+027C8
bull;
U+02022
bullet;
U+02022
bump;
U+0224E
bumpE;
U+02AAE
bumpe;
U+0224F
Bumpeq;
U+0224E
bumpeq;
U+0224F
Cacute;
U+00106
cacute;
U+00107
Cap;
U+022D2
cap;
U+02229
capand;
U+02A44
capbrcup;
U+02A49
capcap;
U+02A4B
capcup;
U+02A47
capdot;
U+02A40
CapitalDifferentialD;
U+02145
caps;
U+02229 U+0FE00
∩︀
caret;
U+02041
caron;
U+002C7
Cayleys;
U+0212D
ccaps;
U+02A4D
Ccaron;
U+0010C
ccaron;
U+0010D
Ccedil;
U+000C7
Ccedil
U+000C7
ccedil;
U+000E7
ccedil
U+000E7
Ccirc;
U+00108
ccirc;
U+00109
Cconint;
U+02230
ccups;
U+02A4C
ccupssm;
U+02A50
Cdot;
U+0010A
cdot;
U+0010B
cedil;
U+000B8
cedil
U+000B8
Cedilla;
U+000B8
cemptyv;
U+029B2
cent;
U+000A2
cent
U+000A2
CenterDot;
U+000B7
centerdot;
U+000B7
Cfr;
U+0212D
cfr;
U+1D520
CHcy;
U+00427
chcy;
U+00447
check;
U+02713
checkmark;
U+02713
Chi;
U+003A7
chi;
U+003C7
cir;
U+025CB
circ;
U+002C6
circeq;
U+02257
circlearrowleft;
U+021BA
circlearrowright;
U+021BB
circledast;
U+0229B
circledcirc;
U+0229A
circleddash;
U+0229D
CircleDot;
U+02299
circledR;
U+000AE
circledS;
U+024C8
CircleMinus;
U+02296
CirclePlus;
U+02295
CircleTimes;
U+02297
cirE;
U+029C3
cire;
U+02257
cirfnint;
U+02A10
cirmid;
U+02AEF
cirscir;
U+029C2
ClockwiseContourIntegral;
U+02232
CloseCurlyDoubleQuote;
U+0201D
CloseCurlyQuote;
U+02019
clubs;
U+02663
clubsuit;
U+02663
Colon;
U+02237
colon;
U+0003A
Colone;
U+02A74
colone;
U+02254
coloneq;
U+02254
comma;
U+0002C
commat;
U+00040
comp;
U+02201
compfn;
U+02218
complement;
U+02201
complexes;
U+02102
cong;
U+02245
congdot;
U+02A6D
Congruent;
U+02261
Conint;
U+0222F
conint;
U+0222E
ContourIntegral;
U+0222E
Copf;
U+02102
copf;
U+1D554
coprod;
U+02210
Coproduct;
U+02210
COPY;
U+000A9
COPY
U+000A9
copy;
U+000A9
copy
U+000A9
copysr;
U+02117
CounterClockwiseContourIntegral;
U+02233
crarr;
U+021B5
Cross;
U+02A2F
cross;
U+02717
Cscr;
U+1D49E
cscr;
U+1D4B8
csub;
U+02ACF
csube;
U+02AD1
csup;
U+02AD0
csupe;
U+02AD2
ctdot;
U+022EF
cudarrl;
U+02938
cudarrr;
U+02935
cuepr;
U+022DE
cuesc;
U+022DF
cularr;
U+021B6
cularrp;
U+0293D
Cup;
U+022D3
cup;
U+0222A
cupbrcap;
U+02A48
CupCap;
U+0224D
cupcap;
U+02A46
cupcup;
U+02A4A
cupdot;
U+0228D
cupor;
U+02A45
cups;
U+0222A U+0FE00
∪︀
curarr;
U+021B7
curarrm;
U+0293C
curlyeqprec;
U+022DE
curlyeqsucc;
U+022DF
curlyvee;
U+022CE
curlywedge;
U+022CF
curren;
U+000A4
curren
U+000A4
curvearrowleft;
U+021B6
curvearrowright;
U+021B7
cuvee;
U+022CE
cuwed;
U+022CF
cwconint;
U+02232
cwint;
U+02231
cylcty;
U+0232D
Dagger;
U+02021
dagger;
U+02020
daleth;
U+02138
Darr;
U+021A1
dArr;
U+021D3
darr;
U+02193
dash;
U+02010
Dashv;
U+02AE4
dashv;
U+022A3
dbkarow;
U+0290F
dblac;
U+002DD
Dcaron;
U+0010E
dcaron;
U+0010F
Dcy;
U+00414
dcy;
U+00434
DD;
U+02145
dd;
U+02146
ddagger;
U+02021
ddarr;
U+021CA
DDotrahd;
U+02911
ddotseq;
U+02A77
deg;
U+000B0
deg
U+000B0
Del;
U+02207
Delta;
U+00394
delta;
U+003B4
demptyv;
U+029B1
dfisht;
U+0297F
Dfr;
U+1D507
dfr;
U+1D521
dHar;
U+02965
dharl;
U+021C3
dharr;
U+021C2
DiacriticalAcute;
U+000B4
DiacriticalDot;
U+002D9
DiacriticalDoubleAcute;
U+002DD
DiacriticalGrave;
U+00060
DiacriticalTilde;
U+002DC
diam;
U+022C4
Diamond;
U+022C4
diamond;
U+022C4
diamondsuit;
U+02666
diams;
U+02666
die;
U+000A8
DifferentialD;
U+02146
digamma;
U+003DD
disin;
U+022F2
div;
U+000F7
divide;
U+000F7
divide
U+000F7
divideontimes;
U+022C7
divonx;
U+022C7
DJcy;
U+00402
djcy;
U+00452
dlcorn;
U+0231E
dlcrop;
U+0230D
dollar;
U+00024
Dopf;
U+1D53B
dopf;
U+1D555
Dot;
U+000A8
dot;
U+002D9
DotDot;
U+020DC
◌⃜
doteq;
U+02250
doteqdot;
U+02251
DotEqual;
U+02250
dotminus;
U+02238
dotplus;
U+02214
dotsquare;
U+022A1
doublebarwedge;
U+02306
DoubleContourIntegral;
U+0222F
DoubleDot;
U+000A8
DoubleDownArrow;
U+021D3
DoubleLeftArrow;
U+021D0
DoubleLeftRightArrow;
U+021D4
DoubleLeftTee;
U+02AE4
DoubleLongLeftArrow;
U+027F8
DoubleLongLeftRightArrow;
U+027FA
DoubleLongRightArrow;
U+027F9
DoubleRightArrow;
U+021D2
DoubleRightTee;
U+022A8
DoubleUpArrow;
U+021D1
DoubleUpDownArrow;
U+021D5
DoubleVerticalBar;
U+02225
DownArrow;
U+02193
Downarrow;
U+021D3
downarrow;
U+02193
DownArrowBar;
U+02913
DownArrowUpArrow;
U+021F5
DownBreve;
U+00311
◌̑
downdownarrows;
U+021CA
downharpoonleft;
U+021C3
downharpoonright;
U+021C2
DownLeftRightVector;
U+02950
DownLeftTeeVector;
U+0295E
DownLeftVector;
U+021BD
DownLeftVectorBar;
U+02956
DownRightTeeVector;
U+0295F
DownRightVector;
U+021C1
DownRightVectorBar;
U+02957
DownTee;
U+022A4
DownTeeArrow;
U+021A7
drbkarow;
U+02910
drcorn;
U+0231F
drcrop;
U+0230C
Dscr;
U+1D49F
dscr;
U+1D4B9
DScy;
U+00405
dscy;
U+00455
dsol;
U+029F6
Dstrok;
U+00110
dstrok;
U+00111
dtdot;
U+022F1
dtri;
U+025BF
dtrif;
U+025BE
duarr;
U+021F5
duhar;
U+0296F
dwangle;
U+029A6
DZcy;
U+0040F
dzcy;
U+0045F
dzigrarr;
U+027FF
Eacute;
U+000C9
Eacute
U+000C9
eacute;
U+000E9
eacute
U+000E9
easter;
U+02A6E
Ecaron;
U+0011A
ecaron;
U+0011B
ecir;
U+02256
Ecirc;
U+000CA
Ecirc
U+000CA
ecirc;
U+000EA
ecirc
U+000EA
ecolon;
U+02255
Ecy;
U+0042D
ecy;
U+0044D
eDDot;
U+02A77
Edot;
U+00116
eDot;
U+02251
edot;
U+00117
ee;
U+02147
efDot;
U+02252
Efr;
U+1D508
efr;
U+1D522
eg;
U+02A9A
Egrave;
U+000C8
Egrave
U+000C8
egrave;
U+000E8
egrave
U+000E8
egs;
U+02A96
egsdot;
U+02A98
el;
U+02A99
Element;
U+02208
elinters;
U+023E7
ell;
U+02113
els;
U+02A95
elsdot;
U+02A97
Emacr;
U+00112
emacr;
U+00113
empty;
U+02205
emptyset;
U+02205
EmptySmallSquare;
U+025FB
emptyv;
U+02205
EmptyVerySmallSquare;
U+025AB
emsp;
U+02003
emsp13;
U+02004
emsp14;
U+02005
ENG;
U+0014A
eng;
U+0014B
ensp;
U+02002
Eogon;
U+00118
eogon;
U+00119
Eopf;
U+1D53C
eopf;
U+1D556
epar;
U+022D5
eparsl;
U+029E3
eplus;
U+02A71
epsi;
U+003B5
Epsilon;
U+00395
epsilon;
U+003B5
epsiv;
U+003F5
eqcirc;
U+02256
eqcolon;
U+02255
eqsim;
U+02242
eqslantgtr;
U+02A96
eqslantless;
U+02A95
Equal;
U+02A75
equals;
U+0003D
EqualTilde;
U+02242
equest;
U+0225F
Equilibrium;
U+021CC
equiv;
U+02261
equivDD;
U+02A78
eqvparsl;
U+029E5
erarr;
U+02971
erDot;
U+02253
Escr;
U+02130
escr;
U+0212F
esdot;
U+02250
Esim;
U+02A73
esim;
U+02242
Eta;
U+00397
eta;
U+003B7
ETH;
U+000D0
ETH
U+000D0
eth;
U+000F0
eth
U+000F0
Euml;
U+000CB
Euml
U+000CB
euml;
U+000EB
euml
U+000EB
euro;
U+020AC
excl;
U+00021
exist;
U+02203
Exists;
U+02203
expectation;
U+02130
ExponentialE;
U+02147
exponentiale;
U+02147
fallingdotseq;
U+02252
Fcy;
U+00424
fcy;
U+00444
female;
U+02640
ffilig;
U+0FB03
fflig;
U+0FB00
ffllig;
U+0FB04
Ffr;
U+1D509
ffr;
U+1D523
filig;
U+0FB01
FilledSmallSquare;
U+025FC
FilledVerySmallSquare;
U+025AA
fjlig;
U+00066 U+0006A
fj
flat;
U+0266D
fllig;
U+0FB02
fltns;
U+025B1
fnof;
U+00192
Fopf;
U+1D53D
fopf;
U+1D557
ForAll;
U+02200
forall;
U+02200
fork;
U+022D4
forkv;
U+02AD9
Fouriertrf;
U+02131
fpartint;
U+02A0D
frac12;
U+000BD
frac12
U+000BD
frac13;
U+02153
frac14;
U+000BC
frac14
U+000BC
frac15;
U+02155
frac16;
U+02159
frac18;
U+0215B
frac23;
U+02154
frac25;
U+02156
frac34;
U+000BE
frac34
U+000BE
frac35;
U+02157
frac38;
U+0215C
frac45;
U+02158
frac56;
U+0215A
frac58;
U+0215D
frac78;
U+0215E
frasl;
U+02044
frown;
U+02322
Fscr;
U+02131
fscr;
U+1D4BB
gacute;
U+001F5
Gamma;
U+00393
gamma;
U+003B3
Gammad;
U+003DC
gammad;
U+003DD
gap;
U+02A86
Gbreve;
U+0011E
gbreve;
U+0011F
Gcedil;
U+00122
Gcirc;
U+0011C
gcirc;
U+0011D
Gcy;
U+00413
gcy;
U+00433
Gdot;
U+00120
gdot;
U+00121
gE;
U+02267
ge;
U+02265
gEl;
U+02A8C
gel;
U+022DB
geq;
U+02265
geqq;
U+02267
geqslant;
U+02A7E
ges;
U+02A7E
gescc;
U+02AA9
gesdot;
U+02A80
gesdoto;
U+02A82
gesdotol;
U+02A84
gesl;
U+022DB U+0FE00
⋛︀
gesles;
U+02A94
Gfr;
U+1D50A
gfr;
U+1D524
Gg;
U+022D9
gg;
U+0226B
ggg;
U+022D9
gimel;
U+02137
GJcy;
U+00403
gjcy;
U+00453
gl;
U+02277
gla;
U+02AA5
glE;
U+02A92
glj;
U+02AA4
gnap;
U+02A8A
gnapprox;
U+02A8A
gnE;
U+02269
gne;
U+02A88
gneq;
U+02A88
gneqq;
U+02269
gnsim;
U+022E7
Gopf;
U+1D53E
gopf;
U+1D558
grave;
U+00060
GreaterEqual;
U+02265
GreaterEqualLess;
U+022DB
GreaterFullEqual;
U+02267
GreaterGreater;
U+02AA2
GreaterLess;
U+02277
GreaterSlantEqual;
U+02A7E
GreaterTilde;
U+02273
Gscr;
U+1D4A2
gscr;
U+0210A
gsim;
U+02273
gsime;
U+02A8E
gsiml;
U+02A90
GT;
U+0003E
GT
U+0003E
Gt;
U+0226B
gt;
U+0003E
gt
U+0003E
gtcc;
U+02AA7
gtcir;
U+02A7A
gtdot;
U+022D7
gtlPar;
U+02995
gtquest;
U+02A7C
gtrapprox;
U+02A86
gtrarr;
U+02978
gtrdot;
U+022D7
gtreqless;
U+022DB
gtreqqless;
U+02A8C
gtrless;
U+02277
gtrsim;
U+02273
gvertneqq;
U+02269 U+0FE00
≩︀
gvnE;
U+02269 U+0FE00
≩︀
Hacek;
U+002C7
hairsp;
U+0200A
half;
U+000BD
hamilt;
U+0210B
HARDcy;
U+0042A
hardcy;
U+0044A
hArr;
U+021D4
harr;
U+02194
harrcir;
U+02948
harrw;
U+021AD
Hat;
U+0005E
hbar;
U+0210F
Hcirc;
U+00124
hcirc;
U+00125
hearts;
U+02665
heartsuit;
U+02665
hellip;
U+02026
hercon;
U+022B9
Hfr;
U+0210C
hfr;
U+1D525
HilbertSpace;
U+0210B
hksearow;
U+02925
hkswarow;
U+02926
hoarr;
U+021FF
homtht;
U+0223B
hookleftarrow;
U+021A9
hookrightarrow;
U+021AA
Hopf;
U+0210D
hopf;
U+1D559
horbar;
U+02015
HorizontalLine;
U+02500
Hscr;
U+0210B
hscr;
U+1D4BD
hslash;
U+0210F
Hstrok;
U+00126
hstrok;
U+00127
HumpDownHump;
U+0224E
HumpEqual;
U+0224F
hybull;
U+02043
hyphen;
U+02010
Iacute;
U+000CD
Iacute
U+000CD
iacute;
U+000ED
iacute
U+000ED
ic;
U+02063
Icirc;
U+000CE
Icirc
U+000CE
icirc;
U+000EE
icirc
U+000EE
Icy;
U+00418
icy;
U+00438
Idot;
U+00130
IEcy;
U+00415
iecy;
U+00435
iexcl;
U+000A1
iexcl
U+000A1
iff;
U+021D4
Ifr;
U+02111
ifr;
U+1D526
Igrave;
U+000CC
Igrave
U+000CC
igrave;
U+000EC
igrave
U+000EC
ii;
U+02148
iiiint;
U+02A0C
iiint;
U+0222D
iinfin;
U+029DC
iiota;
U+02129
IJlig;
U+00132
ijlig;
U+00133
Im;
U+02111
Imacr;
U+0012A
imacr;
U+0012B
image;
U+02111
ImaginaryI;
U+02148
imagline;
U+02110
imagpart;
U+02111
imath;
U+00131
imof;
U+022B7
imped;
U+001B5
Implies;
U+021D2
in;
U+02208
incare;
U+02105
infin;
U+0221E
infintie;
U+029DD
inodot;
U+00131
Int;
U+0222C
int;
U+0222B
intcal;
U+022BA
integers;
U+02124
Integral;
U+0222B
intercal;
U+022BA
Intersection;
U+022C2
intlarhk;
U+02A17
intprod;
U+02A3C
InvisibleComma;
U+02063
InvisibleTimes;
U+02062
IOcy;
U+00401
iocy;
U+00451
Iogon;
U+0012E
iogon;
U+0012F
Iopf;
U+1D540
iopf;
U+1D55A
Iota;
U+00399
iota;
U+003B9
iprod;
U+02A3C
iquest;
U+000BF
iquest
U+000BF
Iscr;
U+02110
iscr;
U+1D4BE
isin;
U+02208
isindot;
U+022F5
isinE;
U+022F9
isins;
U+022F4
isinsv;
U+022F3
isinv;
U+02208
it;
U+02062
Itilde;
U+00128
itilde;
U+00129
Iukcy;
U+00406
iukcy;
U+00456
Iuml;
U+000CF
Iuml
U+000CF
iuml;
U+000EF
iuml
U+000EF
Jcirc;
U+00134
jcirc;
U+00135
Jcy;
U+00419
jcy;
U+00439
Jfr;
U+1D50D
jfr;
U+1D527
jmath;
U+00237
Jopf;
U+1D541
jopf;
U+1D55B
Jscr;
U+1D4A5
jscr;
U+1D4BF
Jsercy;
U+00408
jsercy;
U+00458
Jukcy;
U+00404
jukcy;
U+00454
Kappa;
U+0039A
kappa;
U+003BA
kappav;
U+003F0
Kcedil;
U+00136
kcedil;
U+00137
Kcy;
U+0041A
kcy;
U+0043A
Kfr;
U+1D50E
kfr;
U+1D528
kgreen;
U+00138
KHcy;
U+00425
khcy;
U+00445
KJcy;
U+0040C
kjcy;
U+0045C
Kopf;
U+1D542
kopf;
U+1D55C
Kscr;
U+1D4A6
kscr;
U+1D4C0
lAarr;
U+021DA
Lacute;
U+00139
lacute;
U+0013A
laemptyv;
U+029B4
lagran;
U+02112
Lambda;
U+0039B
lambda;
U+003BB
Lang;
U+027EA
lang;
U+027E8
langd;
U+02991
langle;
U+027E8
lap;
U+02A85
Laplacetrf;
U+02112
laquo;
U+000AB
laquo
U+000AB
Larr;
U+0219E
lArr;
U+021D0
larr;
U+02190
larrb;
U+021E4
larrbfs;
U+0291F
larrfs;
U+0291D
larrhk;
U+021A9
larrlp;
U+021AB
larrpl;
U+02939
larrsim;
U+02973
larrtl;
U+021A2
lat;
U+02AAB
lAtail;
U+0291B
latail;
U+02919
late;
U+02AAD
lates;
U+02AAD U+0FE00
⪭︀
lBarr;
U+0290E
lbarr;
U+0290C
lbbrk;
U+02772
lbrace;
U+0007B
lbrack;
U+0005B
lbrke;
U+0298B
lbrksld;
U+0298F
lbrkslu;
U+0298D
Lcaron;
U+0013D
lcaron;
U+0013E
Lcedil;
U+0013B
lcedil;
U+0013C
lceil;
U+02308
lcub;
U+0007B
Lcy;
U+0041B
lcy;
U+0043B
ldca;
U+02936
ldquo;
U+0201C
ldquor;
U+0201E
ldrdhar;
U+02967
ldrushar;
U+0294B
ldsh;
U+021B2
lE;
U+02266
le;
U+02264
LeftAngleBracket;
U+027E8
LeftArrow;
U+02190
Leftarrow;
U+021D0
leftarrow;
U+02190
LeftArrowBar;
U+021E4
LeftArrowRightArrow;
U+021C6
leftarrowtail;
U+021A2
LeftCeiling;
U+02308
LeftDoubleBracket;
U+027E6
LeftDownTeeVector;
U+02961
LeftDownVector;
U+021C3
LeftDownVectorBar;
U+02959
LeftFloor;
U+0230A
leftharpoondown;
U+021BD
leftharpoonup;
U+021BC
leftleftarrows;
U+021C7
LeftRightArrow;
U+02194
Leftrightarrow;
U+021D4
leftrightarrow;
U+02194
leftrightarrows;
U+021C6
leftrightharpoons;
U+021CB
leftrightsquigarrow;
U+021AD
LeftRightVector;
U+0294E
LeftTee;
U+022A3
LeftTeeArrow;
U+021A4
LeftTeeVector;
U+0295A
leftthreetimes;
U+022CB
LeftTriangle;
U+022B2
LeftTriangleBar;
U+029CF
LeftTriangleEqual;
U+022B4
LeftUpDownVector;
U+02951
LeftUpTeeVector;
U+02960
LeftUpVector;
U+021BF
LeftUpVectorBar;
U+02958
LeftVector;
U+021BC
LeftVectorBar;
U+02952
lEg;
U+02A8B
leg;
U+022DA
leq;
U+02264
leqq;
U+02266
leqslant;
U+02A7D
les;
U+02A7D
lescc;
U+02AA8
lesdot;
U+02A7F
lesdoto;
U+02A81
lesdotor;
U+02A83
lesg;
U+022DA U+0FE00
⋚︀
lesges;
U+02A93
lessapprox;
U+02A85
lessdot;
U+022D6
lesseqgtr;
U+022DA
lesseqqgtr;
U+02A8B
LessEqualGreater;
U+022DA
LessFullEqual;
U+02266
LessGreater;
U+02276
lessgtr;
U+02276
LessLess;
U+02AA1
lesssim;
U+02272
LessSlantEqual;
U+02A7D
LessTilde;
U+02272
lfisht;
U+0297C
lfloor;
U+0230A
Lfr;
U+1D50F
lfr;
U+1D529
lg;
U+02276
lgE;
U+02A91
lHar;
U+02962
lhard;
U+021BD
lharu;
U+021BC
lharul;
U+0296A
lhblk;
U+02584
LJcy;
U+00409
ljcy;
U+00459
Ll;
U+022D8
ll;
U+0226A
llarr;
U+021C7
llcorner;
U+0231E
Lleftarrow;
U+021DA
llhard;
U+0296B
lltri;
U+025FA
Lmidot;
U+0013F
lmidot;
U+00140
lmoust;
U+023B0
lmoustache;
U+023B0
lnap;
U+02A89
lnapprox;
U+02A89
lnE;
U+02268
lne;
U+02A87
lneq;
U+02A87
lneqq;
U+02268
lnsim;
U+022E6
loang;
U+027EC
loarr;
U+021FD
lobrk;
U+027E6
LongLeftArrow;
U+027F5
Longleftarrow;
U+027F8
longleftarrow;
U+027F5
LongLeftRightArrow;
U+027F7
Longleftrightarrow;
U+027FA
longleftrightarrow;
U+027F7
longmapsto;
U+027FC
LongRightArrow;
U+027F6
Longrightarrow;
U+027F9
longrightarrow;
U+027F6
looparrowleft;
U+021AB
looparrowright;
U+021AC
lopar;
U+02985
Lopf;
U+1D543
lopf;
U+1D55D
loplus;
U+02A2D
lotimes;
U+02A34
lowast;
U+02217
lowbar;
U+0005F
LowerLeftArrow;
U+02199
LowerRightArrow;
U+02198
loz;
U+025CA
lozenge;
U+025CA
lozf;
U+029EB
lpar;
U+00028
lparlt;
U+02993
lrarr;
U+021C6
lrcorner;
U+0231F
lrhar;
U+021CB
lrhard;
U+0296D
lrm;
U+0200E
lrtri;
U+022BF
lsaquo;
U+02039
Lscr;
U+02112
lscr;
U+1D4C1
Lsh;
U+021B0
lsh;
U+021B0
lsim;
U+02272
lsime;
U+02A8D
lsimg;
U+02A8F
lsqb;
U+0005B
lsquo;
U+02018
lsquor;
U+0201A
Lstrok;
U+00141
lstrok;
U+00142
LT;
U+0003C
LT
U+0003C
Lt;
U+0226A
lt;
U+0003C
lt
U+0003C
ltcc;
U+02AA6
ltcir;
U+02A79
ltdot;
U+022D6
lthree;
U+022CB
ltimes;
U+022C9
ltlarr;
U+02976
ltquest;
U+02A7B
ltri;
U+025C3
ltrie;
U+022B4
ltrif;
U+025C2
ltrPar;
U+02996
lurdshar;
U+0294A
luruhar;
U+02966
lvertneqq;
U+02268 U+0FE00
≨︀
lvnE;
U+02268 U+0FE00
≨︀
macr;
U+000AF
macr
U+000AF
male;
U+02642
malt;
U+02720
maltese;
U+02720
Map;
U+02905
map;
U+021A6
mapsto;
U+021A6
mapstodown;
U+021A7
mapstoleft;
U+021A4
mapstoup;
U+021A5
marker;
U+025AE
mcomma;
U+02A29
Mcy;
U+0041C
mcy;
U+0043C
mdash;
U+02014
mDDot;
U+0223A
measuredangle;
U+02221
MediumSpace;
U+0205F
Mellintrf;
U+02133
Mfr;
U+1D510
mfr;
U+1D52A
mho;
U+02127
micro;
U+000B5
micro
U+000B5
mid;
U+02223
midast;
U+0002A
midcir;
U+02AF0
middot;
U+000B7
middot
U+000B7
minus;
U+02212
minusb;
U+0229F
minusd;
U+02238
minusdu;
U+02A2A
MinusPlus;
U+02213
mlcp;
U+02ADB
mldr;
U+02026
mnplus;
U+02213
models;
U+022A7
Mopf;
U+1D544
mopf;
U+1D55E
mp;
U+02213
Mscr;
U+02133
mscr;
U+1D4C2
mstpos;
U+0223E
Mu;
U+0039C
mu;
U+003BC
multimap;
U+022B8
mumap;
U+022B8
nabla;
U+02207
Nacute;
U+00143
nacute;
U+00144
nang;
U+02220 U+020D2
∠⃒
nap;
U+02249
napE;
U+02A70 U+00338
⩰̸
napid;
U+0224B U+00338
≋̸
napos;
U+00149
napprox;
U+02249
natur;
U+0266E
natural;
U+0266E
naturals;
U+02115
nbsp;
U+000A0
nbsp
U+000A0
nbump;
U+0224E U+00338
≎̸
nbumpe;
U+0224F U+00338
≏̸
ncap;
U+02A43
Ncaron;
U+00147
ncaron;
U+00148
Ncedil;
U+00145
ncedil;
U+00146
ncong;
U+02247
ncongdot;
U+02A6D U+00338
⩭̸
ncup;
U+02A42
Ncy;
U+0041D
ncy;
U+0043D
ndash;
U+02013
ne;
U+02260
nearhk;
U+02924
neArr;
U+021D7
nearr;
U+02197
nearrow;
U+02197
nedot;
U+02250 U+00338
≐̸
NegativeMediumSpace;
U+0200B
NegativeThickSpace;
U+0200B
NegativeThinSpace;
U+0200B
NegativeVeryThinSpace;
U+0200B
nequiv;
U+02262
nesear;
U+02928
nesim;
U+02242 U+00338
≂̸
NestedGreaterGreater;
U+0226B
NestedLessLess;
U+0226A
NewLine;
U+0000A
nexist;
U+02204
nexists;
U+02204
Nfr;
U+1D511
nfr;
U+1D52B
ngE;
U+02267 U+00338
≧̸
nge;
U+02271
ngeq;
U+02271
ngeqq;
U+02267 U+00338
≧̸
ngeqslant;
U+02A7E U+00338
⩾̸
nges;
U+02A7E U+00338
⩾̸
nGg;
U+022D9 U+00338
⋙̸
ngsim;
U+02275
nGt;
U+0226B U+020D2
≫⃒
ngt;
U+0226F
ngtr;
U+0226F
nGtv;
U+0226B U+00338
≫̸
nhArr;
U+021CE
nharr;
U+021AE
nhpar;
U+02AF2
ni;
U+0220B
nis;
U+022FC
nisd;
U+022FA
niv;
U+0220B
NJcy;
U+0040A
njcy;
U+0045A
nlArr;
U+021CD
nlarr;
U+0219A
nldr;
U+02025
nlE;
U+02266 U+00338
≦̸
nle;
U+02270
nLeftarrow;
U+021CD
nleftarrow;
U+0219A
nLeftrightarrow;
U+021CE
nleftrightarrow;
U+021AE
nleq;
U+02270
nleqq;
U+02266 U+00338
≦̸
nleqslant;
U+02A7D U+00338
⩽̸
nles;
U+02A7D U+00338
⩽̸
nless;
U+0226E
nLl;
U+022D8 U+00338
⋘̸
nlsim;
U+02274
nLt;
U+0226A U+020D2
≪⃒
nlt;
U+0226E
nltri;
U+022EA
nltrie;
U+022EC
nLtv;
U+0226A U+00338
≪̸
nmid;
U+02224
NoBreak;
U+02060
NonBreakingSpace;
U+000A0
Nopf;
U+02115
nopf;
U+1D55F
Not;
U+02AEC
not;
U+000AC
not
U+000AC
NotCongruent;
U+02262
NotCupCap;
U+0226D
NotDoubleVerticalBar;
U+02226
NotElement;
U+02209
NotEqual;
U+02260
NotEqualTilde;
U+02242 U+00338
≂̸
NotExists;
U+02204
NotGreater;
U+0226F
NotGreaterEqual;
U+02271
NotGreaterFullEqual;
U+02267 U+00338
≧̸
NotGreaterGreater;
U+0226B U+00338
≫̸
NotGreaterLess;
U+02279
NotGreaterSlantEqual;
U+02A7E U+00338
⩾̸
NotGreaterTilde;
U+02275
NotHumpDownHump;
U+0224E U+00338
≎̸
NotHumpEqual;
U+0224F U+00338
≏̸
notin;
U+02209
notindot;
U+022F5 U+00338
⋵̸
notinE;
U+022F9 U+00338
⋹̸
notinva;
U+02209
notinvb;
U+022F7
notinvc;
U+022F6
NotLeftTriangle;
U+022EA
NotLeftTriangleBar;
U+029CF U+00338
⧏̸
NotLeftTriangleEqual;
U+022EC
NotLess;
U+0226E
NotLessEqual;
U+02270
NotLessGreater;
U+02278
NotLessLess;
U+0226A U+00338
≪̸
NotLessSlantEqual;
U+02A7D U+00338
⩽̸
NotLessTilde;
U+02274
NotNestedGreaterGreater;
U+02AA2 U+00338
⪢̸
NotNestedLessLess;
U+02AA1 U+00338
⪡̸
notni;
U+0220C
notniva;
U+0220C
notnivb;
U+022FE
notnivc;
U+022FD
NotPrecedes;
U+02280
NotPrecedesEqual;
U+02AAF U+00338
⪯̸
NotPrecedesSlantEqual;
U+022E0
NotReverseElement;
U+0220C
NotRightTriangle;
U+022EB
NotRightTriangleBar;
U+029D0 U+00338
⧐̸
NotRightTriangleEqual;
U+022ED
NotSquareSubset;
U+0228F U+00338
⊏̸
NotSquareSubsetEqual;
U+022E2
NotSquareSuperset;
U+02290 U+00338
⊐̸
NotSquareSupersetEqual;
U+022E3
NotSubset;
U+02282 U+020D2
⊂⃒
NotSubsetEqual;
U+02288
NotSucceeds;
U+02281
NotSucceedsEqual;
U+02AB0 U+00338
⪰̸
NotSucceedsSlantEqual;
U+022E1
NotSucceedsTilde;
U+0227F U+00338
≿̸
NotSuperset;
U+02283 U+020D2
⊃⃒
NotSupersetEqual;
U+02289
NotTilde;
U+02241
NotTildeEqual;
U+02244
NotTildeFullEqual;
U+02247
NotTildeTilde;
U+02249
NotVerticalBar;
U+02224
npar;
U+02226
nparallel;
U+02226
nparsl;
U+02AFD U+020E5
⫽⃥
npart;
U+02202 U+00338
∂̸
npolint;
U+02A14
npr;
U+02280
nprcue;
U+022E0
npre;
U+02AAF U+00338
⪯̸
nprec;
U+02280
npreceq;
U+02AAF U+00338
⪯̸
nrArr;
U+021CF
nrarr;
U+0219B
nrarrc;
U+02933 U+00338
⤳̸
nrarrw;
U+0219D U+00338
↝̸
nRightarrow;
U+021CF
nrightarrow;
U+0219B
nrtri;
U+022EB
nrtrie;
U+022ED
nsc;
U+02281
nsccue;
U+022E1
nsce;
U+02AB0 U+00338
⪰̸
Nscr;
U+1D4A9
nscr;
U+1D4C3
nshortmid;
U+02224
nshortparallel;
U+02226
nsim;
U+02241
nsime;
U+02244
nsimeq;
U+02244
nsmid;
U+02224
nspar;
U+02226
nsqsube;
U+022E2
nsqsupe;
U+022E3
nsub;
U+02284
nsubE;
U+02AC5 U+00338
⫅̸
nsube;
U+02288
nsubset;
U+02282 U+020D2
⊂⃒
nsubseteq;
U+02288
nsubseteqq;
U+02AC5 U+00338
⫅̸
nsucc;
U+02281
nsucceq;
U+02AB0 U+00338
⪰̸
nsup;
U+02285
nsupE;
U+02AC6 U+00338
⫆̸
nsupe;
U+02289
nsupset;
U+02283 U+020D2
⊃⃒
nsupseteq;
U+02289
nsupseteqq;
U+02AC6 U+00338
⫆̸
ntgl;
U+02279
Ntilde;
U+000D1
Ntilde
U+000D1
ntilde;
U+000F1
ntilde
U+000F1
ntlg;
U+02278
ntriangleleft;
U+022EA
ntrianglelefteq;
U+022EC
ntriangleright;
U+022EB
ntrianglerighteq;
U+022ED
Nu;
U+0039D
nu;
U+003BD
num;
U+00023
numero;
U+02116
numsp;
U+02007
nvap;
U+0224D U+020D2
≍⃒
nVDash;
U+022AF
nVdash;
U+022AE
nvDash;
U+022AD
nvdash;
U+022AC
nvge;
U+02265 U+020D2
≥⃒
nvgt;
U+0003E U+020D2
>⃒
nvHarr;
U+02904
nvinfin;
U+029DE
nvlArr;
U+02902
nvle;
U+02264 U+020D2
≤⃒
nvlt;
U+0003C U+020D2
<⃒
nvltrie;
U+022B4 U+020D2
⊴⃒
nvrArr;
U+02903
nvrtrie;
U+022B5 U+020D2
⊵⃒
nvsim;
U+0223C U+020D2
∼⃒
nwarhk;
U+02923
nwArr;
U+021D6
nwarr;
U+02196
nwarrow;
U+02196
nwnear;
U+02927
Oacute;
U+000D3
Oacute
U+000D3
oacute;
U+000F3
oacute
U+000F3
oast;
U+0229B
ocir;
U+0229A
Ocirc;
U+000D4
Ocirc
U+000D4
ocirc;
U+000F4
ocirc
U+000F4
Ocy;
U+0041E
ocy;
U+0043E
odash;
U+0229D
Odblac;
U+00150
odblac;
U+00151
odiv;
U+02A38
odot;
U+02299
odsold;
U+029BC
OElig;
U+00152
oelig;
U+00153
ofcir;
U+029BF
Ofr;
U+1D512
ofr;
U+1D52C
ogon;
U+002DB
Ograve;
U+000D2
Ograve
U+000D2
ograve;
U+000F2
ograve
U+000F2
ogt;
U+029C1
ohbar;
U+029B5
ohm;
U+003A9
oint;
U+0222E
olarr;
U+021BA
olcir;
U+029BE
olcross;
U+029BB
oline;
U+0203E
olt;
U+029C0
Omacr;
U+0014C
omacr;
U+0014D
Omega;
U+003A9
omega;
U+003C9
Omicron;
U+0039F
omicron;
U+003BF
omid;
U+029B6
ominus;
U+02296
Oopf;
U+1D546
oopf;
U+1D560
opar;
U+029B7
OpenCurlyDoubleQuote;
U+0201C
OpenCurlyQuote;
U+02018
operp;
U+029B9
oplus;
U+02295
Or;
U+02A54
or;
U+02228
orarr;
U+021BB
ord;
U+02A5D
order;
U+02134
orderof;
U+02134
ordf;
U+000AA
ordf
U+000AA
ordm;
U+000BA
ordm
U+000BA
origof;
U+022B6
oror;
U+02A56
orslope;
U+02A57
orv;
U+02A5B
oS;
U+024C8
Oscr;
U+1D4AA
oscr;
U+02134
Oslash;
U+000D8
Oslash
U+000D8
oslash;
U+000F8
oslash
U+000F8
osol;
U+02298
Otilde;
U+000D5
Otilde
U+000D5
otilde;
U+000F5
otilde
U+000F5
Otimes;
U+02A37
otimes;
U+02297
otimesas;
U+02A36
Ouml;
U+000D6
Ouml
U+000D6
ouml;
U+000F6
ouml
U+000F6
ovbar;
U+0233D
OverBar;
U+0203E
OverBrace;
U+023DE
OverBracket;
U+023B4
OverParenthesis;
U+023DC
par;
U+02225
para;
U+000B6
para
U+000B6
parallel;
U+02225
parsim;
U+02AF3
parsl;
U+02AFD
part;
U+02202
PartialD;
U+02202
Pcy;
U+0041F
pcy;
U+0043F
percnt;
U+00025
period;
U+0002E
permil;
U+02030
perp;
U+022A5
pertenk;
U+02031
Pfr;
U+1D513
pfr;
U+1D52D
Phi;
U+003A6
phi;
U+003C6
phiv;
U+003D5
phmmat;
U+02133
phone;
U+0260E
Pi;
U+003A0
pi;
U+003C0
pitchfork;
U+022D4
piv;
U+003D6
planck;
U+0210F
planckh;
U+0210E
plankv;
U+0210F
plus;
U+0002B
plusacir;
U+02A23
plusb;
U+0229E
pluscir;
U+02A22
plusdo;
U+02214
plusdu;
U+02A25
pluse;
U+02A72
PlusMinus;
U+000B1
plusmn;
U+000B1
plusmn
U+000B1
plussim;
U+02A26
plustwo;
U+02A27
pm;
U+000B1
Poincareplane;
U+0210C
pointint;
U+02A15
Popf;
U+02119
popf;
U+1D561
pound;
U+000A3
pound
U+000A3
Pr;
U+02ABB
pr;
U+0227A
prap;
U+02AB7
prcue;
U+0227C
prE;
U+02AB3
pre;
U+02AAF
prec;
U+0227A
precapprox;
U+02AB7
preccurlyeq;
U+0227C
Precedes;
U+0227A
PrecedesEqual;
U+02AAF
PrecedesSlantEqual;
U+0227C
PrecedesTilde;
U+0227E
preceq;
U+02AAF
precnapprox;
U+02AB9
precneqq;
U+02AB5
precnsim;
U+022E8
precsim;
U+0227E
Prime;
U+02033
prime;
U+02032
primes;
U+02119
prnap;
U+02AB9
prnE;
U+02AB5
prnsim;
U+022E8
prod;
U+0220F
Product;
U+0220F
profalar;
U+0232E
profline;
U+02312
profsurf;
U+02313
prop;
U+0221D
Proportion;
U+02237
Proportional;
U+0221D
propto;
U+0221D
prsim;
U+0227E
prurel;
U+022B0
Pscr;
U+1D4AB
pscr;
U+1D4C5
Psi;
U+003A8
psi;
U+003C8
puncsp;
U+02008
Qfr;
U+1D514
qfr;
U+1D52E
qint;
U+02A0C
Qopf;
U+0211A
qopf;
U+1D562
qprime;
U+02057
Qscr;
U+1D4AC
qscr;
U+1D4C6
quaternions;
U+0210D
quatint;
U+02A16
quest;
U+0003F
questeq;
U+0225F
QUOT;
U+00022
QUOT
U+00022
quot;
U+00022
quot
U+00022
rAarr;
U+021DB
race;
U+0223D U+00331
∽̱
Racute;
U+00154
racute;
U+00155
radic;
U+0221A
raemptyv;
U+029B3
Rang;
U+027EB
rang;
U+027E9
rangd;
U+02992
range;
U+029A5
rangle;
U+027E9
raquo;
U+000BB
raquo
U+000BB
Rarr;
U+021A0
rArr;
U+021D2
rarr;
U+02192
rarrap;
U+02975
rarrb;
U+021E5
rarrbfs;
U+02920
rarrc;
U+02933
rarrfs;
U+0291E
rarrhk;
U+021AA
rarrlp;
U+021AC
rarrpl;
U+02945
rarrsim;
U+02974
Rarrtl;
U+02916
rarrtl;
U+021A3
rarrw;
U+0219D
rAtail;
U+0291C
ratail;
U+0291A
ratio;
U+02236
rationals;
U+0211A
RBarr;
U+02910
rBarr;
U+0290F
rbarr;
U+0290D
rbbrk;
U+02773
rbrace;
U+0007D
rbrack;
U+0005D
rbrke;
U+0298C
rbrksld;
U+0298E
rbrkslu;
U+02990
Rcaron;
U+00158
rcaron;
U+00159
Rcedil;
U+00156
rcedil;
U+00157
rceil;
U+02309
rcub;
U+0007D
Rcy;
U+00420
rcy;
U+00440
rdca;
U+02937
rdldhar;
U+02969
rdquo;
U+0201D
rdquor;
U+0201D
rdsh;
U+021B3
Re;
U+0211C
real;
U+0211C
realine;
U+0211B
realpart;
U+0211C
reals;
U+0211D
rect;
U+025AD
REG;
U+000AE
REG
U+000AE
reg;
U+000AE
reg
U+000AE
ReverseElement;
U+0220B
ReverseEquilibrium;
U+021CB
ReverseUpEquilibrium;
U+0296F
rfisht;
U+0297D
rfloor;
U+0230B
Rfr;
U+0211C
rfr;
U+1D52F
rHar;
U+02964
rhard;
U+021C1
rharu;
U+021C0
rharul;
U+0296C
Rho;
U+003A1
rho;
U+003C1
rhov;
U+003F1
RightAngleBracket;
U+027E9
RightArrow;
U+02192
Rightarrow;
U+021D2
rightarrow;
U+02192
RightArrowBar;
U+021E5
RightArrowLeftArrow;
U+021C4
rightarrowtail;
U+021A3
RightCeiling;
U+02309
RightDoubleBracket;
U+027E7
RightDownTeeVector;
U+0295D
RightDownVector;
U+021C2
RightDownVectorBar;
U+02955
RightFloor;
U+0230B
rightharpoondown;
U+021C1
rightharpoonup;
U+021C0
rightleftarrows;
U+021C4
rightleftharpoons;
U+021CC
rightrightarrows;
U+021C9
rightsquigarrow;
U+0219D
RightTee;
U+022A2
RightTeeArrow;
U+021A6
RightTeeVector;
U+0295B
rightthreetimes;
U+022CC
RightTriangle;
U+022B3
RightTriangleBar;
U+029D0
RightTriangleEqual;
U+022B5
RightUpDownVector;
U+0294F
RightUpTeeVector;
U+0295C
RightUpVector;
U+021BE
RightUpVectorBar;
U+02954
RightVector;
U+021C0
RightVectorBar;
U+02953
ring;
U+002DA
risingdotseq;
U+02253
rlarr;
U+021C4
rlhar;
U+021CC
rlm;
U+0200F
rmoust;
U+023B1
rmoustache;
U+023B1
rnmid;
U+02AEE
roang;
U+027ED
roarr;
U+021FE
robrk;
U+027E7
ropar;
U+02986
Ropf;
U+0211D
ropf;
U+1D563
roplus;
U+02A2E
rotimes;
U+02A35
RoundImplies;
U+02970
rpar;
U+00029
rpargt;
U+02994
rppolint;
U+02A12
rrarr;
U+021C9
Rrightarrow;
U+021DB
rsaquo;
U+0203A
Rscr;
U+0211B
rscr;
U+1D4C7
Rsh;
U+021B1
rsh;
U+021B1
rsqb;
U+0005D
rsquo;
U+02019
rsquor;
U+02019
rthree;
U+022CC
rtimes;
U+022CA
rtri;
U+025B9
rtrie;
U+022B5
rtrif;
U+025B8
rtriltri;
U+029CE
RuleDelayed;
U+029F4
ruluhar;
U+02968
rx;
U+0211E
Sacute;
U+0015A
sacute;
U+0015B
sbquo;
U+0201A
Sc;
U+02ABC
sc;
U+0227B
scap;
U+02AB8
Scaron;
U+00160
scaron;
U+00161
sccue;
U+0227D
scE;
U+02AB4
sce;
U+02AB0
Scedil;
U+0015E
scedil;
U+0015F
Scirc;
U+0015C
scirc;
U+0015D
scnap;
U+02ABA
scnE;
U+02AB6
scnsim;
U+022E9
scpolint;
U+02A13
scsim;
U+0227F
Scy;
U+00421
scy;
U+00441
sdot;
U+022C5
sdotb;
U+022A1
sdote;
U+02A66
searhk;
U+02925
seArr;
U+021D8
searr;
U+02198
searrow;
U+02198
sect;
U+000A7
sect
U+000A7
semi;
U+0003B
seswar;
U+02929
setminus;
U+02216
setmn;
U+02216
sext;
U+02736
Sfr;
U+1D516
sfr;
U+1D530
sfrown;
U+02322
sharp;
U+0266F
SHCHcy;
U+00429
shchcy;
U+00449
SHcy;
U+00428
shcy;
U+00448
ShortDownArrow;
U+02193
ShortLeftArrow;
U+02190
shortmid;
U+02223
shortparallel;
U+02225
ShortRightArrow;
U+02192
ShortUpArrow;
U+02191
shy;
U+000AD
shy
U+000AD
Sigma;
U+003A3
sigma;
U+003C3
sigmaf;
U+003C2
sigmav;
U+003C2
sim;
U+0223C
simdot;
U+02A6A
sime;
U+02243
simeq;
U+02243
simg;
U+02A9E
simgE;
U+02AA0
siml;
U+02A9D
simlE;
U+02A9F
simne;
U+02246
simplus;
U+02A24
simrarr;
U+02972
slarr;
U+02190
SmallCircle;
U+02218
smallsetminus;
U+02216
smashp;
U+02A33
smeparsl;
U+029E4
smid;
U+02223
smile;
U+02323
smt;
U+02AAA
smte;
U+02AAC
smtes;
U+02AAC U+0FE00
⪬︀
SOFTcy;
U+0042C
softcy;
U+0044C
sol;
U+0002F
solb;
U+029C4
solbar;
U+0233F
Sopf;
U+1D54A
sopf;
U+1D564
spades;
U+02660
spadesuit;
U+02660
spar;
U+02225
sqcap;
U+02293
sqcaps;
U+02293 U+0FE00
⊓︀
sqcup;
U+02294
sqcups;
U+02294 U+0FE00
⊔︀
Sqrt;
U+0221A
sqsub;
U+0228F
sqsube;
U+02291
sqsubset;
U+0228F
sqsubseteq;
U+02291
sqsup;
U+02290
sqsupe;
U+02292
sqsupset;
U+02290
sqsupseteq;
U+02292
squ;
U+025A1
Square;
U+025A1
square;
U+025A1
SquareIntersection;
U+02293
SquareSubset;
U+0228F
SquareSubsetEqual;
U+02291
SquareSuperset;
U+02290
SquareSupersetEqual;
U+02292
SquareUnion;
U+02294
squarf;
U+025AA
squf;
U+025AA
srarr;
U+02192
Sscr;
U+1D4AE
sscr;
U+1D4C8
ssetmn;
U+02216
ssmile;
U+02323
sstarf;
U+022C6
Star;
U+022C6
star;
U+02606
starf;
U+02605
straightepsilon;
U+003F5
straightphi;
U+003D5
strns;
U+000AF
Sub;
U+022D0
sub;
U+02282
subdot;
U+02ABD
subE;
U+02AC5
sube;
U+02286
subedot;
U+02AC3
submult;
U+02AC1
subnE;
U+02ACB
subne;
U+0228A
subplus;
U+02ABF
subrarr;
U+02979
Subset;
U+022D0
subset;
U+02282
subseteq;
U+02286
subseteqq;
U+02AC5
SubsetEqual;
U+02286
subsetneq;
U+0228A
subsetneqq;
U+02ACB
subsim;
U+02AC7
subsub;
U+02AD5
subsup;
U+02AD3
succ;
U+0227B
succapprox;
U+02AB8
succcurlyeq;
U+0227D
Succeeds;
U+0227B
SucceedsEqual;
U+02AB0
SucceedsSlantEqual;
U+0227D
SucceedsTilde;
U+0227F
succeq;
U+02AB0
succnapprox;
U+02ABA
succneqq;
U+02AB6
succnsim;
U+022E9
succsim;
U+0227F
SuchThat;
U+0220B
Sum;
U+02211
sum;
U+02211
sung;
U+0266A
Sup;
U+022D1
sup;
U+02283
sup1;
U+000B9
sup1
U+000B9
sup2;
U+000B2
sup2
U+000B2
sup3;
U+000B3
sup3
U+000B3
supdot;
U+02ABE
supdsub;
U+02AD8
supE;
U+02AC6
supe;
U+02287
supedot;
U+02AC4
Superset;
U+02283
SupersetEqual;
U+02287
suphsol;
U+027C9
suphsub;
U+02AD7
suplarr;
U+0297B
supmult;
U+02AC2
supnE;
U+02ACC
supne;
U+0228B
supplus;
U+02AC0
Supset;
U+022D1
supset;
U+02283
supseteq;
U+02287
supseteqq;
U+02AC6
supsetneq;
U+0228B
supsetneqq;
U+02ACC
supsim;
U+02AC8
supsub;
U+02AD4
supsup;
U+02AD6
swarhk;
U+02926
swArr;
U+021D9
swarr;
U+02199
swarrow;
U+02199
swnwar;
U+0292A
szlig;
U+000DF
szlig
U+000DF
Tab;
U+00009
target;
U+02316
Tau;
U+003A4
tau;
U+003C4
tbrk;
U+023B4
Tcaron;
U+00164
tcaron;
U+00165
Tcedil;
U+00162
tcedil;
U+00163
Tcy;
U+00422
tcy;
U+00442
tdot;
U+020DB
◌⃛
telrec;
U+02315
Tfr;
U+1D517
tfr;
U+1D531
there4;
U+02234
Therefore;
U+02234
therefore;
U+02234
Theta;
U+00398
theta;
U+003B8
thetasym;
U+003D1
thetav;
U+003D1
thickapprox;
U+02248
thicksim;
U+0223C
ThickSpace;
U+0205F U+0200A
thinsp;
U+02009
ThinSpace;
U+02009
thkap;
U+02248
thksim;
U+0223C
THORN;
U+000DE
THORN
U+000DE
thorn;
U+000FE
thorn
U+000FE
Tilde;
U+0223C
tilde;
U+002DC
TildeEqual;
U+02243
TildeFullEqual;
U+02245
TildeTilde;
U+02248
times;
U+000D7
times
U+000D7
timesb;
U+022A0
timesbar;
U+02A31
timesd;
U+02A30
tint;
U+0222D
toea;
U+02928
top;
U+022A4
topbot;
U+02336
topcir;
U+02AF1
Topf;
U+1D54B
topf;
U+1D565
topfork;
U+02ADA
tosa;
U+02929
tprime;
U+02034
TRADE;
U+02122
trade;
U+02122
triangle;
U+025B5
triangledown;
U+025BF
triangleleft;
U+025C3
trianglelefteq;
U+022B4
triangleq;
U+0225C
triangleright;
U+025B9
trianglerighteq;
U+022B5
tridot;
U+025EC
trie;
U+0225C
triminus;
U+02A3A
TripleDot;
U+020DB
◌⃛
triplus;
U+02A39
trisb;
U+029CD
tritime;
U+02A3B
trpezium;
U+023E2
Tscr;
U+1D4AF
tscr;
U+1D4C9
TScy;
U+00426
tscy;
U+00446
TSHcy;
U+0040B
tshcy;
U+0045B
Tstrok;
U+00166
tstrok;
U+00167
twixt;
U+0226C
twoheadleftarrow;
U+0219E
twoheadrightarrow;
U+021A0
Uacute;
U+000DA
Uacute
U+000DA
uacute;
U+000FA
uacute
U+000FA
Uarr;
U+0219F
uArr;
U+021D1
uarr;
U+02191
Uarrocir;
U+02949
Ubrcy;
U+0040E
ubrcy;
U+0045E
Ubreve;
U+0016C
ubreve;
U+0016D
Ucirc;
U+000DB
Ucirc
U+000DB
ucirc;
U+000FB
ucirc
U+000FB
Ucy;
U+00423
ucy;
U+00443
udarr;
U+021C5
Udblac;
U+00170
udblac;
U+00171
udhar;
U+0296E
ufisht;
U+0297E
Ufr;
U+1D518
ufr;
U+1D532
Ugrave;
U+000D9
Ugrave
U+000D9
ugrave;
U+000F9
ugrave
U+000F9
uHar;
U+02963
uharl;
U+021BF
uharr;
U+021BE
uhblk;
U+02580
ulcorn;
U+0231C
ulcorner;
U+0231C
ulcrop;
U+0230F
ultri;
U+025F8
Umacr;
U+0016A
umacr;
U+0016B
uml;
U+000A8
uml
U+000A8
UnderBar;
U+0005F
UnderBrace;
U+023DF
UnderBracket;
U+023B5
UnderParenthesis;
U+023DD
Union;
U+022C3
UnionPlus;
U+0228E
Uogon;
U+00172
uogon;
U+00173
Uopf;
U+1D54C
uopf;
U+1D566
UpArrow;
U+02191
Uparrow;
U+021D1
uparrow;
U+02191
UpArrowBar;
U+02912
UpArrowDownArrow;
U+021C5
UpDownArrow;
U+02195
Updownarrow;
U+021D5
updownarrow;
U+02195
UpEquilibrium;
U+0296E
upharpoonleft;
U+021BF
upharpoonright;
U+021BE
uplus;
U+0228E
UpperLeftArrow;
U+02196
UpperRightArrow;
U+02197
Upsi;
U+003D2
upsi;
U+003C5
upsih;
U+003D2
Upsilon;
U+003A5
upsilon;
U+003C5
UpTee;
U+022A5
UpTeeArrow;
U+021A5
upuparrows;
U+021C8
urcorn;
U+0231D
urcorner;
U+0231D
urcrop;
U+0230E
Uring;
U+0016E
uring;
U+0016F
urtri;
U+025F9
Uscr;
U+1D4B0
uscr;
U+1D4CA
utdot;
U+022F0
Utilde;
U+00168
utilde;
U+00169
utri;
U+025B5
utrif;
U+025B4
uuarr;
U+021C8
Uuml;
U+000DC
Uuml
U+000DC
uuml;
U+000FC
uuml
U+000FC
uwangle;
U+029A7
vangrt;
U+0299C
varepsilon;
U+003F5
varkappa;
U+003F0
varnothing;
U+02205
varphi;
U+003D5
varpi;
U+003D6
varpropto;
U+0221D
vArr;
U+021D5
varr;
U+02195
varrho;
U+003F1
varsigma;
U+003C2
varsubsetneq;
U+0228A U+0FE00
⊊︀
varsubsetneqq;
U+02ACB U+0FE00
⫋︀
varsupsetneq;
U+0228B U+0FE00
⊋︀
varsupsetneqq;
U+02ACC U+0FE00
⫌︀
vartheta;
U+003D1
vartriangleleft;
U+022B2
vartriangleright;
U+022B3
Vbar;
U+02AEB
vBar;
U+02AE8
vBarv;
U+02AE9
Vcy;
U+00412
vcy;
U+00432
VDash;
U+022AB
Vdash;
U+022A9
vDash;
U+022A8
vdash;
U+022A2
Vdashl;
U+02AE6
Vee;
U+022C1
vee;
U+02228
veebar;
U+022BB
veeeq;
U+0225A
vellip;
U+022EE
Verbar;
U+02016
verbar;
U+0007C
Vert;
U+02016
vert;
U+0007C
VerticalBar;
U+02223
VerticalLine;
U+0007C
VerticalSeparator;
U+02758
VerticalTilde;
U+02240
VeryThinSpace;
U+0200A
Vfr;
U+1D519
vfr;
U+1D533
vltri;
U+022B2
vnsub;
U+02282 U+020D2
⊂⃒
vnsup;
U+02283 U+020D2
⊃⃒
Vopf;
U+1D54D
vopf;
U+1D567
vprop;
U+0221D
vrtri;
U+022B3
Vscr;
U+1D4B1
vscr;
U+1D4CB
vsubnE;
U+02ACB U+0FE00
⫋︀
vsubne;
U+0228A U+0FE00
⊊︀
vsupnE;
U+02ACC U+0FE00
⫌︀
vsupne;
U+0228B U+0FE00
⊋︀
Vvdash;
U+022AA
vzigzag;
U+0299A
Wcirc;
U+00174
wcirc;
U+00175
wedbar;
U+02A5F
Wedge;
U+022C0
wedge;
U+02227
wedgeq;
U+02259
weierp;
U+02118
Wfr;
U+1D51A
wfr;
U+1D534
Wopf;
U+1D54E
wopf;
U+1D568
wp;
U+02118
wr;
U+02240
wreath;
U+02240
Wscr;
U+1D4B2
wscr;
U+1D4CC
xcap;
U+022C2
xcirc;
U+025EF
xcup;
U+022C3
xdtri;
U+025BD
Xfr;
U+1D51B
xfr;
U+1D535
xhArr;
U+027FA
xharr;
U+027F7
Xi;
U+0039E
xi;
U+003BE
xlArr;
U+027F8
xlarr;
U+027F5
xmap;
U+027FC
xnis;
U+022FB
xodot;
U+02A00
Xopf;
U+1D54F
xopf;
U+1D569
xoplus;
U+02A01
xotime;
U+02A02
xrArr;
U+027F9
xrarr;
U+027F6
Xscr;
U+1D4B3
xscr;
U+1D4CD
xsqcup;
U+02A06
xuplus;
U+02A04
xutri;
U+025B3
xvee;
U+022C1
xwedge;
U+022C0
Yacute;
U+000DD
Yacute
U+000DD
yacute;
U+000FD
yacute
U+000FD
YAcy;
U+0042F
yacy;
U+0044F
Ycirc;
U+00176
ycirc;
U+00177
Ycy;
U+0042B
ycy;
U+0044B
yen;
U+000A5
yen
U+000A5
Yfr;
U+1D51C
yfr;
U+1D536
YIcy;
U+00407
yicy;
U+00457
Yopf;
U+1D550
yopf;
U+1D56A
Yscr;
U+1D4B4
yscr;
U+1D4CE
YUcy;
U+0042E
yucy;
U+0044E
Yuml;
U+00178
yuml;
U+000FF
yuml
U+000FF
Zacute;
U+00179
zacute;
U+0017A
Zcaron;
U+0017D
zcaron;
U+0017E
Zcy;
U+00417
zcy;
U+00437
Zdot;
U+0017B
zdot;
U+0017C
zeetrf;
U+02128
ZeroWidthSpace;
U+0200B
Zeta;
U+00396
zeta;
U+003B6
Zfr;
U+02128
zfr;
U+1D537
ZHcy;
U+00416
zhcy;
U+00436
zigrarr;
U+021DD
Zopf;
U+02124
zopf;
U+1D56B
Zscr;
U+1D4B5
zscr;
U+1D4CF
zwj;
U+0200D
zwnj;
U+0200C
This data is also available
as a JSON file
The glyphs displayed above are non-normative. Refer to Unicode for formal definitions of the
characters listed above.
The character reference names originate from
XML Entity Definitions for
Characters
, though only the above is considered normative.
[XMLENTITY]
14
The XML syntax
HTML/XHTML
Support in all current engines.
Firefox
2+
Safari
3.1+
Chrome
4+
Opera
9+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
4+
Safari iOS
2+
Chrome Android
18+
WebView Android
2+
Samsung Internet
1.0+
Opera Android
10.1+
This section only describes the rules for XML resources. Rules for
text/html
resources are discussed in the section above entitled "
The HTML
syntax
".
14.1
Writing documents in the XML syntax
The XML syntax for HTML was formerly referred to as "XHTML", but this
specification does not use that term (among other reasons, because no such term is used for the
HTML syntaxes of MathML and SVG).
The syntax for XML is defined in
XML
and
Namespaces in XML
[XML]
[XMLNS]
This specification does not define any syntax-level requirements beyond those defined for XML
proper.
XML documents may contain a
DOCTYPE
if desired, but this is not required
to conform to this specification. This specification does not define a public or system
identifier, nor provide a formal DTD.
According to
XML
, XML processors are not guaranteed to process
the external DTD subset referenced in the DOCTYPE. This means, for example, that using
entity references
for characters in XML documents
is unsafe if they are defined in an external file (except for
<
>
&
"
and
'
).
14.2
Parsing XML documents
This section describes the relationship between XML and the DOM, with a particular emphasis on
how this interacts with HTML.
An
XML parser
, for the purposes of this specification, is a construct that
follows the rules given in
XML
to map a string of bytes or characters into a
Document
object.
At the time of writing, no such rules actually exist.
An
XML parser
is either associated with a
Document
object when it is
created, or creates one implicitly.
This
Document
must then be populated with DOM nodes that represent the tree
structure of the input passed to the parser, as defined by
XML
Namespaces
in XML
, and
DOM
. When creating DOM nodes representing elements,
the
create an element for a token
algorithm
or some equivalent that operates on appropriate XML data structures must be used, to ensure the
proper
element interfaces
are created and that
custom elements
are set up correctly.
DOM mutation events must not fire for the operations that the
XML parser
performs
on the
Document
's tree, but the user agent must act as if elements and attributes
were individually appended and set respectively so as to trigger rules in this specification
regarding what happens when an element is inserted into a document or has its attributes set, and
DOM
's requirements regarding
mutation observers
mean that
mutation observers
are
fired (unlike mutation events).
[XML]
[XMLNS]
[DOM]
[UIEVENTS]
Between the time an element's start tag is parsed and the time either the element's end tag is
parsed or the parser detects a well-formedness error, the user agent must act as if the element
was in a
stack of open elements
This is used, e.g. by the
object
element to avoid instantiating plugins
before the
param
element children have been parsed.
This specification provides the following additional information that user agents should use
when retrieving an external entity: the public identifiers given in the following list all
correspond to
the URL given by this link
. (This
URL is a DTD containing the
entity
declarations
for the names listed in the
named character references
section.)
[XML]
-//W3C//DTD XHTML 1.0 Transitional//EN
-//W3C//DTD XHTML 1.1//EN
-//W3C//DTD XHTML 1.0 Strict//EN
-//W3C//DTD XHTML 1.0 Frameset//EN
-//W3C//DTD XHTML Basic 1.0//EN
-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN
-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN
-//W3C//DTD MathML 2.0//EN
-//WAPFORUM//DTD XHTML Mobile 1.0//EN
Furthermore, user agents should attempt to retrieve the above external entity's content when
one of the above public identifiers is used, and should not attempt to retrieve any other external
entity's content.
This is not strictly a
violation
of
XML
, but it does contradict the spirit of
XML
's requirements. This is
motivated by a desire for user agents to all handle entities in an interoperable fashion without
requiring any network access for handling external subsets.
[XML]
XML parsers can be invoked with
XML scripting support enabled
or
XML scripting support disabled
. Except where otherwise specified, XML parsers are
invoked with
XML scripting support enabled
When an
XML parser
with
XML scripting support
enabled
creates a
script
element, it must have its
parser
document
set and its
"non-blocking"
flag must be unset. If the parser was
created as part of the
XML fragment parsing algorithm
, then the element must be
marked as
"already started"
also. When the element's end tag is subsequently parsed,
the user agent must
perform a microtask checkpoint
, and then
prepare
the
script
element. If this causes there to be a
pending
parsing-blocking script
, then the user agent must run the following steps:
Block this instance of the
XML parser
, such that the
event loop
will not run
tasks
that invoke it.
Spin the event loop
until the parser's
Document
has no
style sheet that is blocking scripts
and the
pending parsing-blocking
script
's
"ready to be parser-executed"
flag is set.
Unblock this instance of the
XML parser
, such that
tasks
that invoke it can again be run.
Execute
the
pending parsing-blocking
script
There is no longer a
pending parsing-blocking script
Since the
document.write()
API is not
available for
XML documents
, much of the complexity in the
HTML parser
is not needed in the
XML parser
When the
XML parser
has
XML scripting support disabled
none of this happens.
When an
XML parser
would append a node to a
template
element, it must instead append it to the
template
element's
template contents
(a
DocumentFragment
node).
This is a
willful violation
of
XML
; unfortunately,
XML is not formally extensible in the manner that is needed for
template
processing.
[XML]
When an
XML parser
creates a
Node
object, its
node document
must be set to the
node document
of
the node into which the newly created node is to be inserted.
Certain algorithms in this specification
spoon-feed the
parser
characters one string at a time. In such cases, the
XML parser
must act
as it would have if faced with a single string consisting of the concatenation of all those
characters.
When an
XML parser
reaches the end of its input, it must
stop
parsing
, following the same rules as the
HTML parser
. An
XML
parser
can also be
aborted
, which must again be done in
the same way as for an
HTML parser
For the purposes of conformance checkers, if a resource is determined to be in
the XML
syntax
, then it is an
XML document
14.3
Serializing XML fragments
The
XML fragment serialization
algorithm
for a
Document
or
Element
node either returns a fragment
of XML that represents that node or throws an exception.
For
Document
s, the algorithm must return a string in the form of a
document entity
, if none of the error cases
below apply.
For
Element
s, the algorithm must return a string in the form of an
internal general parsed entity
, if none of the
error cases below apply.
In both cases, the string returned must be XML namespace-well-formed and must be an isomorphic
serialization of all of that node's
relevant child nodes
, in
tree order
User agents may adjust prefixes and namespace declarations in the serialization (and indeed might
be forced to do so in some cases to obtain namespace-well-formed XML). User agents may use a
combination of regular text and character references to represent
Text
nodes in the
DOM.
A node's
relevant child nodes
are those that apply given the following rules:
For
template
elements
The
relevant child nodes
are the child nodes of the
template
element's
template contents
, if any.
For all other nodes
The
relevant child nodes
are the child nodes of node itself, if any.
For
Element
s, if any of the elements in the serialization are in no namespace, the
default namespace in scope for those elements must be explicitly declared as the empty string. (This doesn't apply in the
Document
case.)
[XML]
[XMLNS]
For the purposes of this section, an internal general parsed entity is considered XML
namespace-well-formed if a document consisting of an element with no namespace declarations whose
contents are the internal general parsed entity would itself be XML namespace-well-formed.
If any of the following error cases are found in the DOM subtree being serialized, then the
algorithm must throw an
InvalidStateError
DOMException
instead of returning a string:
Document
node with no child element nodes.
DocumentType
node that has an external subset public identifier that contains
characters that are not matched by the XML
PubidChar
production.
[XML]
DocumentType
node that has an external subset system identifier that contains
both a U+0022 QUOTATION MARK (") and a U+0027 APOSTROPHE (') or that contains characters that are
not matched by the XML
Char
production.
[XML]
A node with a local name containing a U+003A COLON (:).
A node with a local name that does not match the XML
Name
production.
[XML]
An
Attr
node with no namespace whose local name is the lowercase string "
xmlns
".
[XMLNS]
An
Element
node with two or more attributes with the same local name and
namespace.
An
Attr
node,
Text
node,
Comment
node, or
ProcessingInstruction
node whose data contains characters that are not matched by
the XML
Char
production.
[XML]
Comment
node whose data contains two adjacent U+002D HYPHEN-MINUS characters
(-) or ends with such a character.
ProcessingInstruction
node whose target name is an
ASCII
case-insensitive
match for the string "
xml
".
ProcessingInstruction
node whose target name contains a U+003A COLON (:).
ProcessingInstruction
node whose data contains the string "
?>
".
These are the only ways to make a DOM unserialisable. The DOM enforces all the
other XML constraints; for example, trying to append two elements to a
Document
node
will throw a
HierarchyRequestError
DOMException
14.4
Parsing XML fragments
The
XML fragment parsing algorithm
either returns a
Document
or throws
SyntaxError
DOMException
. Given a string
input
and a context element
context
, the
algorithm is as follows:
Create a new
XML parser
Feed the
parser
just created the string corresponding to the start tag of the
context
element, declaring
all the namespace prefixes that are in scope on that element in the DOM, as well as declaring
the default namespace (if any) that is in scope on that element in the DOM.
A namespace prefix is in scope if the DOM
lookupNamespaceURI()
method
on the element would return a non-null value for that prefix.
The default namespace is the namespace for which the DOM
isDefaultNamespace()
method on the element would return true.
No
DOCTYPE
is passed to the parser, and therefore no external subset is
referenced, and therefore no entities will be recognized.
Feed the parser
just created the string
input
Feed the parser
just created the string corresponding to the end tag of the
context
element.
If there is an XML well-formedness or XML namespace well-formedness error, then throw a
SyntaxError
DOMException
If the
document element
of the resulting
Document
has any sibling
nodes, then throw a
SyntaxError
DOMException
Return the child nodes of the
document element
of the resulting
Document
, in
tree order
15
Rendering
User agents are not required to present HTML documents in any particular way. However, this
section provides a set of suggestions for rendering HTML documents that, if followed, are likely
to lead to a user experience that closely resembles the experience intended by the documents'
authors. So as to avoid confusion regarding the normativity of this section, "must" has not been
used. Instead, the term "expected" is used to indicate behavior that will lead to this experience.
For the purposes of conformance for user agents designated as
supporting
the suggested default rendering
, the term "expected" in this section has the same conformance
implications as "must".
15.1
Introduction
In general, user agents are expected to support CSS, and many of the suggestions in this
section are expressed in CSS terms. User agents that use other presentation mechanisms can derive
their expected behavior by translating from the CSS rules given in this section.
In the absence of style-layer rules to the contrary (e.g. author style sheets), user agents are
expected to render an element so that it conveys to the user the meaning that the element
represents
, as described by this specification.
The suggestions in this section generally assume a visual output medium with a resolution of
96dpi or greater, but HTML is intended to apply to multiple media (it is a
media-independent
language). User agent implementers are encouraged to adapt the
suggestions in this section to their target media.
An element is
being rendered
if it has any associated CSS layout boxes, SVG layout
boxes, or some equivalent in other styling languages.
Just being off-screen does not mean the element is not
being
rendered
. The presence of the
hidden
attribute normally
means the element is not
being rendered
, though this might be overridden by the style
sheets.
An element is said to
intersect the viewport
when it is
being rendered
and its associated CSS layout box intersects the
viewport
This specification does not define the precise timing for when the intersection is
tested, but it is suggested that the timing match that of the Intersection Observer API.
[INTERSECTIONOBSERVER]
User agents that do not honor author-level CSS style sheets are nonetheless expected to act as
if they applied the CSS rules given in these sections in a manner consistent with this
specification and the relevant CSS and Unicode specifications.
[CSS]
[UNICODE]
[BIDI]
This is especially important for issues relating to the
'display'
'unicode-bidi'
, and
'direction'
properties.
15.2
The CSS user agent style sheet and presentational hints
The CSS rules given in these subsections are, except where otherwise specified, expected to be
used as part of the user-agent level style sheet defaults for all documents that contain
HTML elements
Some rules are intended for the author-level zero-specificity presentational hints part of the
CSS cascade; these are explicitly called out as
presentational hints
When the text below says that an attribute
attribute
on an element
element
maps to the pixel length property
(or properties)
properties
, it means that if
element
has an attribute
attribute
set, and parsing that attribute's value using the
rules for parsing non-negative
integers
doesn't generate an error, then the user agent is expected to use the parsed value
as a pixel length for a
presentational hint
for
properties
When the text below says that an attribute
attribute
on an element
element
maps to the dimension property
(or properties)
properties
, it means that if
element
has an attribute
attribute
set, and parsing that attribute's value using the
rules for parsing dimension values
doesn't generate an error, then the user agent is expected to use the parsed dimension as the
value for a
presentational hint
for
properties
, with the value given as a pixel length if the dimension was a length, and
with the value given as a percentage if the dimension was a percentage.
When the text below says that an attribute
attribute
on an element
element
maps to the dimension property (ignoring zero)
(or properties)
properties
, it means that if
element
has an attribute
attribute
set, and parsing that attribute's value using the
rules for parsing nonzero dimension
values
doesn't generate an error, then the user agent is expected to use the parsed
dimension as the value for a
presentational hint
for
properties
, with the value given as a pixel length if the dimension was a length, and
with the value given as a percentage if the dimension was a percentage.
When the text below says that a pair of attributes
and
on an
element
element
map to the aspect-ratio property
, it means that if
element
has both attributes
and
, and parsing those
attributes' values using the
rules for parsing non-negative integers
doesn't
generate an error for either, then the user agent is expected to use the parsed integers as a
presentational hint
for the
'aspect-ratio'
property of the form
auto
When the text below says that a pair of attributes
and
on an
element
element
map to the aspect-ratio property (using dimension rules)
, it
means that if
element
has both attributes
and
, and parsing
those attributes' values using the
rules for parsing dimension values
doesn't
generate an error or return a percentage for either, then the user agent is expected to use the
parsed dimensions as a
presentational hint
for the
'aspect-ratio'
property of the form
auto
When a user agent is to
align descendants
of a node, the user agent is expected to
align only those descendants that have both their
'margin-inline-start'
and
'margin-inline-end'
properties computing to a value other than 'auto', that are
over-constrained and that have one of those two margins with a
used value
forced to a
greater value, and that do not themselves have an applicable
align
attribute. When multiple elements are to
align
particular descendant, the most deeply nested such element is expected to override the others.
Aligned elements are expected to be aligned by having the
used
values
of their margins on the
line-left
and
line-right
sides be
set accordingly.
[CSSLOGICAL]
[CSSWM]
15.3
Non-replaced elements
15.3.1
Hidden elements
@namespace
url
);
[hidden]
, area, base, basefont, datalist, head, link, meta, noembed,
noframes, param, rp, script, source, style, template, track, title
display
none
embed[hidden]
display
inline
height
width
input[type=hidden i]
display
none !important; }

@media (scripting) {
noscript { display: none !important; }
15.3.2
The page
@namespace
url
);
html, body
display
block
For each property in the table below, given a
body
element, the first attribute
that exists
maps to the pixel length property
on the
body
element. If
none of the attributes for a property are found, or if the value of the attribute that was found
cannot be parsed successfully, then a default value of 8px is expected to be used for that
property instead.
Property
Source
'margin-top'
The
body
element's
marginheight
attribute
The
body
element's
topmargin
attribute
The
body
element's
container frame element
's
marginheight
attribute
'margin-right'
The
body
element's
marginwidth
attribute
The
body
element's
rightmargin
attribute
The
body
element's
container frame element
's
marginwidth
attribute
'margin-bottom'
The
body
element's
marginheight
attribute
The
body
element's
bottommargin
attribute
The
body
element's
container frame element
's
marginheight
attribute
'margin-left'
The
body
element's
marginwidth
attribute
The
body
element's
leftmargin
attribute
The
body
element's
container frame element
's
marginwidth
attribute
If the
body
element's
node document
's
browsing context
is a
child browsing context
and the
container
of that
browsing context
is a
frame
or
iframe
element, then the
container frame element
of
the
body
element is that
frame
or
iframe
element.
Otherwise, there is no
container frame element
The above requirements imply that a page can change the margins of another page
(including one from another
origin
) using, for example, an
iframe
. This
is potentially a security risk, as it might in some cases allow an attack to contrive a situation
in which a page is rendered not as the author intended, possibly for the purposes of phishing or
otherwise misleading the user.
If a
Document
's
browsing context
is a
child browsing context
, then it is expected to be positioned and sized to fit inside
the
content box
of the
container
of that
browsing context
. If the
container
is not
being rendered
, the
browsing context
is expected to have a
viewport
with zero width and zero height.
If a
Document
's
browsing context
is a
child browsing context
, the
container
of that
browsing context
is a
frame
or
iframe
element, that element
has a
scrolling
attribute, and that attribute's value is an
ASCII
case-insensitive
match for the string "
off
", "
noscroll
", or "
no
", then the user agent is expected to
prevent any scrollbars from being shown for the
viewport
of the
Document
's
browsing context
, regardless of
the
'overflow'
property that applies to that
viewport
When a
body
element has a
background
attribute set to a non-empty value, the new value is expected to be
parsed
relative to the element's
node document
, and if this is
successful, the user agent is expected to treat the attribute as a
presentational hint
setting the element's
'background-image'
property
to the
resulting URL string
When a
body
element has a
bgcolor
attribute set, the new value is expected to be parsed using the
rules for parsing a legacy
color value
, and if that does not return an error, the user agent is expected to treat the
attribute as a
presentational hint
setting the
element's
'background-color'
property to the resulting color.
When a
body
element has a
text
attribute, its
value is expected to be parsed using the
rules for parsing a legacy color value
, and
if that does not return an error, the user agent is expected to treat the attribute as a
presentational hint
setting the element's
'color'
property to the resulting color.
When a
body
element has a
link
attribute, its
value is expected to be parsed using the
rules for parsing a legacy color value
, and
if that does not return an error, the user agent is expected to treat the attribute as a
presentational hint
setting the
'color'
property
of any element in the
Document
matching the
:link
pseudo-class
to the resulting color.
When a
body
element has a
vlink
attribute,
its value is expected to be parsed using the
rules for parsing a legacy color value
and if that does not return an error, the user agent is expected to treat the attribute as a
presentational hint
setting the
'color'
property
of any element in the
Document
matching the
:visited
pseudo-class
to the resulting color.
When a
body
element has an
alink
attribute,
its value is expected to be parsed using the
rules for parsing a legacy color value
and if that does not return an error, the user agent is expected to treat the attribute as a
presentational hint
setting the
'color'
property
of any element in the
Document
matching the
:active
pseudo-class
and either the
:link
pseudo-class
or the
:visited
pseudo-class
to the resulting color.
15.3.3
Flow content
@namespace
url
);
address, blockquote, center, dialog, div, figure, figcaption, footer, form,
header, hr, legend, listing, main, p, plaintext, pre, xmp
display
block
blockquote, figure, listing, p, plaintext, pre, xmp
margin-block-start
em
margin-block-end
em
blockquote, figure
margin-inline-start
40
px
margin-inline-end
40
px
address
font-style
italic
listing, plaintext, pre, xmp
font-family
monospace
white-space
pre
dialog:not([open])
display
none
dialog
position
absolute
inset-inline-start
inset-inline-end
width
fit-content
height
fit-content
margin
auto
border
solid
padding
em
background
white
color
black
dialog::backdrop
background
rgba
0.1
);
slot
display
contents
The following rules are also expected to apply, as
presentational hints
@namespace
url
);
pre[wrap]
white-space
pre-wrap
In
quirks mode
, the following rules are also expected to apply:
@namespace
url
);
form
margin-block-end
em
The
center
element, and the
div
element when it has an
align
attribute whose value is an
ASCII
case-insensitive
match for either the string "
center
" or the string
middle
", are expected to center text within themselves, as if they had
their
'text-align'
property set to 'center' in a
presentational hint
, and to
align descendants
to the center.
The
div
element, when it has an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
left
", is expected to left-align text within itself, as if it had its
'text-align'
property set to 'left' in a
presentational hint
, and to
align descendants
to the left.
The
div
element, when it has an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
right
", is expected to right-align text within itself, as if it had its
'text-align'
property set to 'right' in a
presentational hint
, and to
align descendants
to the right.
The
div
element, when it has an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
justify
", is expected to full-justify text within itself, as if it had its
'text-align'
property set to 'justify' in a
presentational hint
, and to
align descendants
to the left.
The
dialog
element, when its
is modal
flag is true, is expected to
act as if it had a user-agent-level style sheet rule setting the following properties:
'position'
property to 'fixed'
'overflow'
property to 'auto'
'inset-block-start'
property to '0'
'inset-block-end'
property to '0'
'max-width'
property to 'calc(100% - 6px - 2em)'
'max-height'
property to 'calc(100% - 6px - 2em)'
15.3.4
Phrasing content
@namespace
url
);
cite, dfn, em, i, var
font-style
italic
b, strong
font-weight
bolder
code, kbd, samp, tt
font-family
monospace
big
font-size
larger
small
font-size
smaller
sub
vertical-align
sub
sup
vertical-align
super
sub, sup
line-height
normal
font-size
smaller
ruby
display
ruby
rt
display
ruby-text
:link
color
#0000EE
:visited
color
#551A8B
:link:active, :visited:active
color
#FF0000
:link, :visited
text-decoration
underline
cursor
pointer
:focus-visible
outline
auto
mark
background
yellow
color
black
/* this color is just a suggestion and can be changed based on implementation feedback */
abbr[title], acronym[title]
text-decoration
dotted underline
ins, u
text-decoration
underline
del, s, strike
text-decoration
line-through
q::before
content
open-quote
q::after
content
close-quote
br
display-outside
newline
/*
this also has bidi implications
*/
nobr
white-space
nowrap
wbr
display-outside
break-opportunity
/*
this also has bidi implications
*/
nobr wbr
white-space
normal
The following rules are also expected to apply, as
presentational hints
@namespace
url
);
br[clear=left i]
clear
left
br[clear=right i]
clear
right
br[clear=all i], br[clear=both i]
clear
both
For the purposes of the CSS ruby model, runs of children of
ruby
elements that are
not
rt
or
rp
elements are expected to be wrapped in anonymous boxes
whose
'display'
property has the value
'ruby-base'
[CSSRUBY]
When a particular part of a ruby has more than one annotation, the annotations should be
distributed on both sides of the base text so as to minimize the stacking of ruby annotations on
one side.
When it becomes possible to do so, the preceding requirement will be updated to be
expressed in terms of CSS ruby. (Currently, CSS ruby does not handle nested
ruby
elements or multiple sequential
rt
elements, which is how this semantic is
expressed.)
User agents that do not support correct ruby rendering are expected to render parentheses
around the text of
rt
elements in the absence of
rp
elements.
User agents are expected to support the
'clear'
property on inline elements (in
order to render
br
elements with
clear
attributes) in the manner described in the non-normative note to this effect in
CSS
The initial value for the
'color'
property is expected to be black. The initial
value for the
'background-color'
property is expected to be 'transparent'. The
canvas's background is expected to be white.
When a
font
element has a
color
attribute, its value is expected to be parsed using the
rules for parsing a legacy color
value
, and if that does not return an error, the user agent is expected to treat the
attribute as a
presentational hint
setting the
element's
'color'
property to the resulting color.
The
font
element is expected to
override the color of any text decoration that spans the text of the element to the
used value
of the element's
'color'
property.
When a
font
element has a
face
attribute, the user agent is expected to treat the attribute as a
presentational hint
setting the element's
'font-family'
property to the
attribute's value.
When a
font
element has a
size
attribute, the user agent is expected to use the following steps, known as the
rules for
parsing a legacy font size
, to treat the attribute as a
presentational hint
setting the element's
'font-size'
property:
Let
input
be the attribute's value.
Let
position
be a pointer into
input
, initially pointing at the
start of the string.
Skip ASCII whitespace
within
input
given
position
If
position
is past the end of
input
, there is no
presentational hint
. Return.
If the character at
position
is a U+002B PLUS SIGN character (+), then let
mode
be
relative-plus
, and advance
position
to the next character.
Otherwise, if the character at
position
is a U+002D HYPHEN-MINUS character (-), then
let
mode
be
relative-minus
, and advance
position
to the next
character. Otherwise, let
mode
be
absolute
Collect a sequence of code points
that are
ASCII digits
from
input
given
position
, and let the resulting sequence be
digits
If
digits
is the empty string, there is no
presentational hint
. Return.
Interpret
digits
as a base-ten integer. Let
value
be the resulting
number.
If
mode
is
relative-plus
, then increment
value
by 3. If
mode
is
relative-minus
, then let
value
be the result of subtracting
value
from 3.
If
value
is greater than 7, let it be 7.
If
value
is less than 1, let it be 1.
Set
'font-size'
to the keyword corresponding to the value of
value
according to the following table:
value
'font-size'
keyword
'x-small'
'small'
'medium'
'large'
'x-large'
'xx-large'
'xxx-large'
15.3.5
Bidirectional text
@namespace
url
);
[dir]:dir(ltr), bdi:dir(ltr), input[type=tel i]:dir(ltr)
direction
ltr
[dir]:dir(rtl), bdi:dir(rtl)
direction
rtl
address, blockquote, center, div, figure, figcaption, footer, form, header, hr,
legend, listing, main, p, plaintext, pre, summary, xmp, article, aside, h1, h2,
h3, h4, h5, h6, hgroup, nav, section, table, caption, colgroup, col, thead,
tbody, tfoot, tr, td, th, dir, dd, dl, dt, menu, ol, ul, li, bdi, output,
[dir=ltr i], [dir=rtl i], [dir=auto i]
unicode-bidi
isolate
bdo, bdo[dir]
unicode-bidi
isolate-override
input[dir=auto i]:is([type=search i], [type=tel i], [type=url i],
[type=email i]), textarea[dir=auto i], pre[dir=auto i]
unicode-bidi
plaintext
/* see prose for input elements whose type attribute is in the Text state */
/* the
rules setting the 'content' property
on
br
and
wbr
elements also has bidi implications */
When an
input
element's
dir
attribute is in the
auto
state and its
type
attribute is in the
Text
state, then the user agent is
expected to act as if it had a user-agent-level style sheet rule setting the
'unicode-bidi'
property to 'plaintext'.
Input fields (i.e.
textarea
elements, and
input
elements when their
type
attribute is in the
Text
Telephone
URL
or
Email
state) are expected to present an editing
user interface with a directionality that matches the element's
'direction'
property.
When the document's character encoding is
ISO-8859-8
, the following rules are
additionally expected to apply, following those above:
[ENCODING]
@namespace
url
);
address, blockquote, center, div, figure, figcaption, footer, form, header, hr,
legend, listing, main, p, plaintext, pre, summary, xmp, article, aside, h1, h2,
h3, h4, h5, h6, hgroup, nav, section, table, caption, colgroup, col, thead,
tbody, tfoot, tr, td, th, dir, dd, dl, dt, menu, ol, ul, li, [dir=ltr i],
[dir=rtl i], [dir=auto i], *|*
unicode-bidi
bidi-override
input:not([type=submit i]):not([type=reset i]):not([type=button i]),
textarea
unicode-bidi
normal
15.3.6
Sections and headings
@namespace
url
);
article, aside, h1, h2, h3, h4, h5, h6, hgroup, nav, section
display
block
h1
margin-block-start
0.67
em
margin-block-end
0.67
em
font-size
2.00
em
font-weight
bold
h2
margin-block-start
0.83
em
margin-block-end
0.83
em
font-size
1.50
em
font-weight
bold
h3
margin-block-start
1.00
em
margin-block-end
1.00
em
font-size
1.17
em
font-weight
bold
h4
margin-block-start
1.33
em
margin-block-end
1.33
em
font-size
1.00
em
font-weight
bold
h5
margin-block-start
1.67
em
margin-block-end
1.67
em
font-size
0.83
em
font-weight
bold
h6
margin-block-start
2.33
em
margin-block-end
2.33
em
font-size
0.67
em
font-weight
bold
In the following CSS block,
is shorthand for the following selector:
:is(article, aside, nav, section)
@namespace
url
);
h1
margin-block-start
0.83
em
margin-block-end
0.83
em
font-size
1.50
em
h1
margin-block-start
1.00
em
margin-block-end
1.00
em
font-size
1.17
em
h1
margin-block-start
1.33
em
margin-block-end
1.33
em
font-size
1.00
em
h1
margin-block-start
1.67
em
margin-block-end
1.67
em
font-size
0.83
em
h1
margin-block-start
2.33
em
margin-block-end
2.33
em
font-size
0.67
em
hgroup > h1 ~ h2
margin-block-start
1.00
em
margin-block-end
1.00
em
font-size
1.17
em
hgroup > h1 ~ h2
margin-block-start
1.33
em
margin-block-end
1.33
em
font-size
1.00
em
hgroup > h1 ~ h2
margin-block-start
1.67
em
margin-block-end
1.67
em
font-size
0.83
em
hgroup > h1 ~ h2
margin-block-start
2.33
em
margin-block-end
2.33
em
font-size
0.67
em
hgroup > h1 ~ h3
margin-block-start
1.33
em
margin-block-end
1.33
em
font-size
1.00
em
hgroup > h1 ~ h3
margin-block-start
1.67
em
margin-block-end
1.67
em
font-size
0.83
em
hgroup > h1 ~ h3
margin-block-start
2.33
em
margin-block-end
2.33
em
font-size
0.67
em
hgroup > h1 ~ h4
margin-block-start
1.67
em
margin-block-end
1.67
em
font-size
0.83
em
hgroup > h1 ~ h4
margin-block-start
2.33
em
margin-block-end
2.33
em
font-size
0.67
em
hgroup > h1 ~ h5
margin-block-start
2.33
em
margin-block-end
2.33
em
font-size
0.67
em
The shorthand is used to keep this block at least mildly readable.
15.3.7
Lists
@namespace
url
);
dir, dd, dl, dt, menu, ol, ul
display
block
li
display
list-item
dir, dl, menu, ol, ul
margin-block-start
em
margin-block-end
em
:is(dir, dl, menu, ol, ul) :is(dir, dl, menu, ol, ul)
margin-block-start
margin-block-end
dd
margin-inline-start
40
px
dir, menu, ol, ul
padding-inline-start
40
px
ol, ul, menu
counter-reset
list-item
ol
list-style-type
decimal
dir, menu, ul
list-style-type
disc
:is(dir, menu, ol, ul) :is(dir, menu, ul)
list-style-type
circle
:is(dir, menu, ol, ul) :is(dir, menu, ol, ul) :is(dir, menu, ul)
list-style-type
square
The following rules are also expected to apply, as
presentational
hints
@namespace
url
);
ol[type="1"], li[type="1"]
list-style-type
decimal
ol[type=a
s], li[type=a
s]
list-style-type
lower-alpha
ol[type=A
s], li[type=A
s]
list-style-type
upper-alpha
ol[type=i s], li[type=i s]
list-style-type
lower-roman
ol[type=I s], li[type=I s]
list-style-type
upper-roman
ul[type=none i], li[type=none i]
list-style-type
none
ul[type=disc i], li[type=disc i]
list-style-type
disc
ul[type=circle i], li[type=circle i]
list-style-type
circle
ul[type=square i], li[type=square i]
list-style-type
square
When rendering
li
elements, non-CSS user agents are expected to use the
ordinal value
of the
li
element to render the counter in the list item
marker.
For CSS user agents, some aspects of rendering
list items
are defined by the
CSS Lists
specification.
Additionally, the following attribute mappings are expected to apply:
[CSSLISTS]
When an
li
element has a
value
attribute, and parsing that attribute's value using the
rules for parsing integers
doesn't generate an error, the user agent is expected to
use the parsed value
value
as a
presentational
hint
for the
'counter-set'
property of the form
list-item
value
When an
ol
element has a
start
attribute or a
reversed
attribute, or both, the user agent
is expected to use the following steps to treat the attributes as a
presentational hint
for the
'counter-reset'
property:
Let
value
be null.
If the element has a
start
attribute, then set
value
to the result of parsing the attribute's value using the
rules for
parsing integers
If the element has a
reversed
attribute, then:
If
value
is an integer, then increment
value
by 1 and return
reversed(list-item)
value
Otherwise, return
reversed(list-item)
Either the
start
attribute was absent, or
parsing its value resulted in an error.
Otherwise:
If
value
is an integer, then decrement
value
by 1 and return
list-item
value
Otherwise, there is no
presentational
hint
15.3.8
Tables
@namespace
url
);
table
display
table
caption
display
table-caption
colgroup, colgroup[hidden]
display
table-column-group
col, col[hidden]
display
table-column
thead, thead[hidden]
display
table-header-group
tbody, tbody[hidden]
display
table-row-group
tfoot, tfoot[hidden]
display
table-footer-group
tr, tr[hidden]
display
table-row
td, th
display
table-cell
colgroup[hidden], col[hidden], thead[hidden], tbody[hidden],
tfoot[hidden], tr[hidden]
visibility
collapse
table
box-sizing
border-box
border-spacing
px
border-collapse
separate
text-indent
initial
td, th
padding
px
th
font-weight
bold
caption
text-align
center
thead, tbody, tfoot, table > tr
vertical-align
middle
tr, td, th
vertical-align
inherit
thead, tbody, tfoot, tr
border-color
inherit
table[rules=none i], table[rules=groups i], table[rules=rows i],
table[rules=cols i], table[rules=all i], table[frame=void i],
table[frame=above i], table[frame=below i], table[frame=hsides i],
table[frame=lhs i], table[frame=rhs i], table[frame=vsides i],
table[frame=box i], table[frame=border i],
table[rules=none i] > tr > td, table[rules=none i] > tr > th,
table[rules=groups i] > tr > td, table[rules=groups i] > tr > th,
table[rules=rows i] > tr > td, table[rules=rows i] > tr > th,
table[rules=cols i] > tr > td, table[rules=cols i] > tr > th,
table[rules=all i] > tr > td, table[rules=all i] > tr > th,
table[rules=none i] > thead > tr > td, table[rules=none i] > thead > tr > th,
table[rules=groups i] > thead > tr > td, table[rules=groups i] > thead > tr > th,
table[rules=rows i] > thead > tr > td, table[rules=rows i] > thead > tr > th,
table[rules=cols i] > thead > tr > td, table[rules=cols i] > thead > tr > th,
table[rules=all i] > thead > tr > td, table[rules=all i] > thead > tr > th,
table[rules=none i] > tbody > tr > td, table[rules=none i] > tbody > tr > th,
table[rules=groups i] > tbody > tr > td, table[rules=groups i] > tbody > tr > th,
table[rules=rows i] > tbody > tr > td, table[rules=rows i] > tbody > tr > th,
table[rules=cols i] > tbody > tr > td, table[rules=cols i] > tbody > tr > th,
table[rules=all i] > tbody > tr > td, table[rules=all i] > tbody > tr > th,
table[rules=none i] > tfoot > tr > td, table[rules=none i] > tfoot > tr > th,
table[rules=groups i] > tfoot > tr > td, table[rules=groups i] > tfoot > tr > th,
table[rules=rows i] > tfoot > tr > td, table[rules=rows i] > tfoot > tr > th,
table[rules=cols i] > tfoot > tr > td, table[rules=cols i] > tfoot > tr > th,
table[rules=all i] > tfoot > tr > td, table[rules=all i] > tfoot > tr > th
border-color
black
The following rules are also expected to apply, as
presentational hints
@namespace
url
);
table[align=left i]
float
left
table[align=right i]
float
right
table[align=center i]
margin-inline-start
auto
margin-inline-end
auto
thead[align=absmiddle i], tbody[align=absmiddle i], tfoot[align=absmiddle i],
tr[align=absmiddle i], td[align=absmiddle i], th[align=absmiddle i]
text-align
center
caption[align=bottom i]
caption-side
bottom
p[align=left i], h1[align=left i], h2[align=left i], h3[align=left i],
h4[align=left i], h5[align=left i], h6[align=left i]
text-align
left
p[align=right i], h1[align=right i], h2[align=right i], h3[align=right i],
h4[align=right i], h5[align=right i], h6[align=right i]
text-align
right
p[align=center i], h1[align=center i], h2[align=center i], h3[align=center i],
h4[align=center i], h5[align=center i], h6[align=center i]
text-align
center
p[align=justify i], h1[align=justify i], h2[align=justify i], h3[align=justify i],
h4[align=justify i], h5[align=justify i], h6[align=justify i]
text-align
justify
thead[valign=top i], tbody[valign=top i], tfoot[valign=top i],
tr[valign=top i], td[valign=top i], th[valign=top i]
vertical-align
top
thead[valign=middle i], tbody[valign=middle i], tfoot[valign=middle i],
tr[valign=middle i], td[valign=middle i], th[valign=middle i]
vertical-align
middle
thead[valign=bottom i], tbody[valign=bottom i], tfoot[valign=bottom i],
tr[valign=bottom i], td[valign=bottom i], th[valign=bottom i]
vertical-align
bottom
thead[valign=baseline i], tbody[valign=baseline i], tfoot[valign=baseline i],
tr[valign=baseline i], td[valign=baseline i], th[valign=baseline i]
vertical-align
baseline
td[nowrap], th[nowrap]
white-space
nowrap
table[rules=none i], table[rules=groups i], table[rules=rows i],
table[rules=cols i], table[rules=all i]
border-style
hidden
border-collapse
collapse
table[border]
border-style
outset
/*
only if border is not equivalent to zero
*/
table[frame=void i]
border-style
hidden
table[frame=above i]
border-style
outset hidden hidden hidden
table[frame=below i]
border-style
hidden hidden outset hidden
table[frame=hsides i]
border-style
outset hidden outset hidden
table[frame=lhs i]
border-style
hidden hidden hidden outset
table[frame=rhs i]
border-style
hidden outset hidden hidden
table[frame=vsides i]
border-style
hidden outset
table[frame=box i], table[frame=border i]
border-style
outset
table[border] > tr > td, table[border] > tr > th,
table[border] > thead > tr > td, table[border] > thead > tr > th,
table[border] > tbody > tr > td, table[border] > tbody > tr > th,
table[border] > tfoot > tr > td, table[border] > tfoot > tr > th
/*
only if border is not equivalent to zero
*/
border-width
px
border-style
inset
table[rules=none i] > tr > td, table[rules=none i] > tr > th,
table[rules=none i] > thead > tr > td, table[rules=none i] > thead > tr > th,
table[rules=none i] > tbody > tr > td, table[rules=none i] > tbody > tr > th,
table[rules=none i] > tfoot > tr > td, table[rules=none i] > tfoot > tr > th,
table[rules=groups i] > tr > td, table[rules=groups i] > tr > th,
table[rules=groups i] > thead > tr > td, table[rules=groups i] > thead > tr > th,
table[rules=groups i] > tbody > tr > td, table[rules=groups i] > tbody > tr > th,
table[rules=groups i] > tfoot > tr > td, table[rules=groups i] > tfoot > tr > th,
table[rules=rows i] > tr > td, table[rules=rows i] > tr > th,
table[rules=rows i] > thead > tr > td, table[rules=rows i] > thead > tr > th,
table[rules=rows i] > tbody > tr > td, table[rules=rows i] > tbody > tr > th,
table[rules=rows i] > tfoot > tr > td, table[rules=rows i] > tfoot > tr > th
border-width
px
border-style
none
table[rules=cols i] > tr > td, table[rules=cols i] > tr > th,
table[rules=cols i] > thead > tr > td, table[rules=cols i] > thead > tr > th,
table[rules=cols i] > tbody > tr > td, table[rules=cols i] > tbody > tr > th,
table[rules=cols i] > tfoot > tr > td, table[rules=cols i] > tfoot > tr > th
border-width
px
border-block-start-style
none
border-inline-end-style
solid
border-block-end-style
none
border-inline-start-style
solid
table[rules=all i] > tr > td, table[rules=all i] > tr > th,
table[rules=all i] > thead > tr > td, table[rules=all i] > thead > tr > th,
table[rules=all i] > tbody > tr > td, table[rules=all i] > tbody > tr > th,
table[rules=all i] > tfoot > tr > td, table[rules=all i] > tfoot > tr > th
border-width
px
border-style
solid
table[rules=groups i] > colgroup
border-inline-start-width
px
border-inline-start-style
solid
border-inline-end-width
px
border-inline-end-style
solid
table[rules=groups i] > thead,
table[rules=groups i] > tbody,
table[rules=groups i] > tfoot
border-block-start-width
px
border-block-start-style
solid
border-block-end-width
px
border-block-end-style
solid
table[rules=rows i] > tr, table[rules=rows i] > thead > tr,
table[rules=rows i] > tbody > tr, table[rules=rows i] > tfoot > tr
border-block-start-width
px
border-block-start-style
solid
border-block-end-width
px
border-block-end-style
solid
In
quirks mode
, the following rules are also expected to apply:
@namespace
url
);
table
font-weight
initial
font-style
initial
font-variant
initial
font-size
initial
line-height
initial
white-space
initial
text-align
initial
For the purposes of the CSS table model, the
col
element is expected to be treated
as if it was present as many times as its
span
attribute
specifies
For the purposes of the CSS table model, the
colgroup
element, if it contains no
col
element, is expected to be treated as if it had as many such children as its
span
attribute
specifies
For the purposes of the CSS table model, the
colspan
and
rowspan
attributes on
td
and
th
elements are expected to
provide
the
special knowledge
regarding cells spanning rows and columns.
In
HTML documents
, the following rules are also expected to apply:
@namespace
url
);
:is(table, thead, tbody, tfoot, tr) > form
display
none !important; }
The
table
element's
cellspacing
attribute
maps to the pixel length property
'border-spacing'
on the
element.
The
table
element's
cellpadding
attribute
maps to the pixel length
properties
'padding-top'
'padding-right'
'padding-bottom'
, and
'padding-left'
of any
td
and
th
elements that have corresponding
cells
in the
table
corresponding to the
table
element.
The
table
element's
height
attribute
maps to the dimension property (ignoring zero)
'height'
on the
table
element.
The
table
element's
width
attribute
maps to the dimension property (ignoring zero)
'width'
on the
table
element.
The
col
element's
width
attribute
maps
to the dimension property
'width'
on the
col
element.
The
thead
tbody
, and
tfoot
elements'
height
attribute
maps to the dimension property
'height'
on the element.
The
tr
element's
height
attribute
maps
to the dimension property
'height'
on the
tr
element.
The
td
and
th
elements'
height
attributes
map to the dimension
property (ignoring zero)
'height'
on the element.
The
td
and
th
elements'
width
attributes
map to the dimension
property (ignoring zero)
'width'
on the element.
The
thead
tbody
tfoot
tr
td
, and
th
elements, when they have an
align
attribute whose value is an
ASCII case-insensitive
match for either the string "
center
" or the string "
middle
", are expected to center
text within themselves, as if they had their
'text-align'
property set to 'center' in
presentational hint
, and to
align
descendants
to the center.
The
thead
tbody
tfoot
tr
td
, and
th
elements, when they have an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
left
", are expected to left-align text within themselves, as if they had their
'text-align'
property set to 'left' in a
presentational hint
, and to
align descendants
to the left.
The
thead
tbody
tfoot
tr
td
, and
th
elements, when they have an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
right
", are expected to right-align text within themselves, as if they had their
'text-align'
property set to 'right' in a
presentational hint
, and to
align descendants
to the right.
The
thead
tbody
tfoot
tr
td
, and
th
elements, when they have an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
justify
", are expected to full-justify text within themselves, as if they had
their
'text-align'
property set to 'justify' in a
presentational hint
, and to
align descendants
to the left.
User agents are expected to have a rule in their user agent style sheet that matches
th
elements that have a parent node whose
computed value
for the
'text-align'
property is its initial value, whose declaration block consists of just
a single declaration that sets the
'text-align'
property to the value 'center'.
When a
table
thead
tbody
tfoot
tr
td
, or
th
element has a
background
attribute set to a non-empty value, the new value is
expected to be
parsed
relative to the element's
node
document
, and if this is successful, the user agent is expected to treat the attribute as a
presentational hint
setting the element's
'background-image'
property to the
resulting URL string
When a
table
thead
tbody
tfoot
tr
td
, or
th
element has a
bgcolor
attribute set, the new value is expected to be parsed using the
rules for parsing a legacy
color value
, and if that does not return an error, the user agent is expected to treat the
attribute as a
presentational hint
setting the element's
'background-color'
property to the resulting color.
When a
table
element has a
bordercolor
attribute, its value is expected to be parsed using the
rules for parsing a legacy color
value
, and if that does not return an error, the user agent is expected to treat the
attribute as a
presentational hint
setting the
element's
'border-top-color'
'border-right-color'
'border-bottom-color'
, and
'border-left-color'
properties to the
resulting color.
The
table
element's
border
attribute
maps to the pixel length properties
'border-top-width'
'border-right-width'
'border-bottom-width'
'border-left-width'
on the element. If the
attribute is present but parsing the attribute's value using the
rules for parsing
non-negative integers
generates an error, a default value of 1px is expected to be used for
that property instead.
Rules marked "
only if border is not equivalent to zero
in the CSS block above is expected to only be applied if the
border
attribute mentioned in the selectors for the rule is not
only present but, when parsed using the
rules for parsing non-negative integers
, is
also found to have a value other than zero or to generate an error.
In
quirks mode
, a
td
element or a
th
element that has a
nowrap
attribute but also has a
width
attribute whose value, when parsed using the
rules for
parsing nonzero dimension values
, is found to be a length (not an error or a number
classified as a percentage), is expected to have a
presentational hint
setting the element's
'white-space'
property to
'normal', overriding the rule in the CSS block above that sets it to 'nowrap'.
15.3.9
Margin collapsing quirks
A node is
substantial
if it is a text node
that is not
inter-element whitespace
, or if it is an element node.
A node is
blank
if it is an element that contains no
substantial
nodes.
The
elements with default margins
are the following elements:
blockquote
dir
dl
h1
h2
h3
h4
h5
h6
listing
ol
plaintext
pre
ul
xmp
In
quirks mode
, any
element
with default margins
that is the
child
of a
body
td
, or
th
element and has no
substantial
previous siblings is expected to have a
user-agent level style sheet rule that sets its
'margin-block-start'
property to
zero.
In
quirks mode
, any
element
with default margins
that is the
child
of a
body
td
, or
th
element, has no
substantial
previous siblings, and is
blank
, is expected to have a user-agent level style sheet
rule that sets its
'margin-block-end'
property to zero also.
In
quirks mode
, any
element
with default margins
that is the
child
of a
td
or
th
element, has no
substantial
following siblings, and is
blank
, is expected to have a user-agent level style sheet
rule that sets its
'margin-block-start'
property to zero.
In
quirks mode
, any
element that is the
child
of a
td
or
th
element and has
no
substantial
following siblings, is expected
to have a user-agent level style sheet rule that sets its
'margin-block-end'
property
to zero.
15.3.10
Form controls
@namespace
url
);
input, select, button, textarea
letter-spacing
initial
word-spacing
initial
line-height
initial
text-transform
initial
text-indent
initial
text-shadow
initial
input, select, textarea
text-align
initial
input:is([type=reset i], [type=button i], [type=submit i]), button
text-align
center
input:is([type=reset i], [type=button i], [type=submit i], [type=color i]), button
display
inline-block
input:is([type=radio i], [type=checkbox i], [type=reset i], [type=button i],
[type=submit i], [type=color i], [type=search i]), select, button
box-sizing
border-box
textarea
white-space
pre-wrap
In
quirks mode
, the following rules are also expected to apply:
@namespace
url
);
input:not([type=image i]), textarea
box-sizing
border-box
Each kind of form control is also described in the
Widgets
section,
which describes the look and feel of the control.
15.3.11
The
hr
element
@namespace
url
);
hr
color
gray
border-style
inset
border-width
px
margin-block-start
0.5
em
margin-inline-end
auto
margin-block-end
0.5
em
margin-inline-start
auto
overflow
hidden
The following rules are also expected to apply, as
presentational hints
@namespace
url
);
hr[align=left i]
margin-left
margin-right
auto
hr[align=right i]
margin-left
auto
margin-right
hr[align=center i]
margin-left
auto
margin-right
auto
hr[color], hr[noshade]
border-style
solid
If an
hr
element has either a
color
attribute
or a
noshade
attribute, and furthermore also has a
size
attribute, and parsing that attribute's value using the
rules for parsing non-negative integers
doesn't generate an error, then the user
agent is expected to use the parsed value divided by two as a pixel length for
presentational hints
for the properties
'border-top-width'
'border-right-width'
'border-bottom-width'
, and
'border-left-width'
on the element.
Otherwise, if an
hr
element has neither a
color
attribute nor a
noshade
attribute, but does have a
size
attribute, and parsing that attribute's value using the
rules for parsing non-negative integers
doesn't generate an error, then: if the
parsed value is one, then the user agent is expected to use the attribute as a
presentational hint
setting the element's
'border-bottom-width'
to 0; otherwise, if the parsed value is greater than one, then
the user agent is expected to use the parsed value minus two as a pixel length for
presentational hints
for the
'height'
property on the element.
The
width
attribute on an
hr
element
maps
to the dimension property
'width'
on the element.
When an
hr
element has a
color
attribute, its
value is expected to be parsed using the
rules for parsing a legacy color value
, and
if that does not return an error, the user agent is expected to treat the attribute as a
presentational hint
setting the element's
'color'
property to the resulting color.
15.3.12
The
fieldset
and
legend
elements
@namespace
url
);
fieldset
display
block
margin-inline-start
px
margin-inline-end
px
border
groove
px
ThreeDFace
padding-block-start
0.35
em
padding-inline-end
0.75
em
padding-block-end
0.625
em
padding-inline-start
0.75
em
min-inline-size
min-content
legend
padding-inline-start
px
padding-inline-end
px
legend[align=left i]
justify-self
left
legend[align=center i]
justify-self
center
legend[align=right i]
justify-self
right
The
fieldset
element, when it generates a
CSS box
, is expected to act
as follows:
The element is expected to establish a new
block formatting context
The
'display'
property is expected to act as follows:
If the computed value of
'display'
is a value such that the
outer
display type
is 'inline', then behave as 'inline-block'.
Otherwise, behave as 'flow-root'.
This does not change the computed value.
If the element's box has a child box that matches the conditions in the list below, then the
first such child box is the 'fieldset' element's
rendered legend
The child is a
legend
element.
The child's used value of
'float'
is 'none'.
The child's used value of
'position'
is not 'absolute' or 'fixed'.
If the element has a
rendered legend
, then the border is expected to not be
painted behind the rectangle defined as follows, using the writing mode of the fieldset:
The block-start edge of the rectangle is the smaller of the block-start edge of the
rendered legend
's margin rectangle at its static position (ignoring transforms),
and the block-start outer edge of the
fieldset
's border.
The block-end edge of the rectangle is the larger of the block-end edge of the
rendered legend
's margin rectangle at its static position (ignoring transforms),
and the block-end outer edge of the
fieldset
's border.
The inline-start edge of the rectangle is the smaller of the inline-start edge of the
rendered legend
's border rectangle at its static position (ignoring transforms),
and the inline-start outer edge of the
fieldset
's border.
The inline-end edge of the rectangle is the larger of the inline-end edge of the
rendered legend
's border rectangle at its static position (ignoring transforms),
and the inline-end outer edge of the
fieldset
's border.
The space allocated for the element's border on the block-start side is expected to be
the element's
'border-block-start-width'
or the
rendered legend
's
margin box size in the
fieldset
's block-flow direction, whichever is
greater.
For the purpose of calculating the used
'block-size'
, if the computed
'block-size'
is not 'auto', the space allocated for the
rendered
legend
's margin box that spills out past the border, if any, is expected to be
subtracted from the
'block-size'
. If the content box's block-size would be
negative, then let the content box's block-size be zero instead.
If the element has a
rendered legend
, then that element is expected to be
the first child box.
The
anonymous fieldset content box
is expected to appear after the
rendered legend
and is expected to contain the content (including the '::before'
and '::after' pseudo-elements) of the
fieldset
element except for the
rendered legend
, if there is one.
The used value of the
'padding-top'
'padding-right'
'padding-bottom'
, and
'padding-left'
properties are expected to be
zero.
For the purpose of calculating the min-content inline size, use the greater of the
min-content inline size of the
rendered legend
and the min-content inline size of
the
anonymous fieldset content box
For the purpose of calculating the max-content inline size, use the greater of the
max-content inline size of the
rendered legend
and the max-content inline size of
the
anonymous fieldset content box
fieldset
element's
rendered legend
, if any, is expected to act as
follows:
The element is expected to establish a new
formatting context
for its
contents. The type of this
formatting context
is determined by its
'display'
value, as usual.
The
'display'
property is expected to behave as if its computed value was
blockified.
This does not change the computed value.
If the
computed value
of
'inline-size'
is 'auto', then the
used value
is the
fit-content inline size
The element is expected to be positioned in the inline direction as is normal for
blocks (e.g., taking into account margins and the
'justify-self'
property).
The element's box is expected to be constrained in the inline direction by the inline
content size of the
fieldset
as if it had used its computed inline padding.
For example, if the
fieldset
has a specified padding of 50px, then the
rendered legend
will be positioned 50px in from the
fieldset
's
border. The padding will further apply to the
anonymous fieldset content box
instead of the
fieldset
element itself.
The element is expected to be positioned in the block-flow direction such that its border
box is centered over the border on the block-start side of the
fieldset
element.
fieldset
element's
anonymous fieldset content box
is expected to
act as follows:
The
'display'
property is expected to act as follows:
If the computed value of
'display'
on the
fieldset
element
is 'grid' or 'inline-grid', then set the used value to 'grid'.
If the computed value of
'display'
on the
fieldset
element
is 'flex' or 'inline-flex', then set the used value to 'flex'.
Otherwise, set the used value to 'flow-root'.
The following properties are expected to inherit from the
fieldset
element:
'align-content'
'align-items'
'border-radius'
'column-count'
'column-fill'
'column-gap'
'column-rule'
'column-width'
'flex-direction'
'flex-wrap'
'grid-auto-columns'
'grid-auto-flow'
'grid-auto-rows'
'grid-column-gap'
'grid-row-gap'
'grid-template-areas'
'grid-template-columns'
'grid-template-rows'
'justify-content'
'justify-items'
'overflow'
'padding-bottom'
'padding-left'
'padding-right'
'padding-top'
'text-overflow'
'unicode-bidi'
The
'block-size'
property is expected to be set to '100%'.
For the purpose of calculating percentage padding, act as if the padding was calculated
for the
fieldset
element.
The legend is rendered over the top border, and the top border area reserves
vertical space for the legend. The fieldset's top margin starts at the top margin edge of the
legend. The legend's horizontal margins, or the
'justify-self'
property, gives
its horizontal position. The
anonymous fieldset content box
appears below the
legend.
15.4
Replaced elements
The following elements can be
replaced
elements
audio
canvas
embed
iframe
img
input
object
, and
video
15.4.1
Embedded content
The
embed
iframe
, and
video
elements are expected to be
treated as
replaced elements
canvas
element that
represents
embedded content
is
expected to be treated as a
replaced element
; the contents of such elements are the
element's bitmap, if any, or else a
transparent black
bitmap with the same
intrinsic dimensions
as the element. Other
canvas
elements are expected
to be treated as ordinary elements in the rendering model.
An
object
element that
represents
an image, plugin, or its
nested browsing context
is expected to be treated as a
replaced element
Other
object
elements are expected to be treated as ordinary elements in the
rendering model.
The
audio
element, when it is
exposing a user interface
, is expected to be treated as a
replaced element
about one line high, as wide as is necessary to expose the user
agent's user interface features. When an
audio
element is not
exposing a user interface
, the user agent is expected to force
its
'display'
property to compute to 'none', irrespective of CSS rules.
Whether a
video
element is
exposing a user interface
is not expected to affect the size of the rendering;
controls are expected to be overlaid above the page content without causing any layout changes,
and are expected to disappear when the user does not need them.
When a
video
element represents a poster frame or frame of video, the poster frame
or frame of video is expected to be rendered at the largest size that maintains the aspect ratio
of that poster frame or frame of video without being taller or wider than the
video
element itself, and is expected to be centered in the
video
element.
Any subtitles or captions are expected to be overlayed directly on top of their
video
element, as defined by the relevant rendering rules; for WebVTT, those are the
rules for updating the display of WebVTT text tracks
[WEBVTT]
When the user agent starts
exposing a user
interface
for a
video
element, the user agent should run the
rules for
updating the text track rendering
of each of the
text
tracks
in the
video
element's
list of text tracks
that are
showing
and whose
text track kind
is one of
subtitles
or
captions
(e.g., for
text
tracks
based on WebVTT, the
rules for updating the display of WebVTT text
tracks
).
[WEBVTT]
Resizing
video
and
canvas
elements does not interrupt
video playback or clear the canvas.
The following CSS rules are expected to apply:
@namespace
url
);
iframe
border
px
inset
video
object-fit
contain
15.4.2
Images
User agents are expected to render
img
elements and
input
elements
whose
type
attributes are in the
Image Button
state, according to the first applicable rules
from the following list:
If the element
represents
an image
The user agent is expected to treat the element as a
replaced element
and
render the image according to the rules for doing so defined in CSS.
If the element does not
represent
an image and either:
the user agent has reason to believe that the image will become
available
and be rendered in due
course, or
the element has no
alt
attribute, or
the
Document
is in
quirks mode
, and the element already has
intrinsic dimensions
(e.g., from the
dimension attributes
or CSS
rules)
The user agent is expected to treat the element as a
replaced element
whose
content is the text that the element represents, if any, optionally alongside an icon indicating
that the image is being obtained (if applicable). For
input
elements, the element
is expected to appear button-like to indicate that the element is a
button
If the element is an
img
element that
represents
some text and the
user agent does not expect this to change
The user agent is expected to treat the element as a non-replaced phrasing element whose
content is the text, optionally with an icon indicating that an image is missing, so that the
user can request the image be displayed or investigate why it is not rendering. In non-graphical
contexts, such an icon should be omitted.
If the element is an
img
element that
represents
nothing and the
user agent does not expect this to change
The user agent is expected to treat the element as a
replaced element
whose
intrinsic dimensions
are 0. (In the absence of further styles, this will cause the
element to essentially not be rendered.)
If the element is an
input
element that does not
represent
an image and the user agent does not expect this to change
The user agent is expected to treat the element as a
replaced element
consisting of a button whose content is the element's alternative text. The
intrinsic
dimensions
of the button are expected to be about one line in height and whatever width
is necessary to render the text on one line.
The icons mentioned above are expected to be relatively small so as not to disrupt most text
but be easily clickable. In a visual environment, for instance, icons could be 16 pixels by 16
pixels square, or 1em by 1em if the images are scalable. In an audio environment, the icon could
be a short bleep. The icons are intended to indicate to the user that they can be used to get to
whatever options the UA provides for images, and, where appropriate, are expected to provide
access to the context menu that would have come up if the user interacted with the actual
image.
All animated images with the same
absolute URL
and the same image data are
expected to be rendered synchronized to the same timeline as a group, with the timeline starting
at the time of the least recent addition to the group.
In other words, when a second image with the same
absolute URL
and
animated image data is inserted into a document, it jumps to the point in the animation cycle that
is currently being displayed by the first image.
When a user agent is to
restart the animation
for an
img
element
showing an animated image, all animated images with the same
absolute URL
and the
same image data in that
img
element's
node document
are expected to restart
their animation from the beginning.
The following CSS rules are expected to apply when the
Document
is in
quirks
mode
@namespace
url
);
img[align=left i]
margin-right
px
img[align=right i]
margin-left
px
15.4.3
Attributes for embedded content and images
The following CSS rules are expected to apply as
presentational hints
@namespace
url
);
iframe[frameborder='0'], iframe[frameborder=no i]
border
none
embed[align=left i], iframe[align=left i], img[align=left i],
input[type=image i][align=left i], object[align=left i]
float
left
embed[align=right i], iframe[align=right i], img[align=right i],
input[type=image i][align=right i], object[align=right i]
float
right
embed[align=top i], iframe[align=top i], img[align=top i],
input[type=image i][align=top i], object[align=top i]
vertical-align
top
embed[align=baseline i], iframe[align=baseline i], img[align=baseline i],
input[type=image i][align=baseline i], object[align=baseline i]
vertical-align
baseline
embed[align=texttop i], iframe[align=texttop i], img[align=texttop i],
input[type=image i][align=texttop i], object[align=texttop i]
vertical-align
text-top
embed[align=absmiddle i], iframe[align=absmiddle i], img[align=absmiddle i],
input[type=image i][align=absmiddle i], object[align=absmiddle i],
embed[align=abscenter i], iframe[align=abscenter i], img[align=abscenter i],
input[type=image i][align=abscenter i], object[align=abscenter i]
vertical-align
middle
embed[align=bottom i], iframe[align=bottom i], img[align=bottom i],
input[type=image i][align=bottom i], object[align=bottom i]
vertical-align
bottom
When an
embed
iframe
img
, or
object
element, or an
input
element whose
type
attribute is in the
Image Button
state, has an
align
attribute whose value is an
ASCII case-insensitive
match for
the string "
center
" or the string "
middle
", the user
agent is expected to act as if the element's
'vertical-align'
property was set to a
value that aligns the vertical middle of the element with the parent element's baseline.
The
hspace
attribute of
embed
img
, or
object
elements, and
input
elements with a
type
attribute in the
Image
Button
state,
maps to the dimension
properties
'margin-left'
and
'margin-right'
on the element.
The
vspace
attribute of
embed
img
, or
object
elements, and
input
elements with a
type
attribute in the
Image
Button
state,
maps to the dimension
properties
'margin-top'
and
'margin-bottom'
on the element.
When an
img
element,
object
element, or
input
element
with a
type
attribute in the
Image Button
state has a
border
attribute whose value, when parsed using the
rules for
parsing non-negative integers
, is found to be a number greater than zero, the user agent is
expected to use the parsed value for eight
presentational hints
: four setting the
parsed value as a pixel length for the element's
'border-top-width'
'border-right-width'
'border-bottom-width'
, and
'border-left-width'
properties, and four setting the element's
'border-top-style'
'border-right-style'
'border-bottom-style'
, and
'border-left-style'
properties to the value
'solid'.
The
width
and
height
attributes on an
img
element's
dimension attribute source
map to the dimension properties
'width'
and
'height'
on the
img
element respectively. They
similarly
map to the aspect-ratio property (using dimension rules)
of the
img
element.
The
width
and
height
attributes on
embed
iframe
object
, and
video
elements, and
input
elements with a
type
attribute in the
Image Button
state and that either
represents an image or that the user expects will eventually represent an image,
map to the dimension properties
'width'
and
'height'
on the element respectively.
The
width
and
height
attributes
map to the aspect-ratio property (using dimension rules)
on
img
and
video
elements, and
input
elements with a
type
attribute in the
Image
Button
state.
The
width
and
height
attributes
map to the aspect-ratio property
on
canvas
elements.
15.4.4
Image maps
Shapes on an
image map
are expected to act, for the purpose of the CSS cascade, as
elements independent of the original
area
element that happen to match the same style
rules but inherit from the
img
or
object
element.
For the purposes of the rendering, only the
'cursor'
property is expected to have
any effect on the shape.
Thus, for example, if an
area
element has a
style
attribute that sets the
'cursor'
property to 'help',
then when the user designates that shape, the cursor would change to a Help cursor.
Similarly, if an
area
element had a CSS rule that set its
'cursor'
property to 'inherit' (or if no rule setting the
'cursor'
property matched the element at all), the shape's cursor would be inherited from the
img
or
object
element of the
image map
, not from the parent
of the
area
element.
15.5
Widgets
15.5.1
Introduction
The elements defined in this section can be rendered in a variety of manners, within the
guidelines provided below. User agents are encouraged to set the
'appearance'
CSS
property appropriately to achieve platform-native appearances for widgets, and are expected to
implement any relevant animations, etc, that are appropriate for the platform.
15.5.2
Button layout
Button layout
is as follows:
The
'display'
property is expected to act as follows:
If the computed value of
'display'
is 'inline-grid', 'grid',
'inline-flex', or 'flex', then behave as the computed value.
Otherwise, if the computed value of
'display'
is a value such that the
outer display type
is 'inline', then behave as 'inline-block'.
Otherwise, behave as 'flow-root'.
The element is expected to establish a new
formatting context
for its
contents. The type of this formatting context is determined by its
'display'
value,
as usual.
If the element is
absolutely-positioned
, then for the purpose of the
CSS visual formatting model
, act as if
the element is a
replaced element
[CSS]
If the
computed value
of
'inline-size'
is 'auto', then the
used value
is the
fit-content inline size
For the purpose of the 'normal' keyword of the
'align-self'
property, act
as if the element is a replaced element.
If the element is an
input
element, or if it is a
button
element
and its computed value for
'display'
is not 'inline-grid', 'grid', 'inline-flex',
or 'flex', then the element's box has a child
anonymous button content box
with the
following behaviors:
The box is a
block-level
block container
that establishes a
new
block formatting context
(i.e.,
'display'
is
'flow-root').
If the box does not overflow in the horizontal axis, then it is centered
horizontally.
If the box does not overflow in the vertical axis, then it is centered
vertically.
Otherwise, there is no
anonymous button content box
15.5.3
The
button
element
The
button
element, when it generates a
CSS box
, is expected to
depict a button and to use
button layout
whose
anonymous button content
box
's contents (if there is an
anonymous button content box
) are the child
boxes the element's box would otherwise have.
15.5.4
The
details
and
summary
elements
@namespace
url
);
summary
display
list-item
counter-increment
list-item
list-style
disclosure-closed inside
details[open] > summary
list-style-type
disclosure-open
The
details
element is expected to render as a
block box
. The element
is also expected to have an internal
shadow tree
with two
slots
. The first
slot
is expected
to take the
details
element's first
summary
element child, if any. The
second
slot
is expected to take the
details
element's remaining descendants, if any.
The
details
element's first
summary
element child, if any, is
expected to allow the user to request the details be shown or hidden.
The
details
element's second
slot
is expected
to be removed from the rendering when the
details
element does not have an
open
attribute.
15.5.5
The
input
element as a text entry widget
An
input
element whose
type
attribute is in
the
Text
Telephone
URL
, or
Email
state, is expected to render as an
'inline-block'
box depicting a text control. Additionally, the
'line-height'
property, if it has a
computed value
equivalent to a value
that is less than 1.0, must have a
used value
of 1.0.
An
input
element whose
type
attribute is in
the
Password
state is expected to render as an
'inline-block'
box depicting a text control that obscures data entry.
If these text controls provide a text selection, then, when the user changes the current
selection, the user agent is expected to
queue an element task
on the
user
interaction task source
given the
input
element to
fire an event
named
select
at the element, with the
bubbles
attribute initialized to
true.
If an
input
element whose
type
attribute is
in one of the above states has a
size
attribute, and parsing
that attribute's value using the
rules for parsing non-negative integers
doesn't
generate an error, then the user agent is expected to use the attribute as a
presentational hint
for the
'width'
property on
the element, with the value obtained from applying the
converting a character width to
pixels
algorithm to the value of the attribute.
If an
input
element whose
type
attribute is
in one of the above states does
not
have a
size
attribute, then the user agent is expected to act as if it had a user-agent-level style sheet rule
setting the
'width'
property on the element to the value obtained from applying the
converting a character width to pixels
algorithm to the number 20.
The
converting a character width to pixels
algorithm returns
size
-1)×
avg
max
where
size
is the character width to convert,
avg
is the
average character width of the primary font for the element for which the algorithm is being run,
in pixels, and
max
is the maximum character width of that same font, also in
pixels. (The element's
'letter-spacing'
property does not affect the result.)
15.5.6
The
input
element as domain-specific widgets
An
input
element whose
type
attribute is in
the
Date
state is expected to render as an
'inline-block'
box depicting a date control.
An
input
element whose
type
attribute is in
the
Month
state is expected to render as an
'inline-block'
box depicting a month control.
An
input
element whose
type
attribute is in
the
Week
state is expected to render as an
'inline-block'
box depicting a week control.
An
input
element whose
type
attribute is in
the
Time
state is expected to render as an
'inline-block'
box depicting a time control.
An
input
element whose
type
attribute is in
the
Local Date and Time
state is expected to
render as an
'inline-block'
box depicting a local date and time control.
An
input
element whose
type
attribute is in
the
Number
state is expected to render as an
'inline-block'
box depicting a number control.
These controls are all expected to be about one line high, and about as wide as necessary to
show the widest possible value.
15.5.7
The
input
element as a range control
An
input
element whose
type
attribute is in
the
Range
state is expected to render as an
'inline-block'
box depicting a slider control.
When the control is wider than it is tall (or square), the control is expected to be a
horizontal slider, with the lowest value on the right if the
'direction'
property on
this element has a
computed value
of 'rtl', and on the left otherwise. When the
control is taller than it is wide, it is expected to be a vertical slider, with the lowest value
on the bottom.
Predefined suggested values (provided by the
list
attribute) are expected to be shown as tick marks on the slider, which the slider can snap to.
User agents are expected to use the
used value
of the
'direction'
property on the element to determine the direction in which the slider operates. Typically, a
left-to-right ('ltr') horizontal control would have the lowest value on the left and the highest
value on the right, and vice versa.
15.5.8
The
input
element as a color
well
An
input
element whose
type
attribute is in
the
Color
state is expected to depict a color well,
which, when activated, provides the user with a color picker (e.g. a color wheel or color
palette) from which the color can be changed. The element, when it generates a
CSS
box
, is expected to use
button layout
, that has no child boxes of the
anonymous button content box
. The
anonymous button content box
is
expected to have a
presentational hint
setting the
'background-color'
property to the element's
value
Predefined suggested values (provided by the
list
attribute) are expected to be shown in the color picker interface, not on the color well
itself.
15.5.9
The
input
element as a checkbox and radio button widgets
An
input
element whose
type
attribute is in
the
Checkbox
state is expected to render as an
'inline-block'
box containing a single checkbox control, with no label.
An
input
element whose
type
attribute is in
the
Radio Button
state is expected to render as an
'inline-block'
box containing a single radio button control, with no label.
15.5.10
The
input
element as a file upload control
An
input
element whose
type
attribute is in
the
File Upload
state, when it generates a
CSS
box
, is expected to render as an
'inline-block'
box containing a span of text
giving the filename(s) of the
selected
files
, if any, followed by a button that, when activated, provides the user with a file
picker from which the selection can be changed. The button is expected to use
button
layout
and match the
'::file-selector-button'
pseudo-element. The contents of
its
anonymous button content box
are expected to be
implementation-defined
(and possibly locale-specific) text, for example "Choose
file".
15.5.11
The
input
element as a button
An
input
element whose
type
attribute is in
the
Submit Button
Reset Button
, or
Button
state, when it generates a
CSS box
, is
expected to depict a button and use
button layout
and the contents of the
anonymous button content box
are expected to be the text of the element's
value
attribute, if any, or text derived from the element's
type
attribute in an
implementation-defined
(and
probably locale-specific) fashion, if not.
15.5.12
The
marquee
element
@namespace
url
);
marquee
display
inline-block
text-align
initial
The
marquee
element, while
turned on
, is
expected to render in an animated fashion according to its attributes as follows:
If the element's
behavior
attribute is in the
scroll
state
Slide the contents of the element in the direction described by the
direction
attribute as defined below, such that it begins
off the start side of the
marquee
, and ends flush with the inner end side.
For example, if the
direction
attribute is
left
(the default), then the
contents would start such that their left edge are off the side of the right edge of the
marquee
's
content area
, and the contents would then slide up to the
point where the left edge of the contents are flush with the left inner edge of the
marquee
's
content area
Once the animation has ended, the user agent is expected to
increment the marquee
current loop index
. If the element is still
turned
on
after this, then the user agent is expected to restart the animation.
If the element's
behavior
attribute is in the
slide
state
Slide the contents of the element in the direction described by the
direction
attribute as defined below, such that it begins
off the start side of the
marquee
, and ends off the end side of the
marquee
For example, if the
direction
attribute is
left
(the default), then the
contents would start such that their left edge are off the side of the right edge of the
marquee
's
content area
, and the contents would then slide up to the
point where the
right
edge of the contents are flush with the left inner edge of the
marquee
's
content area
Once the animation has ended, the user agent is expected to
increment the marquee
current loop index
. If the element is still
turned
on
after this, then the user agent is expected to restart the animation.
If the element's
behavior
attribute is in the
alternate
state
When the
marquee current loop index
is even (or zero), slide the contents of the
element in the direction described by the
direction
attribute as defined below, such that it begins flush with the start side of the
marquee
, and ends flush with the end side of the
marquee
When the
marquee current loop index
is odd, slide the contents of the element in
the opposite direction than that described by the
direction
attribute as defined below, such that it begins
flush with the end side of the
marquee
, and ends flush with the start side of the
marquee
For example, if the
direction
attribute is
left
(the default), then the
contents would with their right edge flush with the right inner edge of the
marquee
's
content area
, and the contents would then slide up to the
point where the
left
edge of the contents are flush with the left inner edge of the
marquee
's
content area
Once the animation has ended, the user agent is expected to
increment the marquee
current loop index
. If the element is still
turned
on
after this, then the user agent is expected to continue the animation.
The
direction
attribute has the meanings described
in the following table:
direction
attribute state
Direction of animation
Start edge
End edge
Opposite direction
left
← Right to left
Right
Left
→ Left to Right
right
→ Left to Right
Left
Right
← Right to left
up
↑ Up (Bottom to Top)
Bottom
Top
↓ Down (Top to Bottom)
down
↓ Down (Top to Bottom)
Top
Bottom
↑ Up (Bottom to Top)
In any case, the animation should proceed such that there is a delay given by the
marquee
scroll interval
between each frame, and such that the content moves at most the distance
given by the
marquee scroll distance
with each frame.
When a
marquee
element has a
bgcolor
attribute set, the value is expected to be parsed using the
rules for parsing a legacy color
value
, and if that does not return an error, the user agent is expected to treat the
attribute as a
presentational hint
setting the element's
'background-color'
property to the resulting color.
The
width
and
height
attributes on a
marquee
element
map to the dimension properties
'width'
and
'height'
on the element respectively.
The
intrinsic height
of a
marquee
element with its
direction
attribute in the
up
or
down
states is 200
CSS
pixels
The
vspace
attribute of a
marquee
element
maps to the dimension
properties
'margin-top'
and
'margin-bottom'
on the element. The
hspace
attribute of a
marquee
element
maps to the dimension properties
'margin-left'
and
'margin-right'
on the element.
The
'overflow'
property on the
marquee
element is expected to be
ignored; overflow is expected to always be hidden.
15.5.13
The
meter
element
The
meter
element is expected to render as an
'inline-block'
box with
'height'
of '1em' and a
'width'
of '5em', a
'vertical-align'
of '-0.2em', and with its contents depicting a gauge.
When the element is wider than it is tall (or square), the depiction is expected to be of a
horizontal gauge, with the minimum value on the right if the
'direction'
property on
this element has a
computed value
of 'rtl', and on the left otherwise. When the
element is taller than it is wide, it is expected to depict a vertical gauge, with the minimum
value on the bottom.
User agents are expected to use a presentation consistent with platform conventions for gauges,
if any.
Requirements for what must be depicted in the gauge are
included in the definition of the
meter
element.
15.5.14
The
progress
element
The
progress
element is expected to render as an
'inline-block'
box
with a
'height'
of '1em' and a
'width'
of '10em', and a
'vertical-align'
of '-0.2em'.
When the
element is wider than it is tall, the element is expected to be depicted as a horizontal progress
bar, with the start on the right and the end on the left if the
'direction'
property
on this element has a
computed value
of 'rtl', and with the start on the left and the
end on the right otherwise. When the element is taller than it is wide, it is expected to be
depicted as a vertical progress bar, with the lowest value on the bottom. When the element is
square, it is expected to be depicted as a direction-independent progress widget (e.g. a circular
progress ring).
User agents are expected to use a presentation consistent with platform conventions for
progress bars. In particular, user agents are expected to use different presentations for
determinate and indeterminate progress bars. User agents are also expected to vary the
presentation based on the dimensions of the element.
For example, on some platforms for showing indeterminate progress there is a
"spinner" progress indicator with square dimensions, which could be used when the element is
square, and an indeterminate progress bar, which could be used when the element is wide.
Requirements for how to determine if the progress bar is determinate or
indeterminate, and what progress a determinate progress bar is to show, are included in the
definition of the
progress
element.
15.5.15
The
select
element
select
element is either a
list box
or a
drop-down box
, depending on its attributes.
select
element whose
multiple
attribute is present is expected to render as a multi-select
list box
select
element whose
multiple
attribute is absent, and whose
display size
is greater
than 1, is expected to render as a single-select
list box
When the element renders as a
list box
, it is expected to render as an
'inline-block'
box whose
'height'
is the height necessary to contain as
many rows for items as given by the element's
display
size
, or four rows if the attribute is absent, and whose
'width'
is the
width of the
select
's labels
plus the width of a scrollbar.
select
element whose
multiple
attribute is absent, and whose
display size
is 1, is
expected to render as a one-line
drop-down box
whose width is the
width of the
select
's labels
In either case (
list box
or
drop-down box
), the element's items are
expected to be the element's
list of options
with the element's
optgroup
element
children
providing headers for groups of options where applicable.
An
optgroup
element is expected to be rendered by displaying the element's
label
attribute.
An
option
element is expected to be rendered by displaying the element's
label
, indented under its
optgroup
element if it
has one.
The
width of the
select
's labels
is the wider of the width necessary to
render the widest
optgroup
, and the width necessary to render the widest
option
element in the element's
list of
options
(including its indent, if any).
If a
select
element contains a
placeholder label option
, the user
agent is expected to render that
option
in a manner that conveys that it is a label,
rather than a valid option of the control. This can include preventing the
placeholder label
option
from being explicitly selected by the user. When the
placeholder label
option
's
selectedness
is true, the control
is expected to be displayed in a fashion that indicates that no valid option is currently
selected.
User agents are expected to render the labels in a
select
in such a manner that
any alignment remains consistent whether the label is being displayed as part of the page or in a
menu control.
15.5.16
The
textarea
element
The
textarea
element is expected to render as an
'inline-block'
box
depicting a multiline text control. If this multiline text control provides a selection, then,
when the user changes the current selection, the user agent is expected to
queue an element
task
on the
user interaction task source
given the
textarea
element to
fire an event
named
select
at the element, with the
bubbles
attribute initialized to true.
If the element has a
cols
attribute, and parsing that
attribute's value using the
rules for parsing non-negative integers
doesn't generate
an error, then the user agent is expected to use the attribute as a
presentational hint
for the
'width'
property on the element, with the
value being the
textarea effective width
(as defined below). Otherwise, the user
agent is expected to act as if it had a user-agent-level style sheet rule setting the
'width'
property on the element to the
textarea effective width
The
textarea effective width
of a
textarea
element is
size
avg
sbw
, where
size
is the element's
character width
avg
is the average character width of the primary font of the element, in
CSS pixels
, and
sbw
is the width of a scrollbar, in
CSS pixels
. (The element's
'letter-spacing'
property does not
affect the result.)
If the element has a
rows
attribute, and parsing that
attribute's value using the
rules for parsing non-negative integers
doesn't generate
an error, then the user agent is expected to use the attribute as a
presentational hint
for the
'height'
property on the element, with the
value being the
textarea effective height
(as defined below). Otherwise, the user
agent is expected to act as if it had a user-agent-level style sheet rule setting the
'height'
property on the element to the
textarea effective height
The
textarea effective height
of a
textarea
element is the height in
CSS pixels
of the number of lines specified the element's
character height
, plus the height of a scrollbar in
CSS pixels
User agents are expected to apply the
'white-space'
CSS property to
textarea
elements. For historical reasons, if the element has a
wrap
attribute whose value is an
ASCII
case-insensitive
match for the string "
off
", then the user agent is expected to treat the attribute as a
presentational hint
setting the element's
'white-space'
property to 'pre'.
15.6
Frames and framesets
User agent are expected to render
frameset
elements as a box with the height and
width of the
viewport
, with a surface rendered according to the following layout
algorithm:
The
cols
and
rows
variables are lists of zero or more pairs consisting
of a number and a unit, the unit being one of
percentage
relative
, and
absolute
Use the
rules for parsing a list of dimensions
to parse the value of the
element's
cols
attribute, if there is one.
Let
cols
be the result, or an empty list if there is no such attribute.
Use the
rules for parsing a list of dimensions
to parse the value of the
element's
rows
attribute, if there is one.
Let
rows
be the result, or an empty list if there is no such attribute.
For any of the entries in
cols
or
rows
that have the number zero and
the unit
relative
, change the entry's number to one.
If
cols
has no entries, then add a single entry consisting of the value 1 and the
unit
relative
to
cols
If
rows
has no entries, then add a single entry consisting of the value 1 and the
unit
relative
to
rows
Invoke the algorithm defined below to
convert a list of dimensions to a list of pixel
values
using
cols
as the input list, and the width of the surface that the
frameset
is being rendered into, in
CSS pixels
, as the
input dimension. Let
sized cols
be the resulting list.
Invoke the algorithm defined below to
convert a list of dimensions to a list of pixel
values
using
rows
as the input list, and the height of the surface that the
frameset
is being rendered into, in
CSS pixels
, as the
input dimension. Let
sized rows
be the resulting list.
Split the surface into a grid of
rectangles, where
is the number of entries in
sized cols
and
is the number of entries in
sized rows
Size the columns so that each column in the grid is as many
CSS
pixels
wide as the corresponding entry in the
sized cols
list.
Size the rows so that each row in the grid is as many
CSS pixels
high as the corresponding entry in the
sized rows
list.
Let
children
be the list of
frame
and
frameset
elements
that are
children
of the
frameset
element
for which the algorithm was invoked.
For each row of the grid of rectangles created in the previous step, from top to bottom, run
these substeps:
For each rectangle in the row, from left to right, run these substeps:
If there are any elements left in
children
, take the first element in the
list, and assign it to the rectangle.
If this is a
frameset
element, then recurse the entire
frameset
layout algorithm for that
frameset
element, with the rectangle as the
surface.
Otherwise, it is a
frame
element; render its
nested browsing
context
, positioned and sized to fit the rectangle.
If there are any elements left in
children
, remove the first element from
children
If the
frameset
element
has a border
, draw an outer set of borders
around the rectangles, using the element's
frame border color
For each rectangle, if there is an element assigned to that rectangle, and that element
has a border
, draw an inner set of borders around that rectangle, using the
element's
frame border color
For each (visible) border that does not abut a rectangle that is assigned a
frame
element with a
noresize
attribute (including rectangles in further nested
frameset
elements), the user
agent is expected to allow the user to move the border, resizing the rectangles within, keeping
the proportions of any nested
frameset
grids.
frameset
or
frame
element
has a border
if the
following algorithm returns true:
If the element has a
frameborder
attribute whose value is not the
empty string and whose first character is either a U+0031 DIGIT ONE (1) character, a U+0079
LATIN SMALL LETTER Y character (y), or a U+0059 LATIN CAPITAL LETTER Y character (Y), then
return true.
Otherwise, if the element has a
frameborder
attribute, return
false.
Otherwise, if the element has a parent element that is a
frameset
element,
then return true if
that
element
has a border
, and false if it does
not.
Otherwise, return true.
The
frame border color
of a
frameset
or
frame
element is the color obtained from the following
algorithm:
If the element has a
bordercolor
attribute, and applying the
rules for parsing a legacy color value
to that attribute's value does not result
in an error, then return the color so obtained.
Otherwise, if the element has a parent element that is a
frameset
element,
then return the
frame border color
of that element.
Otherwise, return gray.
The algorithm to
convert a list of dimensions to a list of pixel values
consists of
the following steps:
Let
input list
be the list of numbers and units passed to the algorithm.
Let
output list
be a list of numbers the same length as
input list
, all
zero.
Entries in
output list
correspond to the entries in
input list
that
have the same position.
Let
input dimension
be the size passed to the algorithm.
Let
count percentage
be the number of entries in
input list
whose unit
is
percentage
Let
total percentage
be the sum of all the numbers in
input list
whose
unit is
percentage
Let
count relative
be the number of entries in
input list
whose unit is
relative
Let
total relative
be the sum of all the numbers in
input list
whose
unit is
relative
Let
count absolute
be the number of entries in
input list
whose unit is
absolute
Let
total absolute
be the sum of all the numbers in
input list
whose
unit is
absolute
Let
remaining space
be the value of
input dimension
If
total absolute
is greater than
remaining space
, then for each entry
in
input list
whose unit is
absolute
, set the corresponding value in
output list
to the number of the entry in
input list
multiplied by
remaining space
and divided by
total absolute
. Then, set
remaining
space
to zero.
Otherwise, for each entry in
input list
whose unit is
absolute
, set the
corresponding value in
output list
to the number of the entry in
input
list
. Then, decrement
remaining space
by
total absolute
If
total percentage
multiplied by the
input dimension
and divided by
100 is greater than
remaining space
, then for each entry in
input list
whose unit is
percentage
, set the corresponding value in
output list
to the
number of the entry in
input list
multiplied by
remaining space
and
divided by
total percentage
. Then, set
remaining space
to zero.
Otherwise, for each entry in
input list
whose unit is
percentage
, set the
corresponding value in
output list
to the number of the entry in
input
list
multiplied by the
input dimension
and divided by 100. Then, decrement
remaining space
by
total percentage
multiplied by the
input
dimension
and divided by 100.
For each entry in
input list
whose unit is
relative
, set the corresponding
value in
output list
to the number of the entry in
input list
multiplied
by
remaining space
and divided by
total relative
Return
output list
User agents working with integer values for frame widths (as opposed to user agents that can
lay frames out with subpixel accuracy) are expected to distribute the remainder first to the last
entry whose unit is
relative
, then equally (not proportionally) to each entry whose unit is
percentage
, then equally (not proportionally) to each entry whose unit is
absolute
and finally, failing all else, to the last entry.
The contents of a
frame
element that does not have a
frameset
parent
are expected to be rendered as
transparent black
; the user agent is expected to not
render its
nested browsing context
in this case, and its
nested browsing
context
is expected to have a
viewport
with zero width and zero height.
15.7
Interactive media
15.7.1
Links, forms, and navigation
User agents are expected to allow the user to control aspects of
hyperlink
activation and
form submission
, such as which
browsing context
is to be
used for the subsequent
User agents are expected to allow users to discover the destination of
hyperlinks
and of
forms
before triggering their
User agents are expected to inform the user of whether a
hyperlink
includes
hyperlink auditing
, and to let them know at a minimum which domains will be contacted
as part of such auditing.
User agents may allow users to
navigate
browsing contexts
to the URLs
indicated
by the
cite
attributes on
blockquote
ins
, and
del
elements.
User agents may surface
hyperlinks
created by
link
elements in their user interface, as discussed
previously
15.7.2
The
title
attribute
User agents are expected to expose the
advisory information
of elements upon user
request, and to make the user aware of the presence of such information.
On interactive graphical systems where the user can use a pointing device, this could take the
form of a tooltip. When the user is unable to use a pointing device, then the user agent is
expected to make the content available in some other fashion, e.g. by making the element a
focusable area
and always displaying the
advisory information
of the
currently
focused
element, or by showing the
advisory information
of the
elements under the user's finger on a touch device as the user pans around the screen.
U+000A LINE FEED (LF) characters are expected to cause line breaks in the tooltip; U+0009
CHARACTER TABULATION (tab) characters are expected to render as a nonzero horizontal shift that
lines up the next glyph with the next tab stop, with tab stops occurring at points that are
multiples of 8 times the width of a U+0020 SPACE character.
For example, a visual user agent could make elements with a
title
attribute
focusable
, and could make
any
focused
element with a
title
attribute
show its tooltip under the element while the element has focus. This would allow a user to tab
around the document to find all the advisory text.
As another example, a screen reader could provide an audio cue when reading an element with a
tooltip, with an associated key to read the last tooltip for which a cue was played.
15.7.3
Editing hosts
The current text editing caret (i.e. the
active range
, if it is empty and in an
editing host
), if any, is expected to act like an inline
replaced element
with the vertical dimensions of the caret and with zero width for
the purposes of the CSS rendering model.
This means that even an empty block can have the caret inside it, and that when
the caret is in such an element, it prevents
margins from
collapsing
through the element.
15.7.4
Text rendered in native user interfaces
User agents are expected to honor the Unicode semantics of text that is exposed in user
interfaces, for example supporting the bidirectional algorithm in text shown in dialogs, title
bars, popup menus, and tooltips. Text from the contents of elements is expected to be rendered in
a manner that honors
the directionality
of the element from which the text was
obtained. Text from attributes is expected to be rendered in a manner that honours the
directionality of the attribute
Consider the following markup, which has Hebrew text asking for a programming language, the
languages being text for which a left-to-right direction is important given the punctuation in
some of their names:
dir
"rtl"
lang
"he"
label
בחר שפת תכנות:
select
option
dir
"ltr"
C++
option
option
dir
"ltr"
C#
option
option
dir
"ltr"
FreePascal
option
option
dir
"ltr"
F#
option
select
label
If the
select
element was rendered as a drop down box, a correct rendering would
ensure that the punctuation was the same both in the drop down, and in the box showing the
current selection.
The directionality of attributes depends on the attribute and on the element's
dir
attribute, as the following example demonstrates. Consider this
markup:
table
tr
th
abbr
"(א"
dir
ltr
th
abbr
"(א"
dir
rtl
th
abbr
"(א"
dir
auto
table
If the
abbr
attributes are rendered, e.g. in a tooltip or
other user interface, the first will have a left parenthesis (because the direction is 'ltr'),
the second will have a right parenthesis (because the direction is 'rtl'), and the third will
have a right parenthesis (because the direction is determined
from the attribute value
to be 'rtl').
However, if instead the attribute was not a
directionality-capable attribute
, the
results would be different:
table
tr
th
data-abbr
"(א"
dir
ltr
th
data-abbr
"(א"
dir
rtl
th
data-abbr
"(א"
dir
auto
table
In this case, if the user agent were to expose the
data-abbr
attribute
in the user interface (e.g. in a debugging environment), the last case would be rendered with a
left
parenthesis, because the direction would be determined from the element's
contents.
A string provided by a script (e.g. the argument to
window.alert()
) is expected to be treated as an independent set of one or
more bidirectional algorithm paragraphs when displayed, as defined by the bidirectional algorithm,
including, for instance, supporting the paragraph-breaking behavior of U+000A LINE FEED (LF)
characters. For the purposes of determining the paragraph level of such text in the bidirectional
algorithm, this specification does
not
provide a higher-level override of rules P2 and
P3.
[BIDI]
When necessary, authors can enforce a particular direction for a given paragraph by starting it
with the Unicode U+200E LEFT-TO-RIGHT MARK or U+200F RIGHT-TO-LEFT MARK characters.
Thus, the following script:
alert
'\u05DC\u05DE\u05D3 HTML \u05D4\u05D9\u05D5\u05DD!'
...would always result in a message reading
למד LMTH היום!
(not "
דמל HTML םויה!
"),
regardless of the language of the user agent interface or the
direction of the page or any of its elements.
For a more complex example, consider the following script:
/* Warning: this script does not handle right-to-left scripts correctly */
var
if
prompt
'What is your name?'
))
alert
'! Ok, Fred, '
', and Wilma will get the car.'
);
When the user enters "
Kitty
", the user agent would alert "
Kitty! Ok, Fred,
Kitty, and Wilma will get the car.
". However, if the user enters "
لا أفهم
", then the bidirectional
algorithm will determine that the direction of the paragraph is right-to-left, and so the output
will be the following unintended mess: "
لا أفهم! derF ,kO, لا أفهم, rac eht teg lliw amliW dna.
To force an alert that starts with user-provided text (or other text of unknown
directionality) to render left-to-right, the string can be prefixed with a U+200E LEFT-TO-RIGHT
MARK character:
var
if
prompt
'What is your name?'
))
alert
\u200E
'! Ok, Fred, '
', and Wilma will get the car.'
);
15.8
Print media
User agents are expected to allow the user to request the opportunity to
obtain a physical
form
(or a representation of a physical form) of a
Document
. For example,
selecting the option to print a page or convert it to PDF format.
[PDF]
When the user actually
obtains a physical form
(or
a representation of a physical form) of a
Document
, the user agent is expected to
create a new rendering of the
Document
for the print media.
15.9
Unstyled XML documents
HTML user agents may, in certain circumstances, find themselves rendering non-HTML documents
that use vocabularies for which they lack any built-in knowledge. This section provides for a way
for user agents to handle such documents in a somewhat useful manner.
While a
Document
is an
unstyled document
, the user agent is expected
to render
an unstyled document view
Document
is an
unstyled document
while it matches the following
conditions:
The
Document
has no author style sheets (whether referenced by HTTP headers, processing instructions, elements like
link
, inline elements like
style
, or any other mechanism).
None of the elements in the
Document
have any
presentational hints
None of the elements in the
Document
have any
style attributes
None of the elements in the
Document
are in any of the following namespaces:
HTML namespace
SVG namespace
MathML namespace
The
Document
has no
focusable area
(e.g. from XLink) other than the
viewport
The
Document
has no
hyperlinks
(e.g. from XLink).
There exists no
script
whose
settings object
specifies this
Document
as the
responsible document
None of the elements in the
Document
have any registered event listeners.
An unstyled document view
is one where the DOM is not rendered according to CSS
(which would, since there are no applicable styles in this context, just result in a wall of
text), but is instead rendered in a manner that is useful for a developer. This could consist of
just showing the
Document
object's source, maybe with syntax highlighting, or it
could consist of displaying just the DOM tree, or simply a message saying that the page is not a
styled document.
If a
Document
stops being an
unstyled document
, then the
conditions above stop applying, and thus a user agent following these requirements will switch to
using the regular CSS rendering.
16
Obsolete features
16.1
Obsolete but conforming features
Features listed in this section will trigger warnings in conformance checkers.
Authors should not specify a
border
attribute on an
img
element. If the attribute is present, its value must be the string "
". CSS should be used instead.
Authors should not specify a
charset
attribute on a
script
element. If the attribute is present, its value must be an
ASCII
case-insensitive
match for "
utf-8
". (This has no effect in a
document that conforms to the requirements elsewhere in this standard of being encoded as
UTF-8
.)
Authors should not specify a
language
attribute on a
script
element. If the attribute is present, its value must be an
ASCII
case-insensitive
match for the string "
JavaScript
" and either the
type
attribute must be omitted or its value must be an
ASCII case-insensitive
match for the string "
text/javascript
".
The attribute should be entirely omitted instead (with the value "
JavaScript
", it has no effect), or replaced with use of the
type
attribute.
Authors should not specify a value for the
type
attribute on
script
elements that is the empty string or a
JavaScript MIME type
essence match
. Instead, they should omit the attribute, which has the same effect.
Authors should not specify a
type
attribute on a
style
element. If the attribute is present, its value must be an
ASCII
case-insensitive
match for "
text/css
".
Authors should not specify the
name
attribute on
elements. If the attribute is present, its value must not be the empty string and
must neither be equal to the value of any of the
IDs
in the
element's
tree
other than the element's own
ID
, if
any, nor be equal to the value of any of the other
name
attributes on
elements in the element's
tree
. If this attribute is
present and the element has an
ID
, then the attribute's value
must be equal to the element's
ID
. In earlier versions of the
language, this attribute was intended as a way to specify possible targets for
fragments
in
URLs
. The
id
attribute should be used instead.
Authors should not, but may despite requirements to the contrary elsewhere in this
specification, specify the
maxlength
and
size
attributes on
input
elements whose
type
attributes are in the
Number
state. One valid reason for using these attributes
regardless is to help legacy user agents that do not support
input
elements with
type="number"
to still render the text control with a useful width.
16.1.1
Warnings for obsolete but conforming features
To ease the transition from HTML4 Transitional documents to the language defined in
this
specification, and to discourage certain features that are only allowed in very few
circumstances, conformance checkers must warn the user when the following features are used in a
document. These are generally old obsolete features that have no effect, and are allowed only to
distinguish between likely mistakes (regular conformance errors) and mere vestigial markup or
unusual and discouraged practices (these warnings).
The following features must be categorized as described
above:
The presence of a
border
attribute on an
img
element if its value is the string "
".
The presence of a
charset
attribute on a
script
element if its value is an
ASCII case-insensitive
match for
utf-8
".
The presence of a
language
attribute on a
script
element if its value is an
ASCII case-insensitive
match for the
string "
JavaScript
" and if there is no
type
attribute or there is and its value is an
ASCII
case-insensitive
match for the string "
text/javascript
".
The presence of a
type
attribute on a
script
element if its value is a
JavaScript MIME type essence
match
The presence of a
type
attribute on a
style
element if its value is an
ASCII case-insensitive
match for
text/css
".
The presence of a
name
attribute on an
element, if its value is not the empty string.
The presence of a
maxlength
attribute on an
input
element whose
type
attribute is in the
Number
state.
The presence of a
size
attribute on an
input
element whose
type
attribute is in the
Number
state.
Conformance checkers must distinguish between pages that have no conformance errors and have
none of these obsolete features, and pages that have no conformance errors but do have some of
these obsolete features.
For example, a validator could report some pages as "Valid HTML" and others as
"Valid HTML with warnings".
16.2
Non-conforming features
Elements in the following list are entirely obsolete, and must not be used by authors:
applet
Use
embed
or
object
instead.
acronym
Use
abbr
instead.
bgsound
Use
audio
instead.
dir
Use
ul
instead.
frame
frameset
noframes
Either use
iframe
and CSS instead, or use server-side includes to generate complete pages with the various invariant parts merged in.
isindex
Use an explicit
form
and
text control
combination instead.
keygen
For enterprise device management use cases, use native on-device management capabilities.
For certificate enrollment use cases, use the Web Cryptography API to generate a keypair for
the certificate, and then export the certificate and key to allow the user to install them
manually.
[WEBCRYPTO]
listing
Use
pre
and
code
instead.
menuitem
To implement a custom context menu, use script to handle the
contextmenu
event.
nextid
Use GUIDs instead.
noembed
Use
object
instead of
embed
when fallback is necessary.
plaintext
Use the "
text/plain
MIME type
instead.
rb
rtc
Providing the ruby base directly inside the
ruby
element or using nested
ruby
elements is sufficient.
strike
Use
del
instead if the element is marking an edit, otherwise use
instead.
xmp
Use
pre
and
code
instead, and escape "
" and "
" characters as "
<
" and "
&
" respectively.
basefont
big
blink
center
font
marquee
multicol
nobr
spacer
tt
Use appropriate elements or CSS instead.
Where the
tt
element would have been used for marking up keyboard input,
consider the
kbd
element; for variables, consider the
var
element; for
computer code, consider the
code
element; and for computer output, consider the
samp
element.
Similarly, if the
big
element is being used to denote a heading, consider using
the
h1
element; if it is being used for marking up important passages, consider the
strong
element; and if it is being used for highlighting text for reference
purposes, consider the
mark
element.
See also the
text-level semantics usage summary
for more
suggestions with examples.
The following attributes are obsolete (though the elements are still part of the language), and
must not be used by authors:
charset
on
elements
charset
on
link
elements
Use an HTTP `
Content-Type
` header on the linked resource instead.
charset
on
script
elements (except as noted in the previous section)
Omit the attribute. Both documents and scripts are required to use
UTF-8
, so
it is redundant to specify it on the
script
element since it inherits from the
document.
coords
on
elements
shape
on
elements
Use
area
instead of
for image maps.
methods
on
elements
methods
on
link
elements
Use the HTTP OPTIONS feature instead.
name
on
elements (except as noted in the previous section)
name
on
embed
elements
name
on
img
elements
name
on
option
elements
Use the
id
attribute instead.
rev
on
elements
rev
on
link
elements
Use the
rel
attribute instead, with an opposite term. (For example, instead of
rev="made"
, use
rel="author"
.)
urn
on
elements
urn
on
link
elements
Specify the preferred persistent identifier using the
href
attribute instead.
accept
on
form
elements
Use the
accept
attribute directly on the
input
elements instead.
hreflang
on
area
elements
type
on
area
elements
These attributes do not do anything useful, and for historical reasons there are no
corresponding IDL attributes on
area
elements. Omit them altogether.
nohref
on
area
elements
Omitting the
href
attribute is sufficient; the
nohref
attribute is
unnecessary. Omit it altogether.
profile
on
head
elements
Unnecessary. Omit it altogether.
manifest
on
html
elements
Use service workers instead.
[SW]
version
on
html
elements
Unnecessary. Omit it altogether.
ismap
on
input
elements
Unnecessary. Omit it altogether. All
input
elements with a
type
attribute in the
Image
Button
state are processed as server-side image maps.
usemap
on
input
elements
usemap
on
object
elements
Use the
img
element for image maps.
longdesc
on
iframe
elements
longdesc
on
img
elements
Use a regular
element to link to the
description, or (in the case of images) use an
image
map
to provide a link from the image to the image's
description.
lowsrc
on
img
elements
Use a progressive JPEG image (given in the
src
attribute),
instead of using two separate images.
target
on
link
elements
Unnecessary. Omit it altogether.
type
on
elements
To implement a custom context menu, use script to handle the
contextmenu
event. For toolbar menus, omit the
attribute.
label
on
elements
contextmenu
on all elements
onshow
on all elements
To implement a custom context menu, use script to handle the
contextmenu
event.
scheme
on
meta
elements
Use only one scheme per field, or make the scheme declaration part of the value.
archive
on
object
elements
classid
on
object
elements
code
on
object
elements
codebase
on
object
elements
codetype
on
object
elements
Use the
data
and
type
attributes to invoke
plugins
. To set parameters with these names
in particular, the
param
element can be used.
declare
on
object
elements
Repeat the
object
element completely each time the resource is to be reused.
standby
on
object
elements
Optimize the linked resource so that it loads quickly or, at least, incrementally.
typemustmatch
on
object
elements
Avoid using
object
elements with untrusted resources.
type
on
param
elements
valuetype
on
param
elements
Use the
name
and
value
attributes without declaring
value types.
language
on
script
elements (except as noted in the previous section)
Omit the attribute for JavaScript; for
data blocks
, use
the
type
attribute instead.
event
on
script
elements
for
on
script
elements
Use DOM events mechanisms to register event listeners.
[DOM]
type
on
style
elements (except as noted in the previous section)
Omit the attribute for CSS; for
data blocks
, use
script
as the container instead of
style
datapagesize
on
table
elements
Unnecessary. Omit it altogether.
summary
on
table
elements
Use one of the
techniques for describing
tables
given in the
table
section instead.
abbr
on
td
elements
Use text that begins in an unambiguous and terse manner, and include any more elaborate text after that. The
title
attribute can also be useful in including more detailed text, so that the cell's contents can be made terse. If it's a heading, use
th
(which has an
abbr
attribute).
axis
on
td
and
th
elements
Use the
scope
attribute on the relevant
th
scope
on
td
elements
Use
th
elements for heading cells.
datasrc
on
button
div
frame
iframe
img
input
label
legend
marquee
object
option
select
span
table
, and
textarea
elements
datafld
on
button
div
fieldset
frame
iframe
img
input
label
legend
marquee
object
param
select
span
, and
textarea
elements
dataformatas
on
button
div
input
label
legend
marquee
object
option
select
span
, and
table
elements
Use script and a mechanism such as
XMLHttpRequest
to populate the page dynamically.
[XHR]
dropzone
on all elements
Use script to handle the
dragenter
and
dragover
events instead.
alink
on
body
elements
bgcolor
on
body
elements
bottommargin
on
body
elements
leftmargin
on
body
elements
link
on
body
elements
marginheight
on
body
elements
marginwidth
on
body
elements
rightmargin
on
body
elements
text
on
body
elements
topmargin
on
body
elements
vlink
on
body
elements
clear
on
br
elements
align
on
caption
elements
align
on
col
elements
char
on
col
elements
charoff
on
col
elements
valign
on
col
elements
width
on
col
elements
align
on
div
elements
compact
on
dl
elements
align
on
embed
elements
hspace
on
embed
elements
vspace
on
embed
elements
align
on
hr
elements
color
on
hr
elements
noshade
on
hr
elements
size
on
hr
elements
width
on
hr
elements
align
on
h1
h6
elements
align
on
iframe
elements
allowtransparency
on
iframe
elements
frameborder
on
iframe
elements
framespacing
on
iframe
elements
hspace
on
iframe
elements
marginheight
on
iframe
elements
marginwidth
on
iframe
elements
scrolling
on
iframe
elements
vspace
on
iframe
elements
align
on
input
elements
border
on
input
elements
hspace
on
input
elements
vspace
on
input
elements
align
on
img
elements
border
on
img
elements (except as noted in the previous section)
hspace
on
img
elements
vspace
on
img
elements
align
on
legend
elements
type
on
li
elements
compact
on
elements
align
on
object
elements
border
on
object
elements
hspace
on
object
elements
vspace
on
object
elements
compact
on
ol
elements
align
on
elements
width
on
pre
elements
align
on
table
elements
bgcolor
on
table
elements
border
on
table
elements
bordercolor
on
table
elements
cellpadding
on
table
elements
cellspacing
on
table
elements
frame
on
table
elements
height
on
table
elements
rules
on
table
elements
width
on
table
elements
align
on
tbody
thead
, and
tfoot
elements
char
on
tbody
thead
, and
tfoot
elements
charoff
on
tbody
thead
, and
tfoot
elements
height
on
thead
tbody
, and
tfoot
elements
valign
on
tbody
thead
, and
tfoot
elements
align
on
td
and
th
elements
bgcolor
on
td
and
th
elements
char
on
td
and
th
elements
charoff
on
td
and
th
elements
height
on
td
and
th
elements
nowrap
on
td
and
th
elements
valign
on
td
and
th
elements
width
on
td
and
th
elements
align
on
tr
elements
bgcolor
on
tr
elements
char
on
tr
elements
charoff
on
tr
elements
height
on
tr
elements
valign
on
tr
elements
compact
on
ul
elements
type
on
ul
elements
background
on
body
table
thead
tbody
tfoot
tr
td
, and
th
elements
Use CSS instead.
16.3
Requirements for implementations
16.3.1
The
marquee
element
The
marquee
element is a presentational element that animates content. CSS
transitions and animations are a more appropriate mechanism.
[CSSANIMATIONS]
[CSSTRANSITIONS]
The
marquee
element must implement the
HTMLMarqueeElement
interface.
Exposed
Window
interface
HTMLMarqueeElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
attribute
DOMString
behavior
CEReactions
attribute
DOMString
bgColor
CEReactions
attribute
DOMString
direction
CEReactions
attribute
DOMString
height
CEReactions
attribute
unsigned
long
hspace
CEReactions
attribute
long
loop
CEReactions
attribute
unsigned
long
scrollAmount
CEReactions
attribute
unsigned
long
scrollDelay
CEReactions
attribute
boolean
trueSpeed
CEReactions
attribute
unsigned
long
vspace
CEReactions
attribute
DOMString
width
undefined
start
();
undefined
stop
();
};
marquee
element can be
turned on
or
turned off
. When it is created, it is
turned on
When the
start()
method is called, the
marquee
element
must be
turned on
When the
stop()
method is called, the
marquee
element
must be
turned off
The
behavior
content attribute on
marquee
elements is an
enumerated attribute
with
the following keywords (all non-conforming):
Keyword
State
scroll
scroll
slide
slide
alternate
alternate
The
missing value default
and
invalid value default
are the
scroll
state.
The
direction
content attribute on
marquee
elements is an
enumerated attribute
with the following keywords (all
non-conforming):
Keyword
State
left
left
right
right
up
up
down
down
The
missing value default
and
invalid value default
are the
left
state.
The
truespeed
content attribute on
marquee
elements is a
boolean attribute
marquee
element has a
marquee scroll interval
, which is obtained as
follows:
If the element has a
scrolldelay
attribute,
and parsing its value using the
rules for parsing non-negative integers
does not
return an error, then let
delay
be the parsed value. Otherwise, let
delay
be 85.
If the element does not have a
truespeed
attribute, and the
delay
value is less than 60, then let
delay
be 60
instead.
The
marquee scroll interval
is
delay
, interpreted in
milliseconds.
marquee
element has a
marquee scroll distance
, which, if the element
has a
scrollamount
attribute, and
parsing its value using the
rules for parsing non-negative integers
does not return
an error, is the parsed value interpreted in
CSS pixels
, and otherwise
is 6
CSS pixels
marquee
element has a
marquee loop count
, which, if the element has a
loop
attribute, and
parsing its value using the
rules for parsing integers
does not return an error or a
number less than 1, is the parsed value, and otherwise is −1.
The
loop
IDL attribute, on getting, must return the element's
marquee loop count
; and on
setting, if the new value is different than the element's
marquee loop count
and
either greater than zero or equal to −1, must set the element's
loop
content attribute (adding it if necessary) to the
valid integer
that represents the new value. (Other values are ignored.)
marquee
element also has a
marquee current loop index
, which is zero
when the element is created.
The rendering layer will occasionally
increment the marquee current loop index
which must cause the following steps to be run:
If the
marquee loop count
is −1, then return.
Increment the
marquee current loop index
by one.
If the
marquee current loop index
is now equal to or greater than the
element's
marquee loop count
turn off
the
marquee
element.
The
behavior
direction
height
hspace
vspace
, and
width
IDL attributes must
reflect
the respective content attributes of the same name.
The
bgColor
IDL attribute must
reflect
the
bgcolor
content attribute.
The
scrollAmount
IDL attribute must
reflect
the
scrollamount
content attribute. The default value is 6.
The
scrollDelay
IDL attribute must
reflect
the
scrolldelay
content attribute. The
default value is 85.
The
trueSpeed
IDL attribute must
reflect
the
truespeed
content attribute.
16.3.2
Frames
The
frameset
element acts as
the body element
in
documents that use frames.
The
frameset
element must implement the
HTMLFrameSetElement
interface.
Exposed
Window
interface
HTMLFrameSetElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
attribute
DOMString
cols
CEReactions
attribute
DOMString
rows
};
HTMLFrameSetElement
includes
WindowEventHandlers
The
cols
and
rows
IDL attributes of the
frameset
element must
reflect
the respective
content attributes of the same name.
The
frameset
element exposes as
event handler content attributes
number of the
event handlers
of the
Window
object. It also mirrors their
event handler IDL attributes
The
event handlers
of the
Window
object named by the
Window
-reflecting body element event handler set
, exposed on the
frameset
element, replace the generic
event handlers
with the same names
normally supported by
HTML elements
The
frame
element has a
nested browsing context
similar to the
iframe
element, but rendered within a
frameset
element.
frame
element is said to be an
active
frame
element
when
it is
in a document
When a
frame
element
element
is created as an
active
frame
element
, or becomes an
active
frame
element
after not having been one, the user agent must run these steps:
Create a new nested browsing context
for
element
Process the
frame
attributes
for
element
, with
initialInsertion
set to true.
When a
frame
element stops being an
active
frame
element
, the user agent must
discard
the element's
nested browsing context
, and then set the element's
nested
browsing context
to null.
Whenever a
frame
element with a non-null
nested browsing context
has
its
src
attribute set, changed, or removed, the
user agent must
process the
frame
attributes
To
process the
frame
attributes
for an element
element
, with
an optional boolean
initialInsertion
If
element
has a
src
attribute
specified, or
initialInsertion
is false, then run the
shared attribute
processing steps for
iframe
and
frame
elements
given
element
The
frame
element
potentially delays the load event
The
frame
element must implement the
HTMLFrameElement
interface.
Exposed
Window
interface
HTMLFrameElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
attribute
DOMString
name
CEReactions
attribute
DOMString
scrolling
CEReactions
attribute
USVString
src
CEReactions
attribute
DOMString
frameBorder
CEReactions
attribute
USVString
longDesc
CEReactions
attribute
boolean
noResize
readonly
attribute
Document
contentDocument
readonly
attribute
WindowProxy
contentWindow

CEReactions
attribute
LegacyNullToEmptyString
DOMString
marginHeight
CEReactions
attribute
LegacyNullToEmptyString
DOMString
marginWidth
};
The
name
scrolling
, and
src
IDL attributes
of the
frame
element must
reflect
the respective content attributes of
the same name. For the purposes of reflection, the
frame
element's
src
content attribute is defined as containing a
URL
The
frameBorder
IDL attribute of the
frame
element must
reflect
the element's
frameborder
content attribute.
The
longDesc
IDL attribute of the
frame
element
must
reflect
the element's
longdesc
content attribute, which for the purposes of
reflection is defined as containing a
URL
The
noResize
IDL attribute of the
frame
element
must
reflect
the element's
noresize
content attribute.
The
contentDocument
IDL attribute, on getting, must
return the
frame
element's
content
document
The
contentWindow
IDL attribute must return the
WindowProxy
object of the
frame
element's
nested browsing
context
, if the element's
nested browsing context
is non-null, or return null
otherwise.
The
marginHeight
IDL attribute of the
frame
element must
reflect
the element's
marginheight
content attribute.
The
marginWidth
IDL attribute of the
frame
element must
reflect
the element's
marginwidth
content attribute.
16.3.3
Other elements, attributes and APIs
User agents must treat
acronym
elements in a manner
equivalent to
abbr
elements in terms of semantics and
for purposes of rendering.
partial
interface
HTMLAnchorElement
CEReactions
attribute
DOMString
coords
CEReactions
attribute
DOMString
charset
CEReactions
attribute
DOMString
name
CEReactions
attribute
DOMString
rev
CEReactions
attribute
DOMString
shape
};
The
coords
charset
name
rev
, and
shape
IDL attributes of the
element must
reflect
the respective content attributes of the same
name.
partial
interface
HTMLAreaElement
CEReactions
attribute
boolean
noHref
};
The
noHref
IDL
attribute of the
area
element must
reflect
the element's
nohref
content attribute.
partial
interface
HTMLBodyElement
CEReactions
attribute
LegacyNullToEmptyString
DOMString
text
CEReactions
attribute
LegacyNullToEmptyString
DOMString
link
CEReactions
attribute
LegacyNullToEmptyString
DOMString
vLink
CEReactions
attribute
LegacyNullToEmptyString
DOMString
aLink
CEReactions
attribute
LegacyNullToEmptyString
DOMString
bgColor
CEReactions
attribute
DOMString
background
};
The
text
IDL
attribute of the
body
element must
reflect
the element's
text
content attribute.
The
link
IDL
attribute of the
body
element must
reflect
the element's
link
content attribute.
The
aLink
IDL
attribute of the
body
element must
reflect
the element's
alink
content attribute.
The
vLink
IDL
attribute of the
body
element must
reflect
the element's
vlink
content attribute.
The
bgColor
IDL attribute of the
body
element must
reflect
the element's
bgcolor
content attribute.
The
background
IDL attribute of the
body
element must
reflect
the element's
background
content attribute. (The
background
content is
not
defined to contain a
URL
, despite rules regarding its handling in the Rendering
section above.)
partial
interface
HTMLBRElement
CEReactions
attribute
DOMString
clear
};
The
clear
IDL
attribute of the
br
element must
reflect
the content attribute of the
same name.
partial
interface
HTMLTableCaptionElement
CEReactions
attribute
DOMString
align
};
The
align
IDL attribute of the
caption
element
must
reflect
the content attribute of the same name.
partial
interface
HTMLTableColElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
ch
CEReactions
attribute
DOMString
chOff
CEReactions
attribute
DOMString
vAlign
CEReactions
attribute
DOMString
width
};
The
align
and
width
IDL
attributes of the
col
element must
reflect
the respective content
attributes of the same name.
The
ch
IDL
attribute of the
col
element must
reflect
the element's
char
content attribute.
The
chOff
IDL attribute of the
col
element must
reflect
the element's
charoff
content attribute.
The
vAlign
IDL attribute of the
col
element must
reflect
the element's
valign
content attribute.
User agents must treat
dir
elements in a manner equivalent to
ul
elements in terms of semantics and for purposes of rendering.
The
dir
element must implement the
HTMLDirectoryElement
interface.
Exposed
Window
interface
HTMLDirectoryElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
attribute
boolean
compact
};
The
compact
IDL attribute of the
dir
element must
reflect
the content attribute of the same name.
partial
interface
HTMLDivElement
CEReactions
attribute
DOMString
align
};
The
align
IDL
attribute of the
div
element must
reflect
the content attribute of the
same name.
partial
interface
HTMLDListElement
CEReactions
attribute
boolean
compact
};
The
compact
IDL attribute of the
dl
element must
reflect
the content attribute of
the same name.
partial
interface
HTMLEmbedElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
name
};
The
name
and
align
IDL
attributes of the
embed
element must
reflect
the respective content
attributes of the same name.
The
font
element must implement the
HTMLFontElement
interface.
Exposed
Window
interface
HTMLFontElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
attribute
LegacyNullToEmptyString
DOMString
color
CEReactions
attribute
DOMString
face
CEReactions
attribute
DOMString
size
};
The
color
face
, and
size
IDL attributes of the
font
element must
reflect
the respective content attributes of the same
name.
partial
interface
HTMLHeadingElement
CEReactions
attribute
DOMString
align
};
The
align
IDL
attribute of the
h1
h6
elements must
reflect
the
content attribute of the same name.
The
profile
IDL attribute on
head
elements (with
the
HTMLHeadElement
interface) is intentionally omitted. Unless so required by
another applicable specification
, implementations
would therefore not support this attribute. (It is mentioned here as it was defined in a previous
version of
DOM
.)
partial
interface
HTMLHRElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
color
CEReactions
attribute
boolean
noShade
CEReactions
attribute
DOMString
size
CEReactions
attribute
DOMString
width
};
The
align
color
size
, and
width
IDL attributes of the
hr
element must
reflect
the respective content attributes of the same
name.
The
noShade
IDL
attribute of the
hr
element must
reflect
the element's
noshade
content attribute.
partial
interface
HTMLHtmlElement
CEReactions
attribute
DOMString
version
};
The
version
IDL attribute of the
html
element must
reflect
the content attribute of
the same name.
partial
interface
HTMLIFrameElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
scrolling
CEReactions
attribute
DOMString
frameBorder
CEReactions
attribute
USVString
longDesc

CEReactions
attribute
LegacyNullToEmptyString
DOMString
marginHeight
CEReactions
attribute
LegacyNullToEmptyString
DOMString
marginWidth
};
The
align
and
scrolling
IDL attributes of the
iframe
element must
reflect
the respective content attributes of the same name.
The
frameBorder
IDL attribute of the
iframe
element must
reflect
the element's
frameborder
content attribute.
The
longDesc
IDL attribute of the
iframe
element must
reflect
the element's
longdesc
content attribute, which for the purposes of
reflection is defined as containing a
URL
The
marginHeight
IDL attribute of the
iframe
element must
reflect
the element's
marginheight
content attribute.
The
marginWidth
IDL attribute of the
iframe
element must
reflect
the element's
marginwidth
content attribute.
partial
interface
HTMLImageElement
CEReactions
attribute
DOMString
name
CEReactions
attribute
USVString
lowsrc
CEReactions
attribute
DOMString
align
CEReactions
attribute
unsigned
long
hspace
CEReactions
attribute
unsigned
long
vspace
CEReactions
attribute
USVString
longDesc

CEReactions
attribute
LegacyNullToEmptyString
DOMString
border
};
The
name
align
border
hspace
, and
vspace
IDL attributes of the
img
element must
reflect
the respective content attributes of the same
name.
The
longDesc
IDL attribute of the
img
element must
reflect
the element's
longdesc
content attribute, which for the purposes of reflection
is defined as containing a
URL
The
lowsrc
IDL
attribute of the
img
element must
reflect
the element's
lowsrc
content attribute, which for the purposes of reflection is
defined as containing a
URL
partial
interface
HTMLInputElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
useMap
};
The
align
IDL
attribute of the
input
element must
reflect
the content attribute of the
same name.
The
useMap
IDL attribute of the
input
element must
reflect
the element's
usemap
content attribute.
partial
interface
HTMLLegendElement
CEReactions
attribute
DOMString
align
};
The
align
IDL attribute of the
legend
element must
reflect
the content attribute
of the same name.
partial
interface
HTMLLIElement
CEReactions
attribute
DOMString
type
};
The
type
IDL
attribute of the
li
element must
reflect
the content attribute of the
same name.
partial
interface
HTMLLinkElement
CEReactions
attribute
DOMString
charset
CEReactions
attribute
DOMString
rev
CEReactions
attribute
DOMString
target
};
The
charset
rev
, and
target
IDL attributes
of the
link
element must
reflect
the respective content attributes of
the same name.
User agents must treat
listing
elements in a manner equivalent to
pre
elements in terms of semantics and for purposes of rendering.
partial
interface
HTMLMenuElement
CEReactions
attribute
boolean
compact
};
The
compact
IDL attribute of the
element must
reflect
the content attribute of
the same name.
partial
interface
HTMLMetaElement
CEReactions
attribute
DOMString
scheme
};
User agents may treat the
scheme
content attribute on the
meta
element as an extension of the element's
name
content attribute when processing a
meta
element
with a
name
attribute whose value is one that the user agent
recognizes as supporting the
scheme
attribute.
User agents are encouraged to ignore the
scheme
attribute
and instead process the value given to the metadata name as if it had been specified for each
expected value of the
scheme
attribute.
For example, if the user agent acts on
meta
elements with
name
attributes having the value "eGMS.subject.keyword", and knows
that the
scheme
attribute is used with this metadata name,
then it could take the
scheme
attribute into account,
acting as if it was an extension of the
name
attribute. Thus
the following two
meta
elements could be treated as two elements giving values for
two different metadata names, one consisting of a combination of "eGMS.subject.keyword" and
"LGCL", and the other consisting of a combination of "eGMS.subject.keyword" and "ORLY":

meta
name
"eGMS.subject.keyword"
scheme
"LGCL"
content
"Abandoned vehicles"
meta
name
"eGMS.subject.keyword"
scheme
"ORLY"
content
"Mah car: kthxbye"
The suggested processing of this markup, however, would be equivalent to the following:
meta
name
"eGMS.subject.keyword"
content
"Abandoned vehicles"
meta
name
"eGMS.subject.keyword"
content
"Mah car: kthxbye"
The
scheme
IDL
attribute of the
meta
element must
reflect
the content attribute of the
same name.
partial
interface
HTMLObjectElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
archive
CEReactions
attribute
DOMString
code
CEReactions
attribute
boolean
declare
CEReactions
attribute
unsigned
long
hspace
CEReactions
attribute
DOMString
standby
CEReactions
attribute
unsigned
long
vspace
CEReactions
attribute
DOMString
codeBase
CEReactions
attribute
DOMString
codeType
CEReactions
attribute
DOMString
useMap

CEReactions
attribute
LegacyNullToEmptyString
DOMString
border
};
The
align
archive
border
code
declare
hspace
standby
, and
vspace
IDL attributes of the
object
element must
reflect
the respective content attributes of the
same name.
The
codeBase
IDL attribute of the
object
element must
reflect
the element's
codebase
content attribute, which for the purposes of
reflection is defined as containing a
URL
The
codeType
IDL attribute of the
object
element must
reflect
the element's
codetype
content attribute.
HTMLObjectElement/useMap
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
12.1+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
6+
Firefox Android
4+
Safari iOS
1+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12.1+
The
useMap
IDL attribute must
reflect
the
usemap
content attribute.
partial
interface
HTMLOListElement
CEReactions
attribute
boolean
compact
};
The
compact
IDL attribute of the
ol
element must
reflect
the content attribute of
the same name.
partial
interface
HTMLParagraphElement
CEReactions
attribute
DOMString
align
};
The
align
IDL
attribute of the
element must
reflect
the content attribute of the
same name.
partial
interface
HTMLParamElement
CEReactions
attribute
DOMString
type
CEReactions
attribute
DOMString
valueType
};
The
type
IDL
attribute of the
param
element must
reflect
the content attribute of the
same name.
The
valueType
IDL attribute of the
param
element must
reflect
the element's
valuetype
content attribute.
User agents must treat
plaintext
elements in a manner equivalent to
pre
elements in terms of semantics and for purposes of rendering. (The parser has
special behavior for this element, though.)
partial
interface
HTMLPreElement
CEReactions
attribute
long
width
};
The
width
IDL
attribute of the
pre
element must
reflect
the content attribute of the
same name.
partial
interface
HTMLStyleElement
CEReactions
attribute
DOMString
type
};
The
type
IDL
attribute of the
style
element must
reflect
the element's
type
content attribute.
partial
interface
HTMLScriptElement
CEReactions
attribute
DOMString
charset
CEReactions
attribute
DOMString
event
CEReactions
attribute
DOMString
htmlFor
};
The
charset
and
event
IDL attributes of the
script
element
must
reflect
the respective content attributes of the same name.
The
htmlFor
IDL attribute of the
script
element
must
reflect
the element's
for
content
attribute.
partial
interface
HTMLTableElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
border
CEReactions
attribute
DOMString
frame
CEReactions
attribute
DOMString
rules
CEReactions
attribute
DOMString
summary
CEReactions
attribute
DOMString
width

CEReactions
attribute
LegacyNullToEmptyString
DOMString
bgColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
cellPadding
CEReactions
attribute
LegacyNullToEmptyString
DOMString
cellSpacing
};
The
align
border
frame
summary
rules
, and
width
, IDL attributes of the
table
element must
reflect
the respective content attributes of the same
name.
The
bgColor
IDL attribute of the
table
element must
reflect
the element's
bgcolor
content attribute.
The
cellPadding
IDL attribute of the
table
element must
reflect
the element's
cellpadding
content attribute.
The
cellSpacing
IDL attribute of the
table
element must
reflect
the element's
cellspacing
content attribute.
partial
interface
HTMLTableSectionElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
ch
CEReactions
attribute
DOMString
chOff
CEReactions
attribute
DOMString
vAlign
};
The
align
IDL attribute of the
tbody
thead
, and
tfoot
elements must
reflect
the content
attribute of the same name.
The
ch
IDL attribute of the
tbody
thead
, and
tfoot
elements must
reflect
the elements'
char
content
attributes.
The
chOff
IDL attribute of the
tbody
thead
, and
tfoot
elements must
reflect
the elements'
charoff
content attributes.
The
vAlign
IDL attribute of the
tbody
thead
, and
tfoot
element must
reflect
the elements'
valign
content attributes.
partial
interface
HTMLTableCellElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
axis
CEReactions
attribute
DOMString
height
CEReactions
attribute
DOMString
width

CEReactions
attribute
DOMString
ch
CEReactions
attribute
DOMString
chOff
CEReactions
attribute
boolean
noWrap
CEReactions
attribute
DOMString
vAlign

CEReactions
attribute
LegacyNullToEmptyString
DOMString
bgColor
};
The
align
axis
height
, and
width
IDL
attributes of the
td
and
th
elements must
reflect
the
respective content attributes of the same name.
The
ch
IDL
attribute of the
td
and
th
elements must
reflect
the
elements'
char
content attributes.
The
chOff
IDL attribute of the
td
and
th
elements must
reflect
the
elements'
charoff
content attributes.
The
noWrap
IDL attribute of the
td
and
th
elements must
reflect
the elements'
nowrap
content attributes.
The
vAlign
IDL attribute of the
td
and
th
elements must
reflect
the elements'
valign
content attributes.
The
bgColor
IDL attribute of the
td
and
th
elements must
reflect
the elements'
bgcolor
content attributes.
partial
interface
HTMLTableRowElement
CEReactions
attribute
DOMString
align
CEReactions
attribute
DOMString
ch
CEReactions
attribute
DOMString
chOff
CEReactions
attribute
DOMString
vAlign

CEReactions
attribute
LegacyNullToEmptyString
DOMString
bgColor
};
The
align
IDL
attribute of the
tr
element must
reflect
the content attribute of the
same name.
The
ch
IDL
attribute of the
tr
element must
reflect
the element's
char
content attribute.
The
chOff
IDL
attribute of the
tr
element must
reflect
the element's
charoff
content attribute.
The
vAlign
IDL attribute of the
tr
element must
reflect
the element's
valign
content attribute.
The
bgColor
IDL attribute of the
tr
element must
reflect
the element's
bgcolor
content attribute.
partial
interface
HTMLUListElement
CEReactions
attribute
boolean
compact
CEReactions
attribute
DOMString
type
};
The
compact
and
type
IDL
attributes of the
ul
element must
reflect
the respective content
attributes of the same name.
User agents must treat
xmp
elements in a manner equivalent to
pre
elements in terms of semantics and for purposes of rendering. (The parser has special behavior for
this element though.)
partial
interface
Document
CEReactions
attribute
LegacyNullToEmptyString
DOMString
fgColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
linkColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
vlinkColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
alinkColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
bgColor

SameObject
readonly
attribute
HTMLCollection
anchors
SameObject
readonly
attribute
HTMLCollection
applets
undefined
clear
();
undefined
captureEvents
();
undefined
releaseEvents
();

SameObject
readonly
attribute
HTMLAllCollection
all
};
The attributes of the
Document
object listed in the first column of the following
table must
reflect
the content attribute on
the body element
with the
name given in the corresponding cell in the second column on the same row, if
the body
element
is a
body
element (as opposed to a
frameset
element).
When there is no
body element
or if it is a
frameset
element, the attributes must instead return the empty string on getting and
do nothing on setting.
IDL attribute
Content attribute
fgColor
text
linkColor
link
vlinkColor
vlink
alinkColor
alink
bgColor
bgcolor
The
anchors
attribute must return an
HTMLCollection
rooted at the
Document
node,
whose filter matches only
elements with
name
attributes.
The
applets
attribute must return an
HTMLCollection
rooted at the
Document
node,
whose filter matches nothing. (It exists for historical reasons.)
The
clear()
captureEvents()
and
releaseEvents()
methods must do nothing.
The
all
attribute
must return an
HTMLAllCollection
rooted at the
Document
node, whose
filter matches all elements.
partial
interface
Window
undefined
captureEvents
();
undefined
releaseEvents
();

Replaceable
SameObject
readonly
attribute
External
external
};
The
captureEvents()
and
releaseEvents()
methods must do nothing.
The
external
attribute of
the
Window
interface must return an instance of the
External
interface:
Exposed
Window
interface
External
undefined
AddSearchProvider
();
undefined
IsSearchProviderInstalled
();
};
The
AddSearchProvider()
and
IsSearchProviderInstalled()
methods
must do nothing.
interface
mixin
NavigatorPlugins
SameObject
readonly
attribute
PluginArray
plugins
SameObject
readonly
attribute
MimeTypeArray
mimeTypes
boolean
javaEnabled
();
};

Exposed
Window
interface
PluginArray
undefined
refresh
();
readonly
attribute
unsigned
long
length
getter
object
item
unsigned
long
index
);
object
namedItem
DOMString
name
);
};

Exposed
Window
interface
MimeTypeArray
readonly
attribute
unsigned
long
length
getter
object
item
unsigned
long
index
);
object
namedItem
DOMString
name
);
};

Exposed
Window
interface
Plugin
readonly
attribute
undefined
name
readonly
attribute
undefined
description
readonly
attribute
undefined
filename
readonly
attribute
undefined
length
getter
undefined
item
unsigned
long
index
);
undefined
namedItem
DOMString
name
);
};

Exposed
Window
interface
MimeType
readonly
attribute
undefined
type
readonly
attribute
undefined
description
readonly
attribute
undefined
suffixes
readonly
attribute
undefined
enabledPlugin
};
We might be able to remove the
Plugin
and
MimeType
classes entirely: see
issue #6317
Each
NavigatorPlugins
object has a
plugins array
, which is a new
PluginArray
object, and a
mime types array
, which is a new
MimeTypeArray
object.
The
NavigatorPlugins
mixin's
plugins
getter steps are to return
this
's
plugins array
The
NavigatorPlugins
mixin's
mimeTypes
getter steps are to return
this
's
mime types array
The
NavigatorPlugins
mixin's
javaEnabled()
method steps are to return
false.
The
PluginArray
interface's
length
getter steps are to return 0.
The
PluginArray
interface's
item()
and
namedItem()
method steps are to return null.
The
PluginArray
interface's
refresh()
method steps are to do nothing.
The
MimeTypeArray
interface's
length
getter steps are to return 0.
The
MimeTypeArray
interface's
item()
and
namedItem()
method steps are to return null.
The
Plugin
interface's
name
description
filename
, and
length
getter steps are to return undefined.
The
Plugin
interface's
item()
and
namedItem()
method steps are to do nothing.
The
MimeType
interface's
type
description
suffixes
, and
enabledPlugin
getter steps are to return
undefined.
17
IANA considerations
17.1
text/html
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
text
Subtype name:
html
Required parameters:
No required parameters
Optional parameters:
charset
The
charset
parameter may be provided to specify the
document's character encoding
, overriding any
character encoding declarations
in the document other than a Byte Order
Mark (BOM). The parameter's value must be an
ASCII case-insensitive
match for the
string "
utf-8
".
[ENCODING]
Encoding considerations:
8bit (see the section on
character encoding
declarations
Security considerations:
Entire novels have been written about the security considerations that apply to HTML
documents. Many are listed in this document, to which the reader is referred for more details.
Some general concerns bear mentioning here, however:
HTML is scripted language, and has a large number of APIs (some of which are described in
this document). Script can expose the user to potential risks of information leakage, credential
leakage, cross-site scripting attacks, cross-site request forgeries, and a host of other
problems. While the designs in this specification are intended to be safe if implemented
correctly, a full implementation is a massive undertaking and, as with any software, user agents
are likely to have security bugs.
Even without scripting, there are specific features in HTML which, for historical reasons,
are required for broad compatibility with legacy content but that expose the user to unfortunate
security problems. In particular, the
img
element can be used in conjunction with
some other features as a way to effect a port scan from the user's location on the Internet.
This can expose local network topologies that the attacker would otherwise not be able to
determine.
HTML relies on a compartmentalization scheme sometimes known as the
same-origin
policy
. An
origin
in most cases consists of all the pages served from the same
host, on the same port, using the same protocol.
It is critical, therefore, to ensure that any untrusted content that forms part of a site be
hosted on a different
origin
than any sensitive content on that site. Untrusted
content can easily spoof any other page on the same origin, read data from that origin, cause
scripts in that origin to execute, submit forms to and from that origin even if they are
protected from cross-site request forgery attacks by unique tokens, and make use of any
third-party resources exposed to or rights granted to that origin.
Interoperability considerations:
Rules for processing both conforming and non-conforming content
are defined in this specification.
Published specification:
This document is the relevant specification. Labeling a resource
with the
text/html
type asserts that the resource is
an
HTML document
using
the HTML syntax
Applications that use this media type:
Web browsers, tools for processing web content, HTML authoring
tools, search engines, validators.
Additional information:
Magic number(s):
No sequence of bytes can uniquely identify an HTML
document. More information on detecting HTML documents is
available in
MIME Sniffing
[MIMESNIFF]
File extension(s):
html
" and "
htm
are commonly, but certainly not exclusively, used as the
extension for HTML documents.
Macintosh file type code(s):
TEXT
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Ian Hickson
Change controller:
W3C
Fragments
used with
text/html
resources
either refer to
the indicated part of the document
or provide state information for
in-page scripts.
17.2
multipart/x-mixed-replace
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
multipart
Subtype name:
x-mixed-replace
Required parameters:
boundary
(defined in RFC2046)
[RFC2046]
Optional parameters:
No optional parameters.
Encoding considerations:
binary
Security considerations:
Subresources of a
multipart/x-mixed-replace
resource can be of any type, including types with non-trivial
security implications such as
text/html
Interoperability considerations:
None.
Published specification:
This specification describes processing rules for web browsers.
Conformance requirements for generating resources with this type are the same as for
multipart/mixed
[RFC2046]
Applications that use this media type:
This type is intended to be used in resources generated by web servers, for consumption by web browsers.
Additional information:
Magic number(s):
No sequence of bytes can uniquely identify a
multipart/x-mixed-replace
resource.
File extension(s):
No specific file extensions are recommended for this type.
Macintosh file type code(s):
No specific Macintosh file type codes are recommended for this type.
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Ian Hickson
Change controller:
W3C
Fragments
used with
multipart/x-mixed-replace
resources apply to each body part as defined by the type
used by that body part.
17.3
application/xhtml+xml
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
application
Subtype name:
xhtml+xml
Required parameters:
Same as for
application/xml
[RFC7303]
Optional parameters:
Same as for
application/xml
[RFC7303]
Encoding considerations:
Same as for
application/xml
[RFC7303]
Security considerations:
Same as for
application/xml
[RFC7303]
Interoperability considerations:
Same as for
application/xml
[RFC7303]
Published specification:
Labeling a resource with the
application/xhtml+xml
type asserts that the
resource is an XML document that likely has a
document element
from the
HTML
namespace
. Thus, the relevant specifications are
XML
Namespaces in
XML
, and this specification.
[XML]
[XMLNS]
Applications that use this media type:
Same as for
application/xml
[RFC7303]
Additional information:
Magic number(s):
Same as for
application/xml
[RFC7303]
File extension(s):
xhtml
" and "
xht
" are sometimes used as
extensions for XML resources that have a
document element
from the
HTML
namespace
Macintosh file type code(s):
TEXT
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Ian Hickson
Change controller:
W3C
Fragments
used with
application/xhtml+xml
resources have the same semantics as with any
XML MIME type
[RFC7303]
17.4
text/ping
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
text
Subtype name:
ping
Required parameters:
No parameters
Optional parameters:
charset
The
charset
parameter may be provided. The parameter's value must be
utf-8
". This parameter serves no purpose; it is only allowed for
compatibility with legacy servers.
Encoding considerations:
Not applicable.
Security considerations:
If used exclusively in the fashion described in the context of
hyperlink auditing
, this type introduces no new
security concerns.
Interoperability considerations:
Rules applicable to this type are defined in this specification.
Published specification:
This document is the relevant specification.
Applications that use this media type:
Web browsers.
Additional information:
Magic number(s):
text/ping
resources always consist of the four
bytes 0x50 0x49 0x4E 0x47 (`
PING
`).
File extension(s):
No specific file extension is recommended for this type.
Macintosh file type code(s):
No specific Macintosh file type codes are recommended for this type.
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
Only intended for use with HTTP POST requests generated as part
of a web browser's processing of the
ping
attribute.
Author:
Ian Hickson
Change controller:
W3C
Fragments
have no meaning with
text/ping
resources.
17.5
application/microdata+json
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
application
Subtype name:
microdata+json
Required parameters:
Same as for
application/json
[JSON]
Optional parameters:
Same as for
application/json
[JSON]
Encoding considerations:
8bit (always UTF-8)
Security considerations:
Same as for
application/json
[JSON]
Interoperability considerations:
Same as for
application/json
[JSON]
Published specification:
Labeling a resource with the
application/microdata+json
type asserts that the
resource is a JSON text that consists of an object with a single entry called "
items
" consisting of an array of entries, each of which consists of an object
with an entry called "
id
" whose value is a string, an entry called "
type
" whose value is another string, and an entry called "
properties
" whose value is an object whose entries each have a value consisting
of an array of either objects or strings, the objects being of the same form as the objects in
the aforementioned "
items
" entry. Thus, the relevant specifications are
JSON
and this specification.
[JSON]
Applications that use this media type:
Applications that transfer data intended for use with HTML's microdata feature, especially in
the context of drag-and-drop, are the primary application class for this type.
Additional information:
Magic number(s):
Same as for
application/json
[JSON]
File extension(s):
Same as for
application/json
[JSON]
Macintosh file type code(s):
Same as for
application/json
[JSON]
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Ian Hickson
Change controller:
W3C
Fragments
used with
application/microdata+json
resources have the same semantics as when used with
application/json
(namely, at the time of writing, no semantics at all).
[JSON]
17.6
text/event-stream
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
text
Subtype name:
event-stream
Required parameters:
No parameters
Optional parameters:
charset
The
charset
parameter may be provided. The parameter's value must be
utf-8
". This parameter serves no purpose; it is only allowed for
compatibility with legacy servers.
Encoding considerations:
8bit (always UTF-8)
Security considerations:
An event stream from an origin distinct from the origin of the content consuming the event
stream can result in information leakage. To avoid this, user agents are required to apply CORS
semantics.
[FETCH]
Event streams can overwhelm a user agent; a user agent is expected to apply suitable
restrictions to avoid depleting local resources because of an overabundance of information from
an event stream.
Servers can be overwhelmed if a situation develops in which the server is causing clients to
reconnect rapidly. Servers should use a 5xx status code to indicate capacity problems, as this
will prevent conforming clients from reconnecting automatically.
Interoperability considerations:
Rules for processing both conforming and non-conforming content are defined in this
specification.
Published specification:
This document is the relevant specification.
Applications that use this media type:
Web browsers and tools using web services.
Additional information:
Magic number(s):
No sequence of bytes can uniquely identify an event stream.
File extension(s):
No specific file extensions are recommended for this type.
Macintosh file type code(s):
No specific Macintosh file type codes are recommended for this type.
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
This format is only expected to be used by dynamic open-ended streams served using HTTP or a
similar protocol. Finite resources are not expected to be labeled with this type.
Author:
Ian Hickson
Change controller:
W3C
Fragments
have no meaning with
text/event-stream
resources.
17.7
Cross-Origin-Embedder-Policy
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Cross-Origin-Embedder-Policy
Applicable protocol:
http
Status:
standard
Author/Change controller:
WHATWG
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.8
Cross-Origin-Embedder-Policy-Report-Only
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Cross-Origin-Embedder-Policy-Report-Only
Applicable protocol:
http
Status:
standard
Author/Change controller:
WHATWG
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.9
Cross-Origin-Opener-Policy
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Cross-Origin-Opener-Policy
Applicable protocol:
http
Status:
standard
Author/Change controller:
WHATWG
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.10
Cross-Origin-Opener-Policy-Report-Only
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Cross-Origin-Opener-Policy-Report-Only
Applicable protocol:
http
Status:
standard
Author/Change controller:
WHATWG
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.11
Origin-Agent-Cluster
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Origin-Agent-Cluster
Applicable protocol:
http
Status:
standard
Author/Change controller:
WHATWG
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.12
Ping-From
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Ping-From
Applicable protocol:
http
Status:
standard
Author/Change controller:
W3C
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.13
Ping-To
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Ping-To
Applicable protocol:
http
Status:
standard
Author/Change controller:
W3C
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.14
Refresh
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Refresh
Applicable protocol:
http
Status:
standard
Author/Change controller:
WHATWG
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.15
Last-Event-ID
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
Last-Event-ID
Applicable protocol:
http
Status:
standard
Author/Change controller:
W3C
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.16
X-Frame-Options
This section describes a header for registration in the Permanent Message Header Field
Registry.
[RFC3864]
Header field name:
X-Frame-Options
Applicable protocol:
http
Status:
standard
Author/Change controller:
WHATWG
Specification document(s):
This document is the relevant specification.
Related information:
None.
17.17
web+
scheme prefix
This section describes a convention for use with the IANA URI scheme registry. It does not
itself register a specific scheme.
[RFC7595]
Scheme name:
Schemes starting with the four characters "
web+
" followed by one or more letters in the range
Status:
Permanent
Scheme syntax:
Scheme-specific.
Scheme semantics:
Scheme-specific.
Encoding considerations:
All "
web+
" schemes should use UTF-8 encodings where relevant.
Applications/protocols that use this scheme name:
Scheme-specific.
Interoperability considerations:
The scheme is expected to be used in the context of web applications.
Security considerations:
Any web page is able to register a handler for all "
web+
" schemes. As
such, these schemes must not be used for features intended to be core platform features (e.g.,
HTTP). Similarly, such schemes must not store confidential information in their URLs, such as
usernames, passwords, personal information, or confidential project names.
Contact:
Ian Hickson
Change controller:
Ian Hickson
References:
Custom scheme handlers
, HTML Living Standard:
Index
The following sections only cover conforming elements and features.
Elements
This section is non-normative.
List of elements
Element
Description
Categories
Parents†
Children
Attributes
Interface
Hyperlink
flow
phrasing
*;
interactive
palpable
phrasing
transparent
globals
href
target
ping
rel
hreflang
type
referrerpolicy
HTMLAnchorElement
abbr
Abbreviation
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
address
Contact information for a page or
article
element
flow
palpable
flow
flow
globals
HTMLElement
area
Hyperlink or dead area on an image map
flow
phrasing
phrasing
empty
globals
alt
coords
shape
href
target
ping
rel
referrerpolicy
HTMLAreaElement
article
Self-contained syndicatable or reusable composition
flow
sectioning
palpable
flow
flow
globals
HTMLElement
aside
Sidebar for tangentially related content
flow
sectioning
palpable
flow
flow
globals
HTMLElement
audio
Audio player
flow
phrasing
embedded
interactive
palpable
phrasing
source
*;
track
*;
transparent
globals
src
crossorigin
preload
autoplay
loop
muted
controls
HTMLAudioElement
Keywords
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
base
Base URL and default target
browsing context
for
hyperlinks
and
forms
metadata
head
empty
globals
href
target
HTMLBaseElement
bdi
Text directionality isolation
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
bdo
Text directionality formatting
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
blockquote
A section quoted from another source
flow
sectioning root
palpable
flow
flow
globals
cite
HTMLQuoteElement
body
Document body
sectioning root
html
flow
globals
onafterprint
onbeforeprint
onbeforeunload
onhashchange
onlanguagechange
onmessage
onmessageerror
onoffline
ononline
onpagehide
onpageshow
onpopstate
onrejectionhandled
onstorage
onunhandledrejection
onunload
HTMLBodyElement
br
Line break, e.g. in poem or postal address
flow
phrasing
phrasing
empty
globals
HTMLBRElement
button
Button control
flow
phrasing
interactive
listed
labelable
submittable
form-associated
palpable
phrasing
phrasing
globals
disabled
form
formaction
formenctype
formmethod
formnovalidate
formtarget
name
type
value
HTMLButtonElement
canvas
Scriptable bitmap canvas
flow
phrasing
embedded
palpable
phrasing
transparent
globals
width
height
HTMLCanvasElement
caption
Table caption
none
table
flow
globals
HTMLTableCaptionElement
cite
Title of a work
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
code
Computer code
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
col
Table column
none
colgroup
empty
globals
span
HTMLTableColElement
colgroup
Group of columns in a table
none
table
col
*;
template
globals
span
HTMLTableColElement
data
Machine-readable equivalent
flow
phrasing
palpable
phrasing
phrasing
globals
value
HTMLDataElement
datalist
Container for options for
combo box control
flow
phrasing
phrasing
phrasing
*;
option
*;
script-supporting elements
globals
HTMLDataListElement
dd
Content for corresponding
dt
element(s)
none
dl
div
flow
globals
HTMLElement
del
A removal from the document
flow
phrasing
phrasing
transparent
globals
cite
datetime
HTMLModElement
details
Disclosure control for hiding details
flow
sectioning root
interactive
palpable
flow
summary
*;
flow
globals
open
HTMLDetailsElement
dfn
Defining instance
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
dialog
Dialog box or window
flow
sectioning root
flow
flow
globals
open
HTMLDialogElement
div
Generic flow container, or container for name-value groups in
dl
elements
flow
palpable
flow
dl
flow
globals
HTMLDivElement
dl
Association list consisting of zero or more name-value groups
flow
palpable
flow
dt
*;
dd
*;
div
*;
script-supporting elements
globals
HTMLDListElement
dt
Legend for corresponding
dd
element(s)
none
dl
div
flow
globals
HTMLElement
em
Stress emphasis
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
embed
Plugin
flow
phrasing
embedded
interactive
palpable
phrasing
empty
globals
src
type
width
height
any*
HTMLEmbedElement
fieldset
Group of form controls
flow
sectioning root
listed
form-associated
palpable
flow
legend
*;
flow
globals
disabled
form
name
HTMLFieldSetElement
figcaption
Caption for
figure
none
figure
flow
globals
HTMLElement
figure
Figure with optional caption
flow
sectioning root
palpable
flow
figcaption
*;
flow
globals
HTMLElement
footer
Footer for a page or section
flow
palpable
flow
flow
globals
HTMLElement
form
User-submittable form
flow
palpable
flow
flow
globals
accept-charset
action
autocomplete
enctype
method
name
novalidate
target
HTMLFormElement
h1
h2
h3
h4
h5
h6
Section heading
flow
heading
palpable
legend
summary
flow
phrasing
globals
HTMLHeadingElement
head
Container for document metadata
none
html
metadata content
globals
HTMLHeadElement
header
Introductory or navigational aids for a page or section
flow
palpable
flow
flow
globals
HTMLElement
hgroup
heading group
flow
heading
palpable
legend
summary
flow
h1
h2
h3
h4
h5
h6
script-supporting elements
globals
HTMLElement
hr
Thematic break
flow
flow
empty
globals
HTMLHRElement
html
Root element
none
none*
head
*;
body
globals
manifest
HTMLHtmlElement
Alternate voice
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
iframe
Nested browsing context
flow
phrasing
embedded
interactive
palpable
phrasing
empty
globals
src
srcdoc
name
sandbox
allow
allowfullscreen
width
height
referrerpolicy
loading
HTMLIFrameElement
img
Image
flow
phrasing
embedded
interactive
*;
form-associated
palpable
phrasing
picture
empty
globals
alt
src
srcset
sizes
crossorigin
usemap
ismap
width
height
referrerpolicy
decoding
loading
HTMLImageElement
input
Form control
flow
phrasing
interactive
*;
listed
labelable
submittable
resettable
form-associated
palpable
phrasing
empty
globals
accept
alt
autocomplete
checked
dirname
disabled
form
formaction
formenctype
formmethod
formnovalidate
formtarget
height
list
max
maxlength
min
minlength
multiple
name
pattern
placeholder
readonly
required
size
src
step
type
value
width
HTMLInputElement
ins
An addition to the document
flow
phrasing
*;
palpable
phrasing
transparent
globals
cite
datetime
HTMLModElement
kbd
User input
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
label
Caption for a form control
flow
phrasing
interactive
palpable
phrasing
phrasing
globals
for
HTMLLabelElement
legend
Caption for
fieldset
none
fieldset
phrasing
heading content
globals
HTMLLegendElement
li
List item
none
ol
ul
flow
globals
value
HTMLLIElement
link
Link metadata
metadata
flow
*;
phrasing
head
noscript
*;
phrasing
empty
globals
href
crossorigin
rel
as
media
hreflang
type
sizes
imagesrcset
imagesizes
referrerpolicy
integrity
color
disabled
HTMLLinkElement
main
Container for the dominant contents of the document
flow
palpable
flow
flow
globals
HTMLElement
map
Image map
flow
phrasing
*;
palpable
phrasing
transparent
area
globals
name
HTMLMapElement
mark
Highlight
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
MathML
math
MathML root
flow
phrasing
embedded
palpable
phrasing
per
[MATHML]
per
[MATHML]
Element
Menu of commands
flow
palpable
flow
li
script-supporting elements
globals
HTMLMenuElement
meta
Text metadata
metadata
flow
*;
phrasing
head
noscript
*;
phrasing
empty
globals
name
http-equiv
content
charset
HTMLMetaElement
meter
Gauge
flow
phrasing
labelable
palpable
phrasing
phrasing
globals
value
min
max
low
high
optimum
HTMLMeterElement
nav
Section with navigational links
flow
sectioning
palpable
flow
flow
globals
HTMLElement
noscript
Fallback content for script
metadata
flow
phrasing
head
*;
phrasing
varies*
globals
HTMLElement
object
Image,
nested browsing context
, or
plugin
flow
phrasing
embedded
interactive
*;
listed
form-associated
palpable
phrasing
param
*;
transparent
globals
data
type
name
form
width
height
HTMLObjectElement
ol
Ordered list
flow
palpable
flow
li
script-supporting elements
globals
reversed
start
type
HTMLOListElement
optgroup
Group of options in a list box
none
select
option
script-supporting elements
globals
disabled
label
HTMLOptGroupElement
option
Option in a list box or combo box control
none
select
datalist
optgroup
text
globals
disabled
label
selected
value
HTMLOptionElement
output
Calculated output value
flow
phrasing
listed
labelable
resettable
form-associated
palpable
phrasing
phrasing
globals
for
form
name
HTMLOutputElement
Paragraph
flow
palpable
flow
phrasing
globals
HTMLParagraphElement
param
Parameter for
object
none
object
empty
globals
name
value
HTMLParamElement
picture
Image
flow
phrasing
embedded
phrasing
source
*;
one
img
script-supporting elements
globals
HTMLPictureElement
pre
Block of preformatted text
flow
palpable
flow
phrasing
globals
HTMLPreElement
progress
Progress bar
flow
phrasing
labelable
palpable
phrasing
phrasing
globals
value
max
HTMLProgressElement
Quotation
flow
phrasing
palpable
phrasing
phrasing
globals
cite
HTMLQuoteElement
rp
Parenthesis for ruby annotation text
none
ruby
text
globals
HTMLElement
rt
Ruby annotation text
none
ruby
phrasing
globals
HTMLElement
ruby
Ruby annotation(s)
flow
phrasing
palpable
phrasing
phrasing
rt
rp
globals
HTMLElement
Inaccurate text
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
samp
Computer output
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
script
Embedded script
metadata
flow
phrasing
script-supporting
head
phrasing
script-supporting
script, data, or script documentation*
globals
src
type
async
defer
crossorigin
integrity
referrerpolicy
HTMLScriptElement
section
Generic document or application section
flow
sectioning
palpable
flow
flow
globals
HTMLElement
select
List box control
flow
phrasing
interactive
listed
labelable
submittable
resettable
form-associated
palpable
phrasing
option
optgroup
script-supporting elements
globals
autocomplete
disabled
form
multiple
name
required
size
HTMLSelectElement
slot
Shadow tree slot
flow
phrasing
phrasing
transparent
globals
name
HTMLSlotElement
small
Side comment
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
source
Image source for
img
or media source for
video
or
audio
none
picture
video
audio
empty
globals
src
type
srcset
sizes
media
width
height
HTMLSourceElement
span
Generic phrasing container
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLSpanElement
strong
Importance
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
style
Embedded styling information
metadata
head
noscript
text*
globals
media
HTMLStyleElement
sub
Subscript
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
summary
Caption for
details
none
details
phrasing
heading content
globals
HTMLElement
sup
Superscript
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
SVG
svg
SVG root
flow
phrasing
embedded
palpable
phrasing
per
[SVG]
per
[SVG]
SVGSVGElement
table
Table
flow
palpable
flow
caption
*;
colgroup
*;
thead
*;
tbody
*;
tfoot
*;
tr
*;
script-supporting elements
globals
HTMLTableElement
tbody
Group of rows in a table
none
table
tr
script-supporting elements
globals
HTMLTableSectionElement
td
Table cell
sectioning root
tr
flow
globals
colspan
rowspan
headers
HTMLTableCellElement
template
Template
metadata
flow
phrasing
script-supporting
metadata
phrasing
script-supporting
colgroup
empty
globals
HTMLTemplateElement
textarea
Multiline text controls
flow
phrasing
interactive
listed
labelable
submittable
resettable
form-associated
palpable
phrasing
text
globals
cols
dirname
disabled
form
maxlength
minlength
name
placeholder
readonly
required
rows
wrap
HTMLTextAreaElement
tfoot
Group of footer rows in a table
none
table
tr
script-supporting elements
globals
HTMLTableSectionElement
th
Table header cell
interactive
tr
flow
globals
colspan
rowspan
headers
scope
abbr
HTMLTableCellElement
thead
Group of heading rows in a table
none
table
tr
script-supporting elements
globals
HTMLTableSectionElement
time
Machine-readable equivalent of date- or time-related data
flow
phrasing
palpable
phrasing
phrasing
globals
datetime
HTMLTimeElement
title
Document title
metadata
head
text
globals
HTMLTitleElement
tr
Table row
none
table
thead
tbody
tfoot
th
*;
td
script-supporting elements
globals
HTMLTableRowElement
track
Timed text track
none
audio
video
empty
globals
default
kind
label
src
srclang
HTMLTrackElement
Unarticulated annotation
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
ul
List
flow
palpable
flow
li
script-supporting elements
globals
HTMLUListElement
var
Variable
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
video
Video player
flow
phrasing
embedded
interactive
palpable
phrasing
source
*;
track
*;
transparent
globals
src
crossorigin
poster
preload
autoplay
playsinline
loop
muted
controls
width
height
HTMLVideoElement
wbr
Line breaking opportunity
flow
phrasing
phrasing
empty
globals
HTMLElement
autonomous custom elements
Author-defined elements
flow
phrasing
palpable
flow
phrasing
transparent
globals
; any, as decided by the element's author
Supplied by the element's author (inherits from
HTMLElement
An asterisk (*) in a cell indicates that the actual rules are more
complicated than indicated in the table above.
† Categories in the "Parents" column refer to parents that list
the given categories in their content model, not to elements that themselves are in those
categories. For example, the
element's "Parents" column says "phrasing", so any
element whose content model contains the "phrasing" category could be a parent of an
element. Since the "flow" category includes all the "phrasing" elements, that means
the
th
element could be a parent to an
element.
Element content categories
This section is non-normative.
List of element content categories
Category
Elements
Elements with exceptions
Metadata content
base
link
meta
noscript
script
style
template
title
Flow content
abbr
address
article
aside
audio
bdi
bdo
blockquote
br
button
canvas
cite
code
data
datalist
del
details
dfn
dialog
div
dl
em
embed
fieldset
figure
footer
form
h1
h2
h3
h4
h5
h6
header
hgroup
hr
iframe
img
input
ins
kbd
label
map
mark
MathML
math
meter
nav
noscript
object
ol
output
picture
pre
progress
ruby
samp
script
section
select
slot
small
span
strong
sub
sup
SVG
svg
table
template
textarea
time
ul
var
video
wbr
autonomous custom elements
Text
area
(if it is a descendant of a
map
element);
link
(if it is
allowed in the body
);
main
(if it is a
hierarchically correct
main
element
);
meta
(if the
itemprop
attribute is present)
Sectioning content
article
aside
nav
section
Heading content
h1
h2
h3
h4
h5
h6
hgroup
Phrasing content
abbr
audio
bdi
bdo
br
button
canvas
cite
code
data
datalist
del
dfn
em
embed
iframe
img
input
ins
kbd
label
map
mark
MathML
math
meter
noscript
object
output
picture
progress
ruby
samp
script
select
slot
small
span
strong
sub
sup
SVG
svg
template
textarea
time
var
video
wbr
autonomous custom elements
Text
area
(if it is a descendant of a
map
element);
link
(if it is
allowed in the body
);
meta
(if the
itemprop
attribute is present)
Embedded content
audio
canvas
embed
iframe
img
MathML
math
object
picture
SVG
svg
video
Interactive content
button
details
embed
iframe
label
select
textarea
(if the
href
attribute is present);
audio
(if the
controls
attribute is present);
img
(if the
usemap
attribute is present);
input
(if the
type
attribute is
not
in the
Hidden
state);
video
(if the
controls
attribute is present)
Sectioning roots
blockquote
body
details
dialog
fieldset
figure
td
Form-associated elements
button
fieldset
input
label
object
output
select
textarea
img
form-associated custom elements
Listed elements
button
fieldset
input
object
output
select
textarea
form-associated custom elements
Submittable elements
button
input
select
textarea
form-associated custom elements
Resettable elements
input
output
select
textarea
form-associated custom elements
Autocapitalize-inheriting elements
button
fieldset
input
output
select
textarea
Labelable elements
button
input
meter
output
progress
select
textarea
form-associated custom elements
Palpable content
abbr
address
article
aside
bdi
bdo
blockquote
button
canvas
cite
code
data
details
dfn
div
em
embed
fieldset
figure
footer
form
h1
h2
h3
h4
h5
h6
header
hgroup
iframe
img
ins
kbd
label
main
map
mark
MathML
math
meter
nav
object
output
pre
progress
ruby
samp
section
select
small
span
strong
sub
sup
SVG
svg
table
textarea
time
var
video
autonomous custom elements
audio
(if the
controls
attribute is present);
dl
(if the element's children include at least one name-value group);
input
(if the
type
attribute is
not
in the
Hidden
state);
(if the element's children include at least one
li
element);
ol
(if the element's children include at least one
li
element);
ul
(if the element's children include at least one
li
element);
Text
that is not
inter-element whitespace
Script-supporting elements
script
template
Attributes
This section is non-normative.
List of attributes (excluding event handler content attributes)
Attribute
Element(s)
Description
Value
abbr
th
Alternative label to use for the header cell when referencing the cell in other contexts
Text
accept
input
Hint for expected file type in
file upload controls
Set of comma-separated tokens
* consisting of
valid MIME type strings with no parameters
or
audio/*
video/*
, or
image/*
accept-charset
form
Character encodings to use for
form submission
ASCII case-insensitive
match for "
UTF-8
accesskey
HTML elements
Keyboard shortcut to activate or focus element
Ordered set of unique space-separated tokens
, none of which are
identical to
another, each consisting of one code point in length
action
form
URL
to use for
form submission
Valid non-empty URL potentially surrounded by spaces
allow
iframe
Permissions policy
to be applied to the
iframe
's contents
Serialized permissions policy
allowfullscreen
iframe
Whether to allow the
iframe
's contents to use
requestFullscreen()
Boolean attribute
alt
area
img
input
Replacement text for use when images are not available
Text
as
link
Potential destination
for a preload request (for
rel
="
preload
" and
rel
="
modulepreload
")
Potential destination
, for
rel
="
preload
";
script-like destination
, for
rel
="
modulepreload
async
script
Execute script when available, without blocking while fetching
Boolean attribute
autocapitalize
HTML elements
Recommended autocapitalization behavior (for supported input methods)
on
";
off
";
none
";
sentences
";
words
";
characters
autocomplete
form
Default setting for autofill feature for controls in the form
on
"; "
off
autocomplete
input
select
textarea
Hint for form autofill feature
Autofill field
name and related tokens*
autofocus
HTML elements
Automatically focus the element when the page is loaded
Boolean attribute
autoplay
audio
video
Hint that the
media resource
can be started automatically when the page is loaded
Boolean attribute
charset
meta
Character encoding declaration
utf-8
checked
input
Whether the control is checked
Boolean attribute
cite
blockquote
del
ins
Link to the source of the quotation or more information about the edit
Valid URL potentially surrounded by spaces
class
HTML elements
Classes to which the element belongs
Set of space-separated tokens
color
link
Color to use when customizing a site's icon (for
rel
="
mask-icon
")
CSS

cols
textarea
Maximum number of characters per line
Valid non-negative integer
greater than zero
colspan
td
th
Number of columns that the cell is to span
Valid non-negative integer
greater than zero
content
meta
Value of the element
Text
contenteditable
HTML elements
Whether the element is editable
true
"; "
false
controls
audio
video
Show user agent controls
Boolean attribute
coords
area
Coordinates for the shape to be created in an
image map
Valid list of floating-point numbers
crossorigin
audio
img
link
script
video
How the element handles crossorigin requests
anonymous
"; "
use-credentials
data
object
Address of the resource
Valid non-empty URL potentially surrounded by spaces
datetime
del
ins
Date and (optionally) time of the change
Valid date string with optional time
datetime
time
Machine-readable value
Valid month string
valid date string
valid yearless date string
valid time string
valid local date and time string
valid time-zone offset string
valid global date and time string
valid week string
valid non-negative integer
, or
valid duration string
decoding
img
Decoding hint to use when processing this image for presentation
sync
";
async
";
auto
default
track
Enable the track if no other
text track
is more suitable
Boolean attribute
defer
script
Defer script execution
Boolean attribute
dir
HTML elements
The text directionality
of the element
ltr
"; "
rtl
"; "
auto
dir
bdo
The text directionality
of the element
ltr
"; "
rtl
dirname
input
textarea
Name of form control to use for sending the element's
directionality
in
form submission
Text
disabled
button
input
optgroup
option
select
textarea
form-associated custom elements
Whether the form control is disabled
Boolean attribute
disabled
fieldset
Whether the descendant form controls, except any inside
legend
, are disabled
Boolean attribute
disabled
link
Whether the link is disabled
Boolean attribute
area
Whether to download the resource instead of navigating to it, and its filename if so
Text
draggable
HTML elements
Whether the element is draggable
true
"; "
false
enctype
form
Entry list encoding type to use for
form submission
application/x-www-form-urlencoded
"; "
multipart/form-data
"; "
text/plain
enterkeyhint
HTML elements
Hint for selecting an enter key action
enter
";
done
";
go
";
next
";
previous
";
";
send
for
label
Associate the label with form control
ID
for
output
Specifies controls from which the output was calculated
Unordered set of unique space-separated tokens
consisting of IDs*
form
button
fieldset
input
object
output
select
textarea
form-associated custom elements
Associates the element with a
form
element
ID
formaction
button
input
URL
to use for
form submission
Valid non-empty URL potentially surrounded by spaces
formenctype
button
input
Entry list encoding type to use for
form submission
application/x-www-form-urlencoded
"; "
multipart/form-data
"; "
text/plain
formmethod
button
input
Variant to use for
form submission
GET
";
POST
";
dialog
formnovalidate
button
input
Bypass form control validation for
form submission
Boolean attribute
formtarget
button
input
Browsing context
for
form submission
Valid browsing context name or keyword
headers
td
th
The header cells for this cell
Unordered set of unique space-separated tokens
consisting of IDs*
height
canvas
embed
iframe
img
input
object
source
(in
picture
);
video
Vertical dimension
Valid non-negative integer
hidden
HTML elements
Whether the element is relevant
Boolean attribute
high
meter
Low limit of high range
Valid floating-point number
href
area
Address of the
hyperlink
Valid URL potentially surrounded by spaces
href
link
Address of the
hyperlink
Valid non-empty URL potentially surrounded by spaces
href
base
Document base URL
Valid URL potentially surrounded by spaces
hreflang
link
Language of the linked resource
Valid BCP 47 language tag
http-equiv
meta
Pragma directive
content-type
";
default-style
";
refresh
";
x-ua-compatible
";
content-security-policy
id
HTML elements
The element's
ID
Text
imagesizes
link
Image sizes for different page layouts (for
rel
="
preload
")
Valid source size list
imagesrcset
link
Images to use in different situations, e.g., high-resolution displays, small monitors, etc. (for
rel
="
preload
")
Comma-separated list of
image candidate strings
inputmode
HTML elements
Hint for selecting an input modality
none
";
text
";
tel
";
email
";
url
";
numeric
";
decimal
";
integrity
link
script
Integrity metadata used in
Subresource Integrity
checks
[SRI]
Text
is
HTML elements
Creates a
customized built-in element
Valid custom element name
of a defined
customized built-in element
ismap
img
Whether the image is a server-side image map
Boolean attribute
itemid
HTML elements
Global identifier
for a microdata item
Valid URL potentially surrounded by spaces
itemprop
HTML elements
Property names
of a microdata item
Unordered set of unique space-separated tokens
consisting of
valid absolute URLs
defined property names
, or text*
itemref
HTML elements
Referenced
elements
Unordered set of unique space-separated tokens
consisting of IDs*
itemscope
HTML elements
Introduces a microdata item
Boolean attribute
itemtype
HTML elements
Item types
of a microdata item
Unordered set of unique space-separated tokens
consisting of
valid absolute URLs
kind
track
The type of text track
subtitles
";
captions
";
descriptions
";
chapters
";
metadata
label
optgroup
option
track
User-visible label
Text
lang
HTML elements
Language
of the element
Valid BCP 47 language tag or the empty string
list
input
List of autocomplete options
ID
loading
img
iframe
Used when determining loading deferral
lazy
";
eager
loop
audio
video
Whether to loop the
media resource
Boolean attribute
low
meter
High limit of low range
Valid floating-point number
max
input
Maximum value
Varies*
max
meter
progress
Upper bound of range
Valid floating-point number
maxlength
input
textarea
Maximum
length
of value
Valid non-negative integer
media
link
source
(in
picture
);
style
Applicable media
Valid media query list
method
form
Variant to use for
form submission
GET
";
POST
";
dialog
min
input
Minimum value
Varies*
min
meter
Lower bound of range
Valid floating-point number
minlength
input
textarea
Minimum
length
of value
Valid non-negative integer
multiple
input
select
Whether to allow multiple values
Boolean attribute
muted
audio
video
Whether to mute the
media resource
by default
Boolean attribute
name
button
fieldset
input
output
select
textarea
form-associated custom elements
Name of the element to use for
form submission
and in the
form.elements
API
Text
name
form
Name of form to use in the
document.forms
API
Text
name
iframe
object
Name of
nested browsing context
Valid browsing context name or keyword
name
map
Name of
image map
to
reference
from the
usemap
attribute
Text
name
meta
Metadata name
Text
name
param
Name of parameter
Text
name
slot
Name of shadow tree slot
Text
nomodule
script
Prevents execution in user agents that support
module scripts
Boolean attribute
nonce
HTML elements
Cryptographic nonce used in
Content Security Policy
checks
[CSP]
Text
novalidate
form
Bypass form control validation for
form submission
Boolean attribute
open
details
Whether the details are visible
Boolean attribute
open
dialog
Whether the dialog box is showing
Boolean attribute
optimum
meter
Optimum value in gauge
Valid floating-point number
pattern
input
Pattern to be matched by the form control's value
Regular expression matching the JavaScript
Pattern
production
ping
area
URLs
to ping
Set of space-separated tokens
consisting of
valid non-empty URLs
placeholder
input
textarea
User-visible label to be placed within the form control
Text
playsinline
video
Encourage the user agent to display video content within the element's playback area
Boolean attribute
poster
video
Poster frame to show prior to video playback
Valid non-empty URL potentially surrounded by spaces
preload
audio
video
Hints how much buffering the
media resource
will likely need
none
";
metadata
";
auto
readonly
input
textarea
Whether to allow the value to be edited by the user
Boolean attribute
readonly
form-associated custom elements
Affects
willValidate
, plus any behavior added by the custom element author
Boolean attribute
referrerpolicy
area
iframe
img
link
script
Referrer policy
for
fetches
initiated by the element
Referrer policy
rel
area
Relationship between the location in the document containing the
hyperlink
and the destination resource
Unordered set of unique space-separated tokens
rel
link
Relationship between the document containing the
hyperlink
and the destination resource
Unordered set of unique space-separated tokens
required
input
select
textarea
Whether the control is required for
form submission
Boolean attribute
reversed
ol
Number the list backwards
Boolean attribute
rows
textarea
Number of lines to show
Valid non-negative integer
greater than zero
rowspan
td
th
Number of rows that the cell is to span
Valid non-negative integer
sandbox
iframe
Security rules for nested content
Unordered set of unique space-separated tokens
ASCII case-insensitive
, consisting of
allow-forms
",
allow-modals
",
allow-orientation-lock
",
allow-pointer-lock
",
allow-popups
",
allow-popups-to-escape-sandbox
",
allow-presentation
",
allow-same-origin
",
allow-scripts
" and
allow-top-navigation
scope
th
Specifies which cells the header cell applies to
row
";
col
";
rowgroup
";
colgroup
selected
option
Whether the option is selected by default
Boolean attribute
shape
area
The kind of shape to be created in an
image map
circle
";
default
";
poly
";
rect
size
input
select
Size of the control
Valid non-negative integer
greater than zero
sizes
link
Sizes of the icons (for
rel
="
icon
")
Unordered set of unique space-separated tokens
ASCII case-insensitive
, consisting of sizes*
sizes
img
source
Image sizes for different page layouts
Valid source size list
slot
HTML elements
The element's desired slot
Text
span
col
colgroup
Number of columns spanned by the element
Valid non-negative integer
greater than zero
spellcheck
HTML elements
Whether the element is to have its spelling and grammar checked
true
"; "
false
src
audio
embed
iframe
img
input
script
source
(in
video
or
audio
);
track
video
Address of the resource
Valid non-empty URL potentially surrounded by spaces
srcdoc
iframe
A document to render in the
iframe
The source of
an
iframe
srcdoc
document
srclang
track
Language of the text track
Valid BCP 47 language tag
srcset
img
source
Images to use in different situations, e.g., high-resolution displays, small monitors, etc.
Comma-separated list of
image candidate strings
start
ol
Starting value
of the list
Valid integer
step
input
Granularity to be matched by the form control's value
Valid floating-point number
greater than zero, or "
any
style
HTML elements
Presentational and formatting instructions
CSS declarations*
tabindex
HTML elements
Whether the element is
focusable
and
sequentially focusable
, and
the relative order of the element for the purposes of
sequential focus navigation
Valid integer
target
area
Browsing context
for
hyperlink
Valid browsing context name or keyword
target
base
Default
browsing context
for
hyperlink
and
form submission
Valid browsing context name or keyword
target
form
Browsing context
for
form submission
Valid browsing context name or keyword
title
HTML elements
Advisory information for the element
Text
title
abbr
dfn
Full term or expansion of abbreviation
Text
title
input
Description of pattern (when used with
pattern
attribute)
Text
title
link
Title of the link
Text
title
link
style
CSS style sheet set name
Text
translate
HTML elements
Whether the element is to be translated when the page is localized
yes
"; "
no
type
link
Hint for the type of the referenced resource
Valid MIME type string
type
button
Type of button
submit
";
reset
";
button
type
embed
object
source
Type of embedded resource
Valid MIME type string
type
input
Type of form control
input
type keyword
type
ol
Kind of list marker
";
";
";
";
type
script
Type of script
module
"; a
valid MIME type string
that is not a
JavaScript MIME type essence match
usemap
img
Name of
image map
to use
Valid hash-name reference
value
button
option
Value to be used for
form submission
Text
value
data
Machine-readable value
Text
value
input
Value of the form control
Varies*
value
li
Ordinal value
of the list item
Valid integer
value
meter
progress
Current value of the element
Valid floating-point number
value
param
Value of parameter
Text
width
canvas
embed
iframe
img
input
object
source
(in
picture
);
video
Horizontal dimension
Valid non-negative integer
wrap
textarea
How the value of the form control is to be wrapped for
form submission
soft
";
hard
An asterisk (*) in a cell indicates that the actual rules are more
complicated than indicated in the table above.
GlobalEventHandlers/ondrag
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
9+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
GlobalEventHandlers/ondragend
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
9+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
GlobalEventHandlers/ondragenter
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
9+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
GlobalEventHandlers/ondragleave
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
9+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
GlobalEventHandlers/ondragover
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
9+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
GlobalEventHandlers/ondragstart
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
9+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
GlobalEventHandlers/ondrop
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
9+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
List of event handler content attributes
Attribute
Element(s)
Description
Value
onabort
HTML elements
abort
event handler
Event handler content attribute
onauxclick
HTML elements
auxclick
event handler
Event handler content attribute
onafterprint
body
afterprint
event handler for
Window
object
Event handler content attribute
onbeforeprint
body
beforeprint
event handler for
Window
object
Event handler content attribute
onbeforeunload
body
beforeunload
event handler for
Window
object
Event handler content attribute
onblur
HTML elements
blur
event handler
Event handler content attribute
oncancel
HTML elements
cancel
event handler
Event handler content attribute
oncanplay
HTML elements
canplay
event handler
Event handler content attribute
oncanplaythrough
HTML elements
canplaythrough
event handler
Event handler content attribute
onchange
HTML elements
change
event handler
Event handler content attribute
onclick
HTML elements
click
event handler
Event handler content attribute
onclose
HTML elements
close
event handler
Event handler content attribute
oncontextmenu
HTML elements
contextmenu
event handler
Event handler content attribute
oncopy
HTML elements
copy
event handler
Event handler content attribute
oncuechange
HTML elements
cuechange
event handler
Event handler content attribute
oncut
HTML elements
cut
event handler
Event handler content attribute
ondblclick
HTML elements
dblclick
event handler
Event handler content attribute
ondrag
HTML elements
drag
event handler
Event handler content attribute
ondragend
HTML elements
dragend
event handler
Event handler content attribute
ondragenter
HTML elements
dragenter
event handler
Event handler content attribute
ondragleave
HTML elements
dragleave
event handler
Event handler content attribute
ondragover
HTML elements
dragover
event handler
Event handler content attribute
ondragstart
HTML elements
dragstart
event handler
Event handler content attribute
ondrop
HTML elements
drop
event handler
Event handler content attribute
ondurationchange
HTML elements
durationchange
event handler
Event handler content attribute
onemptied
HTML elements
emptied
event handler
Event handler content attribute
onended
HTML elements
ended
event handler
Event handler content attribute
onerror
HTML elements
error
event handler
Event handler content attribute
onfocus
HTML elements
focus
event handler
Event handler content attribute
onformdata
HTML elements
formdata
event handler
Event handler content attribute
onhashchange
body
hashchange
event handler for
Window
object
Event handler content attribute
oninput
HTML elements
input
event handler
Event handler content attribute
oninvalid
HTML elements
invalid
event handler
Event handler content attribute
onkeydown
HTML elements
keydown
event handler
Event handler content attribute
onkeypress
HTML elements
keypress
event handler
Event handler content attribute
onkeyup
HTML elements
keyup
event handler
Event handler content attribute
onlanguagechange
body
languagechange
event handler for
Window
object
Event handler content attribute
onload
HTML elements
load
event handler
Event handler content attribute
onloadeddata
HTML elements
loadeddata
event handler
Event handler content attribute
onloadedmetadata
HTML elements
loadedmetadata
event handler
Event handler content attribute
onloadstart
HTML elements
loadstart
event handler
Event handler content attribute
onmessage
body
message
event handler for
Window
object
Event handler content attribute
onmessageerror
body
messageerror
event handler for
Window
object
Event handler content attribute
onmousedown
HTML elements
mousedown
event handler
Event handler content attribute
onmouseenter
HTML elements
mouseenter
event handler
Event handler content attribute
onmouseleave
HTML elements
mouseleave
event handler
Event handler content attribute
onmousemove
HTML elements
mousemove
event handler
Event handler content attribute
onmouseout
HTML elements
mouseout
event handler
Event handler content attribute
onmouseover
HTML elements
mouseover
event handler
Event handler content attribute
onmouseup
HTML elements
mouseup
event handler
Event handler content attribute
onoffline
body
offline
event handler for
Window
object
Event handler content attribute
ononline
body
online
event handler for
Window
object
Event handler content attribute
onpagehide
body
pagehide
event handler for
Window
object
Event handler content attribute
onpageshow
body
pageshow
event handler for
Window
object
Event handler content attribute
onpaste
HTML elements
paste
event handler
Event handler content attribute
onpause
HTML elements
pause
event handler
Event handler content attribute
onplay
HTML elements
play
event handler
Event handler content attribute
onplaying
HTML elements
playing
event handler
Event handler content attribute
onpopstate
body
popstate
event handler for
Window
object
Event handler content attribute
onprogress
HTML elements
progress
event handler
Event handler content attribute
onratechange
HTML elements
ratechange
event handler
Event handler content attribute
onreset
HTML elements
reset
event handler
Event handler content attribute
onresize
HTML elements
resize
event handler
Event handler content attribute
onrejectionhandled
body
rejectionhandled
event handler for
Window
object
Event handler content attribute
onscroll
HTML elements
scroll
event handler
Event handler content attribute
onsecuritypolicyviolation
HTML elements
securitypolicyviolation
event handler
Event handler content attribute
onseeked
HTML elements
seeked
event handler
Event handler content attribute
onseeking
HTML elements
seeking
event handler
Event handler content attribute
onselect
HTML elements
select
event handler
Event handler content attribute
onslotchange
HTML elements
slotchange
event handler
Event handler content attribute
onstalled
HTML elements
stalled
event handler
Event handler content attribute
onstorage
body
storage
event handler for
Window
object
Event handler content attribute
onsubmit
HTML elements
submit
event handler
Event handler content attribute
onsuspend
HTML elements
suspend
event handler
Event handler content attribute
ontimeupdate
HTML elements
timeupdate
event handler
Event handler content attribute
ontoggle
HTML elements
toggle
event handler
Event handler content attribute
onunhandledrejection
body
unhandledrejection
event handler for
Window
object
Event handler content attribute
onunload
body
unload
event handler for
Window
object
Event handler content attribute
onvolumechange
HTML elements
volumechange
event handler
Event handler content attribute
onwaiting
HTML elements
waiting
event handler
Event handler content attribute
onwheel
HTML elements
wheel
event handler
Event handler content attribute
Element Interfaces
This section is non-normative.
List of interfaces for elements
Element(s)
Interface(s)
HTMLAnchorElement
HTMLElement
abbr
HTMLElement
address
HTMLElement
area
HTMLAreaElement
HTMLElement
article
HTMLElement
aside
HTMLElement
audio
HTMLAudioElement
HTMLMediaElement
HTMLElement
HTMLElement
base
HTMLBaseElement
HTMLElement
bdi
HTMLElement
bdo
HTMLElement
blockquote
HTMLQuoteElement
HTMLElement
body
HTMLBodyElement
HTMLElement
br
HTMLBRElement
HTMLElement
button
HTMLButtonElement
HTMLElement
canvas
HTMLCanvasElement
HTMLElement
caption
HTMLTableCaptionElement
HTMLElement
cite
HTMLElement
code
HTMLElement
col
HTMLTableColElement
HTMLElement
colgroup
HTMLTableColElement
HTMLElement
data
HTMLDataElement
HTMLElement
datalist
HTMLDataListElement
HTMLElement
dd
HTMLElement
del
HTMLModElement
HTMLElement
details
HTMLDetailsElement
HTMLElement
dfn
HTMLElement
dialog
HTMLDialogElement
HTMLElement
div
HTMLDivElement
HTMLElement
dl
HTMLDListElement
HTMLElement
dt
HTMLElement
em
HTMLElement
embed
HTMLEmbedElement
HTMLElement
fieldset
HTMLFieldSetElement
HTMLElement
figcaption
HTMLElement
figure
HTMLElement
footer
HTMLElement
form
HTMLFormElement
HTMLElement
h1
HTMLHeadingElement
HTMLElement
h2
HTMLHeadingElement
HTMLElement
h3
HTMLHeadingElement
HTMLElement
h4
HTMLHeadingElement
HTMLElement
h5
HTMLHeadingElement
HTMLElement
h6
HTMLHeadingElement
HTMLElement
head
HTMLHeadElement
HTMLElement
header
HTMLElement
hgroup
HTMLElement
hr
HTMLHRElement
HTMLElement
html
HTMLHtmlElement
HTMLElement
HTMLElement
iframe
HTMLIFrameElement
HTMLElement
img
HTMLImageElement
HTMLElement
input
HTMLInputElement
HTMLElement
ins
HTMLModElement
HTMLElement
kbd
HTMLElement
label
HTMLLabelElement
HTMLElement
legend
HTMLLegendElement
HTMLElement
li
HTMLLIElement
HTMLElement
link
HTMLLinkElement
HTMLElement
main
HTMLElement
map
HTMLMapElement
HTMLElement
mark
HTMLElement
HTMLMenuElement
HTMLElement
meta
HTMLMetaElement
HTMLElement
meter
HTMLMeterElement
HTMLElement
nav
HTMLElement
noscript
HTMLElement
object
HTMLObjectElement
HTMLElement
ol
HTMLOListElement
HTMLElement
optgroup
HTMLOptGroupElement
HTMLElement
option
HTMLOptionElement
HTMLElement
output
HTMLOutputElement
HTMLElement
HTMLParagraphElement
HTMLElement
param
HTMLParamElement
HTMLElement
picture
HTMLPictureElement
HTMLElement
pre
HTMLPreElement
HTMLElement
progress
HTMLProgressElement
HTMLElement
HTMLQuoteElement
HTMLElement
rp
HTMLElement
rt
HTMLElement
ruby
HTMLElement
HTMLElement
samp
HTMLElement
script
HTMLScriptElement
HTMLElement
section
HTMLElement
select
HTMLSelectElement
HTMLElement
slot
HTMLSlotElement
HTMLElement
small
HTMLElement
source
HTMLSourceElement
HTMLElement
span
HTMLSpanElement
HTMLElement
strong
HTMLElement
style
HTMLStyleElement
HTMLElement
sub
HTMLElement
summary
HTMLElement
sup
HTMLElement
table
HTMLTableElement
HTMLElement
tbody
HTMLTableSectionElement
HTMLElement
td
HTMLTableCellElement
HTMLElement
template
HTMLTemplateElement
HTMLElement
textarea
HTMLTextAreaElement
HTMLElement
tfoot
HTMLTableSectionElement
HTMLElement
th
HTMLTableCellElement
HTMLElement
thead
HTMLTableSectionElement
HTMLElement
time
HTMLTimeElement
HTMLElement
title
HTMLTitleElement
HTMLElement
tr
HTMLTableRowElement
HTMLElement
track
HTMLTrackElement
HTMLElement
HTMLElement
ul
HTMLUListElement
HTMLElement
var
HTMLElement
video
HTMLVideoElement
HTMLMediaElement
HTMLElement
wbr
HTMLElement
custom elements
supplied by the element's author (inherits from
HTMLElement
All Interfaces
This section is non-normative.
AudioTrack
AudioTrackList
BarProp
BeforeUnloadEvent
BroadcastChannel
CanvasGradient
CanvasPattern
CanvasRenderingContext2D
CloseEvent
CustomElementRegistry
DOMParser
DOMStringList
DOMStringMap
DataTransfer
DataTransferItem
DataTransferItemList
DedicatedWorkerGlobalScope
Document
partial 1
DragEvent
ElementInternals
ErrorEvent
EventSource
External
FormDataEvent
HTMLAllCollection
HTMLAnchorElement
partial
HTMLAreaElement
partial
HTMLAudioElement
HTMLBRElement
partial
HTMLBaseElement
HTMLBodyElement
partial
HTMLButtonElement
HTMLCanvasElement
HTMLDListElement
partial
HTMLDataElement
HTMLDataListElement
HTMLDetailsElement
HTMLDialogElement
HTMLDirectoryElement
HTMLDivElement
partial
HTMLElement
HTMLEmbedElement
partial
HTMLFieldSetElement
HTMLFontElement
HTMLFormControlsCollection
HTMLFormElement
HTMLFrameElement
HTMLFrameSetElement
HTMLHRElement
partial
HTMLHeadElement
HTMLHeadingElement
partial
HTMLHtmlElement
partial
HTMLIFrameElement
partial
HTMLImageElement
partial
HTMLInputElement
partial
HTMLLIElement
partial
HTMLLabelElement
HTMLLegendElement
partial
HTMLLinkElement
partial
HTMLMapElement
HTMLMarqueeElement
HTMLMediaElement
HTMLMenuElement
partial
HTMLMetaElement
partial
HTMLMeterElement
HTMLModElement
HTMLOListElement
partial
HTMLObjectElement
partial
HTMLOptGroupElement
HTMLOptionElement
HTMLOptionsCollection
HTMLOutputElement
HTMLParagraphElement
partial
HTMLParamElement
partial
HTMLPictureElement
HTMLPreElement
partial
HTMLProgressElement
HTMLQuoteElement
HTMLScriptElement
partial
HTMLSelectElement
HTMLSlotElement
HTMLSourceElement
HTMLSpanElement
HTMLStyleElement
partial
HTMLTableCaptionElement
partial
HTMLTableCellElement
partial
HTMLTableColElement
partial
HTMLTableElement
partial
HTMLTableRowElement
partial
HTMLTableSectionElement
partial
HTMLTemplateElement
HTMLTextAreaElement
HTMLTimeElement
HTMLTitleElement
HTMLTrackElement
HTMLUListElement
partial
HTMLUnknownElement
HTMLVideoElement
HashChangeEvent
History
ImageBitmap
ImageBitmapRenderingContext
ImageData
Location
MediaError
MessageChannel
MessageEvent
MessagePort
MimeType
MimeTypeArray
Navigator
OffscreenCanvas
OffscreenCanvasRenderingContext2D
PageTransitionEvent
Path2D
Plugin
PluginArray
PopStateEvent
PromiseRejectionEvent
RadioNodeList
SharedWorker
SharedWorkerGlobalScope
Storage
StorageEvent
SubmitEvent
TextMetrics
TextTrack
TextTrackCue
TextTrackCueList
TextTrackList
TimeRanges
TrackEvent
ValidityState
VideoTrack
VideoTrackList
WebSocket
Window
partial
Worker
WorkerGlobalScope
WorkerLocation
WorkerNavigator
Worklet
WorkletGlobalScope
Events
This section is non-normative.
List of events
Event
Interface
Interesting targets
Description
abort
Event
Window
Fired at the
Window
when the download was aborted by the user
DOMContentLoaded
Window/DOMContentLoaded_event
Support in all current engines.
Firefox
1+
Safari
3.1+
Chrome
1+
Opera
9+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
4+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
10.1+
Event
Document
Fired at the
Document
once the parser has finished
afterprint
Window/afterprint_event
Support in all current engines.
Firefox
6+
Safari
13+
Chrome
63+
Opera
50+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Safari iOS
13+
Chrome Android
63+
WebView Android
63+
Samsung Internet
8.0+
Opera Android
46+
Event
Window
Fired at the
Window
after printing
beforeprint
Window/beforeprint_event
Support in all current engines.
Firefox
6+
Safari
13+
Chrome
63+
Opera
50+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Safari iOS
13+
Chrome Android
63+
WebView Android
63+
Samsung Internet
8.0+
Opera Android
46+
Event
Window
Fired at the
Window
before printing
beforeunload
Window/beforeunload_event
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
4+
Firefox Android
4+
Safari iOS
1+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
BeforeUnloadEvent
Window
Fired at the
Window
when the page is about to be unloaded, in case the page would like to show a warning prompt
blur
Event
Window
, elements
Fired at nodes when they stop being
focused
cancel
HTMLDialogElement/cancel_event
Firefox
78+
Safari
No
Chrome
Yes
Opera
Edge
Yes
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
No
Safari iOS
No
Chrome Android
No
WebView Android
No
Samsung Internet
No
Opera Android
No
Event
dialog
elements
Fired at
dialog
elements when they are canceled by the user (e.g. by pressing the Escape key)
change
Event
Form controls
Fired at controls when the user commits a value change (see also the
input
event)
click
PointerEvent
Elements
Normally a mouse event; also synthetically fired at an element before its
activation behavior
is run, when an element is activated from a non-pointer input device (e.g. a keyboard)
close
HTMLDialogElement/close_event
Support in one engine only.
Firefox
No
Safari
No
Chrome
Yes
Opera
Edge
Yes
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
No
Safari iOS
No
Chrome Android
No
WebView Android
No
Samsung Internet
No
Opera Android
No
WebSocket/close_event
Firefox
Yes
Safari
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
12+
Internet Explorer
Firefox Android
Yes
Safari iOS
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Event
or
CloseEvent
dialog
elements,
WebSocket
Fired at
dialog
elements when they are closed, and at
WebSocket
objects when the connection is terminated
connect
SharedWorkerGlobalScope/connect_event
Firefox
29+
Safari
No
Chrome
4+
Opera
10.6+
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
29+
Safari iOS
Chrome Android
18+
WebView Android
Yes
Samsung Internet
1.0+
Opera Android
Yes
MessageEvent
SharedWorkerGlobalScope
Fired at a shared worker's global scope when a new client connects
contextmenu
Element/contextmenu_event
Support in all current engines.
Firefox
6+
Safari
3+
Chrome
1+
Opera
10.5+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
6+
Safari iOS
1+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
11.1+
PointerEvent
Elements
Fired at elements when the user requests their context menu
copy
Event
Elements
Fired at elements when the user copies data to the clipboard
cut
Event
Elements
Fired at elements when the user copies the selected data on the clipboard and removes the
selection from the document
error
EventSource/error_event
Support in all current engines.
Firefox
6+
Safari
5+
Chrome
6+
Opera
Yes
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
45+
Safari iOS
5+
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
12+
WebSocket/error_event
Firefox
Yes
Safari
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
12+
Internet Explorer
Firefox Android
Yes
Safari iOS
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Event
or
ErrorEvent
Global scope objects,
Worker
objects, elements, networking-related objects
Fired when unexpected errors occur (e.g. networking errors, script errors, decoding errors)
focus
Event
Window
, elements
Fired at nodes
gaining focus
formdata
HTMLFormElement/formdata_event
Firefox
72+
Safari
No
Chrome
77+
Opera
64+
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
No
Safari iOS
No
Chrome Android
77+
WebView Android
77+
Samsung Internet
12.0+
Opera Android
55+
FormDataEvent
form
elements
Fired at a
form
element when it is
constructing the entry list
hashchange
Window/hashchange_event
Support in all current engines.
Firefox
3.6+
Safari
5+
Chrome
5+
Opera
10.6+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
8+
Firefox Android
4+
Safari iOS
5+
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
11+
HashChangeEvent
Window
Fired at the
Window
when the
fragment
part of the document's
URL
changes
input
HTMLElement/input_event
Support in all current engines.
Firefox
6+
Safari
3.1+
Chrome
1+
Opera
11.6+
Edge
79+
Edge (Legacy)
No
Internet Explorer
🔰 9+
Firefox Android
6+
Safari iOS
2+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
12+
Event
Form controls
Fired at controls when the user changes the value (see also the
change
event)
invalid
HTMLInputElement/invalid_event
Support in all current engines.
Firefox
4+
Safari
5+
Chrome
10+
Opera
10+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
64+
Safari iOS
5+
Chrome Android
18+
WebView Android
4+
Samsung Internet
4.0+
Opera Android
12+
Event
Form controls
Fired at controls during form validation if they do not satisfy their constraints
languagechange
Window/languagechange_event
Firefox
32+
Safari
Chrome
37+
Opera
24+
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
4+
Safari iOS
Chrome Android
37+
WebView Android
37+
Samsung Internet
4.0+
Opera Android
24+
WorkerGlobalScope/languagechange_event
Support in all current engines.
Firefox
74+
Safari
4+
Chrome
4+
Opera
11.5+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
No
Safari iOS
5.1+
Chrome Android
40+
WebView Android
37+
Samsung Internet
4.0+
Opera Android
Yes
Event
Global scope objects
Fired at the global scope object when the user's preferred languages change
load
Event
Window
, elements
Fired at the
Window
when the document has finished loading; fired at an element containing a resource (e.g.
img
embed
) when its resource has finished loading
message
BroadcastChannel/message_event
Firefox
38+
Safari
No
Chrome
54+
Opera
41+
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
38+
Safari iOS
No
Chrome Android
54+
WebView Android
54+
Samsung Internet
6.0+
Opera Android
41+
DedicatedWorkerGlobalScope/message_event
Support in all current engines.
Firefox
3.5+
Safari
4+
Chrome
4+
Opera
10.6+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
4+
Safari iOS
5.1+
Chrome Android
Yes
WebView Android
37+
Samsung Internet
Yes
Opera Android
11.5+
EventSource/message_event
Support in all current engines.
Firefox
6+
Safari
5+
Chrome
6+
Opera
Yes
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
45+
Safari iOS
5+
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
12+
MessagePort/message_event
Support in all current engines.
Firefox
Yes
Safari
5+
Chrome
4+
Opera
10.6+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
No
Safari iOS
5.1+
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
11.5+
WebSocket/message_event
Firefox
Yes
Safari
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
12+
Internet Explorer
Firefox Android
Yes
Safari iOS
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Window/message_event
Support in one engine only.
Firefox
Safari
Chrome
60+
Opera
47+
Edge
79+
Edge (Legacy)
No
Internet Explorer
Firefox Android
Safari iOS
Chrome Android
60+
WebView Android
60+
Samsung Internet
8.0+
Opera Android
47+
Worker/message_event
Support in all current engines.
Firefox
3.5+
Safari
4+
Chrome
4+
Opera
10.6+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
4+
Safari iOS
5.1+
Chrome Android
18+
WebView Android
4+
Samsung Internet
1.0+
Opera Android
11.5+
MessageEvent
Window
EventSource
WebSocket
MessagePort
BroadcastChannel
DedicatedWorkerGlobalScope
Worker
ServiceWorkerContainer
Fired at an object when it receives a message
messageerror
BroadcastChannel/messageerror_event
Firefox
57+
Safari
No
Chrome
60+
Opera
47+
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
57+
Safari iOS
No
Chrome Android
60+
WebView Android
60+
Samsung Internet
8.0+
Opera Android
47+
DedicatedWorkerGlobalScope/messageerror_event
Firefox
57+
Safari
Chrome
60+
Opera
47+
Edge
79+
Edge (Legacy)
No
Internet Explorer
Firefox Android
57+
Safari iOS
Chrome Android
60+
WebView Android
60+
Samsung Internet
8.0+
Opera Android
47+
MessagePort/messageerror_event
Firefox
57+
Safari
Chrome
60+
Opera
47+
Edge
79+
Edge (Legacy)
18
Internet Explorer
Firefox Android
57+
Safari iOS
Chrome Android
60+
WebView Android
60+
Samsung Internet
8.0+
Opera Android
47+
Window/messageerror_event
Firefox
57+
Safari
Chrome
60+
Opera
47+
Edge
79+
Edge (Legacy)
No
Internet Explorer
Firefox Android
57+
Safari iOS
Chrome Android
60+
WebView Android
60+
Samsung Internet
8.0+
Opera Android
47+
Worker/messageerror_event
Firefox
57+
Safari
Chrome
60+
Opera
47+
Edge
79+
Edge (Legacy)
18
Internet Explorer
Firefox Android
57+
Safari iOS
Chrome Android
60+
WebView Android
60+
Samsung Internet
8.0+
Opera Android
47+
MessageEvent
Window
MessagePort
BroadcastChannel
DedicatedWorkerGlobalScope
Worker
ServiceWorkerContainer
Fired at an object when it receives a message that cannot be deserialized
offline
Window/offline_event
Support in all current engines.
Firefox
Yes
Safari
Yes
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Yes
Safari iOS
Yes
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Yes
Event
Global scope objects
Fired at the global scope object when the network connections fails
online
Window/online_event
Support in all current engines.
Firefox
Yes
Safari
Yes
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Yes
Safari iOS
Yes
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Yes
Event
Global scope objects
Fired at the global scope object when the network connections returns
open
EventSource/open_event
Support in all current engines.
Firefox
6+
Safari
5+
Chrome
6+
Opera
Yes
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
45+
Safari iOS
5+
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
12+
WebSocket/open_event
Firefox
Yes
Safari
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
12+
Internet Explorer
Firefox Android
Yes
Safari iOS
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Event
EventSource
WebSocket
Fired at networking-related objects when a connection is established
pagehide
Window/pagehide_event
Support in all current engines.
Firefox
Yes
Safari
Yes
Chrome
3+
Opera
Yes
Edge
79+
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Yes
Safari iOS
Yes
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
Yes
PageTransitionEvent
Window
Fired at the
Window
when the page's entry in the
session history
stops being the
current entry
pageshow
Window/pageshow_event
Support in all current engines.
Firefox
Yes
Safari
Yes
Chrome
3+
Opera
Yes
Edge
79+
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Yes
Safari iOS
Yes
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
Yes
PageTransitionEvent
Window
Fired at the
Window
when the page's entry in the
session history
becomes the
current entry
paste
Event
Elements
Fired at elements when the user will insert the clipboard data in the most suitable
format (if any) supported for the given context
popstate
Window/popstate_event
Support in all current engines.
Firefox
4+
Safari
6+
Chrome
5+
Opera
11.5+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
4+
Safari iOS
5.1+
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
11.5+
PopStateEvent
Window
Fired at the
Window
when the user navigates the
session history
readystatechange
Document/readystatechange_event
Support in all current engines.
Firefox
Yes
Safari
Yes
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Yes
Safari iOS
Yes
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Yes
Event
Document
Fired at the
Document
when it finishes parsing and again when all its subresources have finished loading
rejectionhandled
PromiseRejectionEvent
Global scope objects
Fired at global scope objects when a previously-unhandled promise rejection becomes handled
reset
HTMLFormElement/reset_event
Support in all current engines.
Firefox
Yes
Safari
Yes
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
12+
Internet Explorer
Yes
Firefox Android
Yes
Safari iOS
Yes
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Yes
Event
form
elements
Fired at a
form
element when it is
reset
securitypolicyviolation
Event
Elements
Fired at elements when a Content Security Policy violation is generated
[CSP]
select
Event
Form controls
Fired at form controls when their text selection is adjusted (whether by an API or by the user)
slotchange
HTMLSlotElement/slotchange_event
Support in all current engines.
Firefox
63+
Safari
10.1+
Chrome
53+
Opera
40+
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
63+
Safari iOS
10.3+
Chrome Android
53+
WebView Android
53+
Samsung Internet
6.0+
Opera Android
41+
Event
slot
elements
Fired at
slot
elements when their
assigned nodes
change
storage
Window/storage_event
Support in all current engines.
Firefox
45+
Safari
4+
Chrome
1+
Opera
15+
Edge
79+
Edge (Legacy)
15+
Internet Explorer
9+
Firefox Android
45+
Safari iOS
4+
Chrome Android
18+
WebView Android
37+
Samsung Internet
1.0+
Opera Android
14+
StorageEvent
Window
Fired at
Window
event when the corresponding
localStorage
or
sessionStorage
storage areas change
submit
HTMLFormElement/submit_event
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
8+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
4+
Safari iOS
1+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
10.1+
Event
form
elements
Fired at a
form
element when it is
submitted
toggle
HTMLDetailsElement/toggle_event
Support in all current engines.
Firefox
Yes
Safari
Yes
Chrome
Yes
Opera
Yes
Edge
Yes
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
Yes
Safari iOS
Yes
Chrome Android
Yes
WebView Android
Yes
Samsung Internet
Yes
Opera Android
Yes
Event
details
element
Fired at
details
elements when they open or close
unhandledrejection
Window/unhandledrejection_event
Support in all current engines.
Firefox
69+
Safari
11+
Chrome
49+
Opera
36+
Edge
79+
Edge (Legacy)
No
Internet Explorer
No
Firefox Android
🔰 68+
Safari iOS
11.3+
Chrome Android
49+
WebView Android
49+
Samsung Internet
5.0+
Opera Android
36+
PromiseRejectionEvent
Global scope objects
Fired at global scope objects when a promise rejection goes unhandled
unload
Window/unload_event
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
4+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
4+
Firefox Android
4+
Safari iOS
1+
Chrome Android
18+
WebView Android
1+
Samsung Internet
1.0+
Opera Android
10.1+
Event
Window
Fired at the
Window
object when the page is going away
See also
media element events
and
drag-and-drop events
MIME Types
This section is non-normative.
The following MIME types are mentioned in this specification:
application/atom+xml
Atom
[ATOM]
application/ecmascript
JavaScript (legacy type)
[JAVASCRIPT]
application/javascript
JavaScript (legacy type)
[JAVASCRIPT]
application/json
JSON
[JSON]
application/x-ecmascript
JavaScript (legacy type)
[JAVASCRIPT]
application/x-javascript
JavaScript (legacy type)
[JAVASCRIPT]
application/octet-stream
Generic binary data
[RFC2046]
application/microdata+json
Microdata as JSON
application/rss+xml
RSS
application/x-www-form-urlencoded
Form submission
application/xhtml+xml
HTML
application/xml
XML
[XML]
[RFC7303]
image/gif
GIF images
[GIF]
image/jpeg
JPEG images
[JPEG]
image/png
PNG images
[PNG]
image/svg+xml
SVG images
[SVG]
multipart/form-data
Form submission
[RFC7578]
multipart/mixed
Generic mixed content
[RFC2046]
multipart/x-mixed-replace
Streaming server push
text/css
CSS
[CSS]
text/ecmascript
JavaScript (legacy type)
[JAVASCRIPT]
text/event-stream
Server-sent event streams
text/javascript
JavaScript
[JAVASCRIPT]
text/javascript1.0
JavaScript (legacy type)
[JAVASCRIPT]
text/javascript1.1
JavaScript (legacy type)
[JAVASCRIPT]
text/javascript1.2
JavaScript (legacy type)
[JAVASCRIPT]
text/javascript1.3
JavaScript (legacy type)
[JAVASCRIPT]
text/javascript1.4
JavaScript (legacy type)
[JAVASCRIPT]
text/javascript1.5
JavaScript (legacy type)
[JAVASCRIPT]
text/jscript
JavaScript (legacy type)
[JAVASCRIPT]
text/json
JSON (legacy type)
text/livescript
JavaScript (legacy type)
[JAVASCRIPT]
text/plain
Generic plain text
[RFC2046]
[RFC3676]
text/html
HTML
text/ping
Hyperlink auditing
text/uri-list
List of URLs
[RFC2483]
text/vcard
vCard
[RFC6350]
text/vtt
WebVTT
[WEBVTT]
text/x-ecmascript
JavaScript (legacy type)
[JAVASCRIPT]
text/x-javascript
JavaScript (legacy type)
[JAVASCRIPT]
text/xml
XML
[XML]
[RFC7303]
video/mp4
MPEG-4 video
[RFC4337]
video/mpeg
MPEG video
[RFC2046]
References
All references are normative unless marked "Non-normative".
[ABNF]
Augmented BNF for Syntax Specifications: ABNF
, D. Crocker, P. Overell. IETF.
[ABOUT]
The 'about' URI scheme
, S. Moonesamy. IETF.
[APNG]
(Non-normative)
APNG Specification
. S. Parmenter, V. Vukicevic, A. Smith. Mozilla.
[ARIA]
Accessible Rich Internet Applications (WAI-ARIA)
, J. Diggs, J. Nurthen, M. Cooper. W3C.
[ARIAHTML]
ARIA in HTML
, S. Faulkner, S. O'Hara. W3C.
[ATAG]
(Non-normative)
Authoring Tool Accessibility Guidelines (ATAG) 2.0
, J. Richards, J. Spellman, J. Treviranus. W3C.
[ATOM]
(Non-normative)
The Atom Syndication Format
, M. Nottingham, R. Sayre. IETF.
[BATTERY]
(Non-normative)
Battery Status API
, A. Kostiainen, M. Lamouri. W3C.
[BCP47]
Tags for Identifying Languages; Matching of Language Tags
, A. Phillips, M. Davis. IETF.
[BEZIER]
Courbes à poles
, P. de Casteljau. INPI, 1959.
[BIDI]
UAX #9: Unicode Bidirectional Algorithm
, M. Davis. Unicode Consortium.
[BOCU1]
(Non-normative)
UTN #6: BOCU-1: MIME-Compatible Unicode Compression
, M. Scherer, M. Davis. Unicode Consortium.
[CESU8]
(Non-normative)
UTR #26: Compatibility Encoding Scheme For UTF-16: 8-BIT (CESU-8)
, T. Phipps. Unicode Consortium.
[CHARMOD]
(Non-normative)
Character Model for the World Wide Web 1.0: Fundamentals
, M. Dürst, F. Yergeau, R. Ishida, M. Wolf, T. Texin. W3C.
[COMPOSITE]
Compositing and Blending
, R. Cabanier, N. Andronikos. W3C.
[COMPUTABLE]
(Non-normative)
On computable numbers, with an application to the Entscheidungsproblem
, A. Turing. In
Proceedings of the London Mathematical Society
, series 2, volume 42, pages 230-265. London Mathematical Society, 1937.
[COOKIES]
HTTP State Management Mechanism
, A. Barth. IETF.
[CSP]
Content Security Policy
, M. West, D. Veditz. W3C.
[CSS]
Cascading Style Sheets Level 2 Revision 2
, B. Bos, T. Çelik, I. Hickson, H. Lie. W3C.
[CSSALIGN]
CSS Box Alignment
, E. Etemad, T. Atkins. W3C.
[CSSANIMATIONS]
CSS Animations
, D. Jackson, D. Hyatt, C. Marrin, S. Galineau, L. Baron. W3C.
[CSSATTR]
CSS Style Attributes
, T. Çelik, E. Etemad. W3C.
[CSSBG]
CSS Backgrounds and Borders
, B. Bos, E. Etemad, B. Kemper. W3C.
[CSSBOX]
CSS Box Model
, E. Etemad. W3C.
[CSSCASCADE]
CSS Cascading and Inheritance
, E. Etemad, T. Atkins. W3C.
[CSSCOLOR]
CSS Color Module
, T. Çelik, C. Lilley, L. Baron. W3C.
[CSSCOLORADJUST]
CSS Color Adjustment Module
, E. Etemad, R. Atanassov, R. Lillesveen, T. Atkins. W3C.
[CSSDISPLAY]
CSS Display
, T. Atkins, E. Etemad. W3C.
[CSSFONTLOAD]
CSS Font Loading
, T. Atkins, J. Daggett. W3C.
[CSSFONTS]
CSS Fonts
, J. Daggett. W3C.
[CSSFLEXBOX]
CSS Flexible Box Layout
, T. Atkins, E. Etemad, R. Atanassov. W3C.
[CSSGC]
CSS Generated Content
, H. Lie, E. Etemad, I. Hickson. W3C.
[CSSGRID]
CSS Grid Layout
, T. Atkins, E. Etemad, R. Atanassov. W3C.
[CSSIMAGES]
CSS Images Module
, E. Etemad, T. Atkins, L. Verou. W3C.
[CSSIMAGES4]
CSS Images Module Level 4
, E. Etemad, T. Atkins, L. Verou. W3C.
[CSSINLINE]
CSS Inline Layout
, D. Cramer, E. Etemad. W3C.
[CSSLISTS]
CSS Lists and Counters
, T. Atkins. W3C.
[CSSLOGICAL]
CSS Logical Properties
, R. Atanassov, E. Etemad. W3C.
[CSSMULTICOL]
CSS Multi-column Layout
, H. Lie, F. Rivoal, R. Andrew. W3C.
[CSSOM]
Cascading Style Sheets Object Model (CSSOM)
, S. Pieters, G. Adams. W3C.
[CSSOMVIEW]
CSSOM View Module
, S. Pieters, G. Adams. W3C.
[CSSOVERFLOW]
CSS Overflow Module
, L. Baron, F. Rivoal. W3C.
[CSSPAINT]
(Non-normative)
CSS Painting API
, I. Kilpatrick, D. Jackson. W3C.
[CSSPOSITION]
CSS Positioned Layout
, R. Atanassov, A. Eicholz. W3C.
[CSSPSEUDO]
CSS Pseudo-Elements
, D. Glazman, E. Etemad, A. Stearns. W3C.
[CSSRUBY]
CSS3 Ruby Module
, R. Ishida. W3C.
[CSSSCOPING]
CSS Scoping Module
, T. Atkins. W3C.
[CSSSIZING]
CSS Intrinsic & Extrinsic Sizing Module
, T. Atkins, E. Etemad. W3C.
[CSSTRANSITIONS]
(Non-normative)
CSS Transitions
, D. Jackson, D. Hyatt, C. Marrin, L. Baron. W3C.
[CSSUI]
CSS3 Basic User Interface Module
, T. Çelik. W3C.
[CSSSYNTAX]
CSS Syntax
, T. Atkins, S. Sapin. W3C.
[CSSTABLE]
CSS Table
, F. Remy, G. Whitworth. W3C.
[CSSTEXT]
CSS Text
, E. Etemad, K. Ishii. W3C.
[CSSVALUES]
CSS3 Values and Units
, H. Lie, T. Atkins, E. Etemad. W3C.
[CSSWM]
CSS Writing Modes
, E. Etemad, K. Ishii. W3C.
[DASH]
Dynamic adaptive streaming over HTTP (DASH)
. ISO.
[DOM]
DOM
, A. van Kesteren, A. Gregor, Ms2ger. WHATWG.
[DOMPARSING]
DOM Parsing and Serialization
, T. Leithead. W3C.
[DOT]
(Non-normative)
The DOT Language
. Graphviz.
[E163]
Recommendation E.163 — Numbering Plan for The International Telephone Service
, CCITT Blue Book, Fascicle II.2, pp. 128-134, November 1988.
[ENCODING]
Encoding
, A. van Kesteren, J. Bell. WHATWG.
[EXECCOMMAND]
execCommand
, J. Wilm, A. Gregor. W3C Editing APIs CG.
[EXIF]
(Non-normative)
Exchangeable image file format
. JEITA.
[FETCH]
Fetch
, A. van Kesteren. WHATWG.
[FILEAPI]
File API
, A. Ranganathan. W3C.
[FILTERS]
Filter Effects
, D. Jackson, E. Dahlström, D. Schulze. W3C.
[FULLSCREEN]
Fullscreen
, A. van Kesteren, T. Çelik. WHATWG.
[GEOMETRY]
Geometry Interfaces
. S. Pieters, D. Schulze, R. Cabanier. W3C.
[GIF]
(Non-normative)
Graphics Interchange Format
. CompuServe.
[GRAPHICS]
(Non-normative)
Computer Graphics: Principles and Practice in C
, Second Edition, J. Foley, A. van Dam, S. Feiner, J. Hughes. Addison-Wesley. ISBN 0-201-84840-6.
[GREGORIAN]
(Non-normative)
Inter Gravissimas
, A. Lilius, C. Clavius. Gregory XIII Papal Bull, February 1582.
[HRT]
High Resolution Time
, I. Grigorik, J. Simonsen, J. Mann. W3C.
[HTMLAAM]
HTML Accessibility API Mappings 1.0
, S. Faulkner, A. Surkov, S. O'Hara. W3C.
[HTTP]
Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
, R. Fielding, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
, R. Fielding, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests
, R. Fielding, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Range Requests
, R. Fielding, Y. Lafon, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Caching
, R. Fielding, M. Nottingham, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Authentication
, R. Fielding, J. Reschke. IETF.
[INDEXEDDB]
Indexed Database API
, A. Alabbas, J. Bell. W3C.
[INBAND]
Sourcing In-band Media Resource Tracks from Media Containers into HTML
, S. Pfeiffer, B. Lund. W3C.
[INFRA]
Infra
, A. van Kesteren, D. Denicola. WHATWG.
[INTERSECTIONOBSERVER]
Intersection Observer
, S. Zager. W3C.
[ISO3166]
ISO 3166: Codes for the representation of names of countries and their subdivisions
. ISO.
[ISO4217]
ISO 4217: Codes for the representation of currencies and funds
. ISO.
[ISO8601]
(Non-normative)
ISO8601: Data elements and interchange formats — Information interchange — Representation of dates and times
. ISO.
[JAVASCRIPT]
ECMAScript Language Specification
. Ecma International.
[JLREQ]
Requirements for Japanese Text Layout
. W3C.
[JPEG]
JPEG File Interchange Format
, E. Hamilton.
[JSERRORSTACKS]
(Non-normative)
Error Stacks
. Ecma International.
[JSINTL]
ECMAScript Internationalization API Specification
. Ecma International.
[JSTLA]
Top-Level Await
. Ecma International.
[JSON]
The JavaScript Object Notation (JSON) Data Interchange Format
, T. Bray. IETF.
[LONGTASKS]
Long Tasks
, D. Denicola, I. Grigorik, S. Panicker. W3C.
[MAILTO]
(Non-normative)
The 'mailto' URI scheme
, M. Duerst, L. Masinter, J. Zawinski. IETF.
[MANIFEST]
Web App Manifest
, M. Caceres, K. Rohde Christiansen, M. Lamouri, A. Kostiainen, M. Giuca, A. Gustafson. W3C.
[MATHML]
Mathematical Markup Language (MathML)
, D. Carlisle, P. Ion, R. Miner. W3C.
[MEDIAFRAG]
Media Fragments URI
, R. Troncy, E. Mannens, S. Pfeiffer, D. Van Deursen. W3C.
[MEDIASOURCE]
Media Source Extensions
, A. Colwell, A. Bateman, M. Watson. W3C.
[MEDIASTREAM]
Media Capture and Streams
, D. Burnett, A. Bergkvist, C. Jennings, A. Narayanan. W3C.
[REPORTING]
Reporting
, D. Creager, I. Clelland, M. West. W3C.
[MFREL]
Microformats Wiki: existing rel values
. Microformats.
[MIMESNIFF]
MIME Sniffing
, G. Hemsley. WHATWG.
[MIX]
Mixed Content
, M. West. W3C.
[MNG]
MNG (Multiple-image Network Graphics) Format
. G. Randers-Pehrson.
[MPEG2]
ISO/IEC 13818-1: Information technology — Generic coding of moving pictures and associated audio information: Systems
. ISO/IEC.
[MPEG4]
ISO/IEC 14496-12: ISO base media file format
. ISO/IEC.
[MQ]
Media Queries
, H. Lie, T. Çelik, D. Glazman, A. van Kesteren. W3C.
[MULTIPLEBUFFERING]
(Non-normative)
Multiple buffering
. Wikipedia.
[NAVIGATIONTIMING]
Navigation Timing
, Y. Weiss. W3C.
[NAVMODEL]
A Model of Navigation History
. C. Brewster, A. Jeffrey.
[NPAPI]
(Non-normative)
Gecko Plugin API Reference
. Mozilla.
[OGGSKELETONHEADERS]
SkeletonHeaders
. Xiph.Org.
[OPENSEARCH]
Autodiscovery in HTML/XHTML
. In
OpenSearch 1.1 Draft 4
, Section 4.6.2. OpenSearch.org.
[ORIGIN]
(Non-normative)
The Web Origin Concept
, A. Barth. IETF.
[PAINTTIMING]
Paint Timing
, S. Panicker. W3C.
[PAGEVIS]
(Non-normative)
Page Visibility Level 2
, I. Grigorik, A. Jain, J. Mann. W3C.
[PAYMENTREQUEST]
Payment Request API
, M. Cáceres, D. Wang, R. Solomakhin, I. Jacobs. W3C.
[PDF]
(Non-normative)
Document management — Portable document format — Part 1: PDF
. ISO.
[PERMISSIONSPOLICY]
Permissions Policy
, I. Clelland, W3C.
[PINGBACK]
Pingback 1.0
, S. Langridge, I. Hickson.
[PNG]
Portable Network Graphics (PNG) Specification
, D. Duce. W3C.
[POINTEREVENTS]
Pointer Events
, J. Rossi, M. Brubeck, R. Byers, P. H. Lauke. W3C.
[POINTERLOCK]
Pointer Lock
, V. Scheib. W3C.
[PPUTF8]
(Non-normative)
The Properties and Promises of UTF-8
, M. Dürst. University of Zürich. In
Proceedings of the 11th International Unicode Conference
[PRELOAD]
Preload
, I. Grigorik. W3C.
[PRESENTATION]
Presentation API
, M. Foltz, D. Röttsches. W3C.
[REFERRERPOLICY]
Referrer Policy
, J. Eisinger, E. Stark. W3C.
[REQUESTIDLECALLBACK]
Cooperative Scheduling of Background Tasks
, R. McIlroy, I. Grigorik. W3C.
[RESOURCEHINTS]
Resource Hints
, I. Grigorik. W3C.
[RFC1034]
Domain Names - Concepts and Facilities
, P. Mockapetris. IETF, November 1987.
[RFC1123]
Requirements for Internet Hosts -- Application and Support
, R. Braden. IETF, October 1989.
[RFC2046]
Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types
, N. Freed, N. Borenstein. IETF.
[RFC2397]
The "data" URL scheme
, L. Masinter. IETF.
[RFC5545]
Internet Calendaring and Scheduling Core Object Specification (iCalendar)
, B. Desruisseaux. IETF.
[RFC2483]
URI Resolution Services Necessary for URN Resolution
, M. Mealling, R. Daniel. IETF.
[RFC3676]
The Text/Plain Format and DelSp Parameters
, R. Gellens. IETF.
[RFC3864]
Registration Procedures for Message Header Fields
, G. Klyne, M. Nottingham, J. Mogul. IETF.
[RFC4329]
(Non-normative)
Scripting Media Types
, B. Höhrmann. IETF.
[RFC4337]
(Non-normative)
MIME Type Registration for MPEG-4
, Y. Lim, D. Singer. IETF.
[RFC7595]
Guidelines and Registration Procedures for URI Schemes
, D. Thaler, T. Hansen, T. Hardie. IETF.
[RFC5322]
Internet Message Format
, P. Resnick. IETF.
[RFC6381]
The 'Codecs' and 'Profiles' Parameters for "Bucket" Media Types
, R. Gellens, D. Singer, P. Frojdh. IETF.
[RFC6266]
Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)
, J. Reschke. IETF.
[RFC6350]
vCard Format Specification
, S. Perreault. IETF.
[RFC6596]
The Canonical Link Relation
, M. Ohye, J. Kupke. IETF.
[RFC7034]
(Non-normative)
HTTP Header Field X-Frame-Options
, D. Ross, T. Gondrom. IETF.
[RFC7303]
XML Media Types
, H. Thompson, C. Lilley. IETF.
[RFC7578]
Returning Values from Forms: multipart/form-data
, L. Masinter. IETF.
[SCREENORIENTATION]
Screen Orientation API
, M. Lamouri, M. Cáceres. W3C.
[SCSU]
(Non-normative)
UTR #6: A Standard Compression Scheme For Unicode
, M. Wolf, K. Whistler, C. Wicksteed, M. Davis, A. Freytag, M. Scherer. Unicode Consortium.
[SECURE-CONTEXTS]
Secure Contexts
, M. West. W3C.
[SELECTION]
Selection API
, R. Niwa. W3C.
[SELECTORS]
Selectors
, E. Etemad, T. Çelik, D. Glazman, I. Hickson, P. Linss, J. Williams. W3C.
[SMS]
(Non-normative)
URI Scheme for Global System for Mobile Communications (GSM) Short Message Service (SMS)
, E. Wilde, A. Vaha-Sipila. IETF.
[STRUCTURED-FIELDS]
Structured Field Values for HTTP
, M. Nottingham, P-H. Kamp. IETF.
[SRI]
Subresource Integrity
, D. Akhawe, F. Braun, F. Marier, J. Weinberger. W3C.
[STORAGE]
Storage
, A. van Kesteren. WHATWG.
[SVG]
Scalable Vector Graphics (SVG) 2
, N Andronikos, R. Atanassov, T. Bah, B. Birtles, B. Brinza, C. Concolato, E. Dahlström, C. Lilley, C. McCormack, D. Schepers, R. Schwerdtfeger, D. Storey, S. Takagi, J. Watt. W3C.
[SW]
Service Workers
, A. Russell, J. Song, J. Archibald. W3C.
[TOR]
(Non-normative)
Tor
[TOUCH]
Touch Events
, D. Schepers, S. Moon, M. Brubeck, A. Barstow, R. Byers. W3C.
[TZDATABASE]
(Non-normative)
Time Zone Database
. IANA.
[UAAG]
(Non-normative)
User Agent Accessibility Guidelines (UAAG) 2.0
, J. Allan, K. Ford, J. Richards, J. Spellman. W3C.
[UIEVENTS]
UI Events Specification
, G. Kacmarcik, T. Leithead. W3C.
[UNICODE]
The Unicode Standard
. Unicode Consortium.
[UNIVCHARDET]
(Non-normative)
A composite approach to language/encoding detection
, S. Li, K. Momoi. Netscape. In
Proceedings of the 19th International Unicode Conference
[URL]
URL
, A. van Kesteren. WHATWG.
[URN]
URN Syntax
, R. Moats. IETF.
[UTF7]
(Non-normative)
UTF-7: A Mail-Safe Transformation Format of Unicode
, D. Goldsmith, M. Davis. IETF.
[UTF8DET]
(Non-normative)
Multilingual form encoding
, M. Dürst. W3C.
[UTR36]
(Non-normative)
UTR #36: Unicode Security Considerations
, M. Davis, M. Suignard. Unicode Consortium.
[WASMJS]
(Non-normative)
WebAssembly JavaScript Interface
, D. Ehrenberg. W3C.
[WCAG]
(Non-normative)
Web Content Accessibility Guidelines (WCAG)
, A. Kirkpatrick, J. O Connor, A. Campbell, M. Cooper. W3C.
[WEBANIMATIONS]
Web Animations
, B. Birtles, S. Stephens, D. Stockwell. W3C.
[WEBAUDIO]
(Non-normative)
Web Audio API
, P. Adenot, H. Choi. W3C.
[WEBCRYPTO]
(Non-normative)
Web Cryptography API
, M. Watson. W3C.
[WEBGL]
WebGL Specifications
, D. Jackson, J. Gilbert. Khronos Group.
[WEBIDL]
Web IDL
, C. McCormack. W3C.
[WEBLINK]
Web Linking
, M. Nottingham. IETF.
[WEBMCG]
WebM Container Guidelines
. The WebM Project.
[WEBVTT]
WebVTT
, S. Pieters. W3C.
[WHATWGWIKI]
The WHATWG Wiki
. WHATWG.
[WSP]
The WebSocket protocol
, I. Fette, A. Melnikov. IETF.
[X121]
Recommendation X.121 — International Numbering Plan for Public Data Networks
, CCITT Blue Book, Fascicle VIII.3, pp. 317-332.
[XFN]
XFN 1.1 profile
, T. Çelik, M. Mullenweg, E. Meyer. GMPG.
[XHR]
XMLHttpRequest
, A. van Kesteren. WHATWG.
[XKCD1288]
(Non-normative)
Substitutions
, Randall Munroe. xkcd.
[XML]
Extensible Markup Language
, T. Bray, J. Paoli, C. Sperberg-McQueen, E. Maler, F. Yergeau. W3C.
[XMLENTITY]
(Non-normative)
XML Entity Definitions for Characters
, D. Carlisle, P. Ion. W3C.
[XMLNS]
Namespaces in XML
, T. Bray, D. Hollander, A. Layman, R. Tobin. W3C.
[XMLSSPI]
Associating Style Sheets with XML documents
, J. Clark, S. Pieters, H. Thompson. W3C.
[XPATH10]
XML Path Language (XPath) Version 1.0
, J. Clark, S. DeRose. W3C.
[XSLT10]
(Non-normative)
XSL Transformations (XSLT) Version 1.0
, J. Clark. W3C.
[XSLTP]
(Non-normative)
DOM XSLTProcessor
, WHATWG Wiki. WHATWG.
Acknowledgments
Thanks to Tim Berners-Lee for inventing HTML, without which none of this would exist.
Thanks to

Aankhen,
Aaqa Ishtyaq,
Aaron Boodman,
Aaron Leventhal,
Aaron Krajeski,
Abhishek Ghaskata,
Abhishek Gupta,
Adam Barth,
Adam de Boor,
Adam Hepton,
Adam Klein,
Adam Roben,
Addison Phillips,
Adele Peterson,
Adrian Bateman,
Adrian Roselli,
Adrian Sutton,
Agustín Fernández,
Aharon (Vladimir) Lanin,
Ajai Tirumali,
Ajay Poshak,
Akatsuki Kitamura,
Alan Plum,
Alastair Campbell,
Alejandro G. Castro,
Alex Bishop,
Alex Nicolaou,
Alex Nozdriukhin,
Alex Rousskov,
Alex Soncodi,
Alexander Farkas,
Alexander J. Vincent,
Alexandre Dieulot,
Alexandre Morgaut,
Alexey Feldgendler,
Алексей Проскуряков (Alexey Proskuryakov),
Alexey Shvayka,
Alexis Deveria,
Alfred Agrell,
Ali Juma,
Alice Boxhall,
Alice Wonder,
Allan Clements,
Allen Wirfs-Brock,
Alex Komoroske,
Alex Russell,
Alphan Chen,
Aman Ansari,
Ami Fischman,
Amos Jeffries,
Amos Lim,
Anders Carlsson,
André Bargull,
André E. Veltstra,
Andrea Rendine,
Andreas,
Andreas Deuschlinger,
Andreas Kling,
Andrei Popescu,
Andres Gomez,
Andres Rios,
Andreu Botella,
Andrew Barfield,
Andrew Clover,
Andrew Gove,
Andrew Grieve,
Andrew Macpherson,
Andrew Oakley,
Andrew Simons,
Andrew Smith,
Andrew W. Hagen,
Andrey V. Lukyanov,
Andry Rendy,
Andy Davies,
Andy Earnshaw,
Andy Heydon,
Andy Paicu,
Andy Palay,
Anjana Vakil,
Ankur Kaushal,
Anna Belle Leiserson,
Anna Sidwell,
Anthony Boyd,
Anthony Bryan,
Anthony Hickson,
Anthony Ramine,
Anthony Ricaud,
Anton Vayvod,
Antonio Sartori,
Antti Koivisto,
Arfat Salman,
Arkadiusz Michalski,
Arne Thomassen,
Aron Spohr,
Arphen Lin,
Arthur Stolyar,
Arun Patole,
Aryeh Gregor,
Asbjørn Ulsberg,
Ashley Gullen,
Ashley Sheridan,
Atsushi Takayama,
Attila Haraszti,
Aurelien Levy,
Ave Wrigley,
Avi Drissman,
Axel Dahmen,
Ben Boyle,
Ben Godfrey,
Ben Golightly,
Ben Kelly,
Ben Lerner,
Ben Leslie,
Ben Meadowcroft,
Ben Millard,
Benjamin Carl Wiley Sittler,
Benjamin Hawkes-Lewis,
Benji Bilheimer,
Benoit Ren,
Bert Bos,
Bijan Parsia,
Bil Corry,
Bill Mason,
Bill McCoy,
Billy Wong,
Billy Woods,
Bjartur Thorlacius,
Björn Höhrmann,
Blake Frantz,
Bob Lund,
Bob Owen,
Bobby Holley,
Boris Zbarsky,
Brad Fults,
Brad Neuberg,
Brad Spencer,
Bradley Meck,
Brady Eidson,
Brandon Jones,
Brendan Eich,
Brenton Simpson,
Brett Wilson,
Brett Zamir,
Brian Birtles,
Brian Blakely,
Brian Campbell,
Brian Korver,
Brian Kuhn,
Brian M. Dube,
Brian Ryner,
Brian Smith,
Brian Wilson,
Bryan Sullivan,
Bruce Bailey,
Bruce D'Arcus,
Bruce Lawson,
Bruce Miller,
Bugs Nash,
C. Scott Ananian,
C. Williams,
Cameron McCormack,
Cameron Zemek,
Cao Yipeng,
Carlos Amengual,
Carlos Gabriel Cardona,
Carlos Ibarra López,
Carlos Perelló Marín,
Carolyn MacLeod,
Casey Leask,
Cătălin Badea,
Cătălin Mariș,
Cem Turesoy,
ceving,
Chao Cai,
윤석찬 (Channy Yun),
Charl van Niekerk,
Charlene Wright,
Charles Iliya Krempeaux,
Charles McCathie Nevile,
Charlie Reis,
白丞祐 (Cheng-You Bai),
Chris Apers,
Chris Cressman,
Chris Dumez,
Chris Evans,
Chris Harrelson,
Chris Markiewicz,
Chris Morris,
Chris Nardi,
Chris Needham,
Chris Pearce,
Chris Peterson,
Chris Rebert,
Chris Weber,
Chris Wilson,
Christian Biesinger,
Christian Johansen,
Christian Schmidt,
Christoph Päper,
Christophe Dumez,
Christopher Aillon,
Christopher Cameron,
Christopher Ferris,
Chriswa,
Clark Buehler,
Cole Robison,
Colin Fine,
Collin Jackson,
Corey Farwell,
Corprew Reed,
Craig Cockburn,
Csaba Gabor,
Csaba Marton,
Cynthia Shelly,
Cyrille Tuzi,
Daksh Shah,
Dan Callahan,
Dan Yoder,
Dane Foster,
Daniel Barclay,
Daniel Bratell,
Daniel Brooks,
Daniel Brumbaugh Keeney,
Daniel Buchner,
Daniel Cheng,
Daniel Clark,
Daniel Davis,
Daniel Ehrenberg,
Daniel Glazman,
Daniel Holbert,
Daniel Peng,
Daniel Schattenkirchner,
Daniel Spång,
Daniel Steinberg,
Daniel Tan,
Daniel Trebbien,
Danny Sullivan,
Daphne Preston-Kendal,
Darien Maillet Valentine,
Darin Adler,
Darin Fisher,
Darxus,
Dave Camp,
Dave Cramer,
Dave Hodder,
Dave Lampton,
Dave Singer,
Dave Tapuska,
Dave Townsend,
David Baron,
David Bloom,
David Bruant,
David Carlisle,
David E. Cleary,
David Egan Evans,
David Fink,
David Flanagan,
David Gerard,
David Grogan,
David Håsäther,
David Hyatt,
David I. Lehn,
David John Burrowes,
David Matja,
David Remahl,
David Resseguie,
David Smith,
David Storey,
David Vest,
David Woolley,
David Zbarsky,
Dave Methvin,
DeWitt Clinton,
Dean Edridge,
Dean Edwards,
Dean Jackson,
Debi Orton,
Delan Azabani,
Derek Featherstone,
Derek Guenther,
Devarshi Pant,
Devdatta,
Diego Ferreiro Val,
Diego González Zúñiga ,
Diego Ponce de León,
Dimitri Glazkov,
Dimitry Golubovsky,
Dirk Pranke,
Dirk Schulze,
Dirkjan Ochtman,
Divya Manian,
Dmitry Lazutkin,
Dmitry Titov,
dolphinling,
Dominic Cooney,
Dominic Farolino,
Dominique Hazaël-Massieux,
Don Brutzman,
Donovan Glover,
Doron Rosenberg,
Doug Kramer,
Doug Simpkinson,
Drew Wilson,
Edgar Chen,
Edmund Lai,
Eduard Pascual,
Eduardo Vela,
Edward Welbourne,
Edward Z. Yang,
Ehsan Akhgari,
Eira Monstad,
Eitan Adler,
Eli Friedman,
Eli Grey,
Eliot Graff,
Elisabeth Robson,
Elizabeth Castro,
Elliott Sprehn,
Elliotte Harold,
Emilio Cobos Álvarez,
Emily Stark,
Eric Carlson,
Eric Casler,
Eric Lawrence,
Eric Portis,
Eric Rescorla,
Eric Semling,
Eric Willigers,
Erik Arvidsson,
Erik Charlebois,
Erik Rose,
栗本 英理子 (Eriko Kurimoto),
espretto,
Evan Jacobs,
Evan Martin,
Evan Prodromou,
Evan Stade,
Evert,
Evgeny Kapun,
ExE-Boss,
Ezequiel Garzón,
fantasai,
Félix Sanz,
Felix Sasaki,
Fernando Altomare Serboncini,
Forbes Lindesay,
Francesco Schwarz,
Francis Brosnan Blazquez,
Franck 'Shift' Quélain,
François Marier,
Frank Barchard,
Frank Liberato,
Franklin Shirley,
Fredrik Söderquist,
鵜飼文敏 (Fumitoshi Ukai),
Futomi Hatano,
Gavin Carothers,
Gavin Kistner,
Gareth Rees,
Garrett Smith,
Gary Blackwood,
Gary Kacmarcik,
Gary Katsevman,
Geoff Richards,
Geoffrey Garen,
Georg Neis,
George Lund,
Gianmarco Armellin,
Giovanni Campagna,
Giuseppe Pascale,
Glenn Adams,
Glenn Maynard,
Graham Klyne,
Greg Botten,
Greg Houston,
Greg Wilkins,
Gregg Tavares,
Gregory J. Rosmaita,
Gregory Terzian,
Grey,
Guilherme Johansson Tramontina,
guest271314,
Gytis Jakutonis,
Håkon Wium Lie,
Habib Virji,
Hajime Morrita,
Hallvord Reiar Michaelsen Steen,
Hanna Laakso,
Hans S. Tømmerhalt,
Hans Stimer,
Harald Alvestrand,
Hayato Ito,
何志翔 (HE Zhixiang),
Henri Sivonen,
Henrik Lied,
Henry Lewis,
Henry Mason,
Henry Story,
Hermann Donfack Zeufack,
中川博貴 (Hiroki Nakagawa),
Hiroshige Hayashizaki,
Hiroyuki USHITO,
Hitoshi Yoshida,
Hongchan Choi,
Hugh Bellamy,
Hugh Guiney,
Hugh Winkler,
Ian Bicking,
Ian Clelland,
Ian Davis,
Ian Fette,
Ian Henderson,
Ian Kilpatrick,
Ibrahim Ahmed,
Ido Green,
Ignacio Javier,
Igor Oliveira,
安次嶺 一功 (Ikko Ashimine),
Ingvar Stepanyan,
isonmad,
Iurii Kucherov,
Ivan Enderlin,
Ivan Nikulin,
Ivan Panchenko,
Ivo Emanuel Gonçalves,
J. King,
J.C. Jones,
Jackson Ray Hamilton,
Jacob Davies,
Jacques Distler,
Jake Archibald,
Jake Verbaten,
Jakub Vrána,
Jakub Łopuszański,
Jakub Wilk,
James Craig,
James Graham,
James Greene,
James Justin Harrell,
James Kozianski,
James M Snell,
James Perrett,
James Robinson,
Jamie Liu,
Jamie Lokier,
Jan Kühle,
Jan Miksovsky,
Janice Shiu,
Janusz Majnert,
Jan-Ivar Bruaroey,
Jan-Klaas Kollhof,
Jared Jacobs,
Jason Duell,
Jason Kersey,
Jason Lustig,
Jason Orendorff,
Jason White,
Jasper Bryant-Greene,
Jasper St. Pierre,
Jatinder Mann,
Jean-Yves Avenard,
Jed Hartman,
Jeff Balogh,
Jeff Cutsinger,
Jeff Gilbert,
Jeff "=JeffH" Hodges,
Jeff Schiller,
Jeff Walden,
Jeffrey Yasskin,
Jeffrey Zeldman,
胡慧鋒 (Jennifer Braithwaite),
Jellybean Stonerfish,
Jennifer Apacible,
Jens Bannmann,
Jens Fendler,
Jens Oliver Meiert,
Jens Widell,
Jer Noble,
Jeremey Hustman,
Jeremy Keith,
Jeremy Orlow,
Jeremy Roman,
Jeroen van der Meer,
Jerry Smith,
Jesse Renée Beach,
Jessica Jong,
jfkthame,
Jian Li,
Jihye Hong,
Jim Jewett,
Jim Ley,
Jim Meehan,
Jim Michaels,
Jinho Bang,
Jinjiang (勾三股四),
Jirka Kosek,
Jjgod Jiang,
Joaquim Medeiros,
João Eiras,
Jochen Eisinger,
Joe Clark,
Joe Gregorio,
Joel Spolsky,
Joel Verhagen,
Joey Arhar,
Johan Herland,
Johanna Herman,
John Boyer,
John Bussjaeger,
John Carpenter,
John Daggett,
John Fallows,
John Foliot,
John Harding,
John Keiser,
John Law,
John Musgrave,
John Snyders,
John Stockton,
John-Mark Bell,
Johnny Stenback,
Jon Coppeard,
Jon Ferraiolo,
Jon Gibbins,
Jon Perlow,
Jonas Sicking,
Jonathan Cook,
Jonathan Neal,
Jonathan Oddy,
Jonathan Rees,
Jonathan Watt,
Jonathan Worent,
Jonny Axelsson,
Joram Schrijver,
Jordan Tucker,
Jorgen Horstink,
Joris van der Wel,
Jorunn Danielsen Newth,
Joseph Kesselman,
Joseph Mansfield,
Joseph Pecoraro,
Josh Aas,
Josh Hart,
Josh Juran,
Josh Levenberg,
Josh Matthews,
Joshua Bell,
Joshua Randall,
Juan Olvera,
Juanmi Huertas,
Jukka K. Korpela,
Jules Clément-Ripoche,
Julian Reschke,
Julio Lopez,
小勝 純 (Jun Kokatsu),
Jun Yang (harttle),
Jungkee Song,
Jürgen Jeka,
Justin Lebar,
Justin Novosad,
Justin Rogers,
Justin Schuh,
Justin Sinclair,
Juuso Lapinlampi,
Ka-Sing Chou,
Kagami Sascha Rosylight,
Kai Hendry,
Kamishetty Sreeja,
呂康豪 (KangHao Lu),
Karl Dubost,
Karl Tomlinson,
Kartik Arora,
Kartikaya Gupta,
葛依寧 (Kat Hackett),
Kathy Walton,
Keith Rollin,
Keith Yeung,
Kelly Ford,
Kelly Norton,
Ken Russell,
Kenji Baheux,
Kevin Benson,
Kevin Cole,
Kevin Gadd,
Kevin Venkiteswaran,
Kinuko Yasuda,
Koji Ishii,
Kornél Pál,
Kornel Lesinski,
上野 康平 (UENO, Kouhei),
Kris Northfield,
Kristof Zelechovski,
Krzysztof Maczyński,
黒澤剛志 (Kurosawa Takeshi),
Kyle Barnhart,
Kyle Hofmann,
Kyle Huey,
Léonard Bouchet,
Léonie Watson,
Lachlan Hunt,
Larry Masinter,
Larry Page,
Lars Gunther,
Lars Solberg,
Laura Carlson,
Laura Granka,
Laura L. Carlson,
Laura Wisewell,
Laurens Holst,
Lawrence Forooghian,
Lee Kowalkowski,
Leif Halvard Silli,
Leif Kornstaedt,
Lenny Domnitser,
Leonard Rosenthol,
Leons Petrazickis,
Liviu Tinta,
Lobotom Dysmon,
Logan,
Loune,
Lucas Gadani,
Łukasz Pilorz,
Luke Kenneth Casson Leighton,
Maciej Stachowiak,
Magne Andersson,
Magnus Kristiansen,
Maik Merten,
Majid Valipour,
Malcolm Rowe,
Manish Goregaokar,
Manish Tripathi,
Manuel Martinez-Almeida,
Manuel Rego Casasnovas,
Marc Hoyois,
Marc-André Choquette,
Marc-André Lafortune,
Marco Zehe,
Marcus Bointon,
Marijn Kruisselbrink,
Mark Amery,
Mark Birbeck,
Mark Davis,
Mark Green,
Mark Miller,
Mark Nottingham,
Mark Pilgrim,
Mark Rogers,
Mark Rowe,
Mark Schenk,
Mark Vickers,
Mark Wilton-Jones,
Markus Stange,
Martijn van der Ven,
Martijn Wargers,
Martin Atkins,
Martin Chaov,
Martin Dürst,
Martin Honnen,
Martin Janecke,
Martin Kutschker,
Martin Nilsson,
Martin Thomson,
Masataka Yakura,
Masatoshi Kimura,
Mason Freed,
Mason Mize,
Mathias Bynens,
Mathieu Henri,
Matias Larsson,
Matt Brubeck,
Matt Di Pasquale,
Matt Falkenhagen,
Matt Schmidt,
Matt Wright,
Matthew Gregan,
Matthew Mastracci,
Matthew Noorenberghe,
Matthew Raymond,
Matthew Thomas,
Matthew Tylee Atkinson,
Mattias Waldau,
Max Romantschuk,
Maxim Tsoy,
Mayeul Cantan,
Menachem Salomon,
Menno van Slooten,
Micah Dubinko,
Michael 'Ratt' Iannarelli,
Michael A. Nachbaur,
Michael A. Puls II,
Michael Carter,
Michael Daskalov,
Michael Day,
Michael Dyck,
Michael Enright,
Michael Gratton,
Michael Kohler,
Michael McKelvey,
Michael Nordman,
Michael Powers,
Michael Rakowski,
Michael(tm) Smith,
Michael Walmsley,
Michal Zalewski,
Michel Buffa,
Michel Fortin,
Michelangelo De Simone,
Michiel van der Blonk,
Miguel Casas-Sanchez,
Mihai Şucan,
Mihai Parparita,
Mike Brown,
Mike Dierken,
Mike Dixon,
Mike Hearn,
Mike Pennisi,
Mike Schinkel,
Mike Shaver,
Mikko Rantalainen,
Mingye Wang,
Mohamed Zergaoui,
Mohammad Al Houssami,
Mohammad Reza Zakerinasab,
Momdo Nakamura,
Morten Stenshorne,
Mounir Lamouri,
Ms2ger,
mtrootyy,
邱慕安 (Mu-An Chiou),
Mukilan Thiyagarajan,
Mustaq Ahmed,
Myles Borins,
Nadia Heninger,
NARUSE Yui,
Navid Zolghadr,
Neil Deakin,
Neil Rashbrook,
Neil Soiffer,
Nicholas Shanks,
Nicholas Stimpson,
Nicholas Zakas,
Nickolay Ponomarev,
Nicolas Gallagher,
Nicolas Pena Moreno,
Nikki Bee,
Noah Mendelsohn,
Noah Slater,
Noel Gordon,
Nolan Waite,
NoozNooz42,
Norbert Lindenberg,
Oisín Nolan,
Ojan Vafai,
Olaf Hoffmann,
Olav Junker Kjær,
Oldřich Vetešník,
Oli Studholme,
Oliver Hunt,
Oliver Rigby,
Olivia (Xiaoni) Lai,
Olivier Gendrin,
Olli Pettay,
Ondřej Žára,
Ori Avtalion,
oSand,
Pablo Flouret,
Patrick Dark,
Patrick Garies,
Patrick H. Lauke,
Patrik Persson,
Paul Adenot,
Paul Lewis,
Paul Norman,
Per-Erik Brodin,
一丝 (percyley),
Perry Smith,
Peter Beverloo,
Peter Karlsson,
Peter Kasting,
Peter Moulder,
Peter Occil,
Peter Stark,
Peter Van der Beken,
Peter van der Zee,
Peter-Paul Koch,
Phil Pickering,
Philip Ahlberg,
Philip Taylor,
Philip TAYLOR,
Philippe De Ryck,
Pierre-Arnaud Allumé,
Pierre-Marie Dartus,
‏ Pooja Sanklecha,
Prashant Hiremath,
Prashanth Chandra,
Prateek Rungta,
Pravir Gupta,
Prayag Verma,
李普君 (Pujun Li),
Rachid Finge,
Rafael Weinstein,
Rafał Miłecki,
Rahul Purohit,
Raj Doshi,
Rajas Moonka,
Rakina Zata Amni,
Ralf Stoltze,
Ralph Giles,
Raphael Champeimont,
Rebecca Star,
Remci Mizkur,
Remco,
Remy Sharp,
Rene Saarsoo,
Rene Stach,
Ric Hardacre,
Rich Clark,
Rich Doughty,
Richa Rupela,
Richard Gibson,
Richard Ishida,
Ricky Mondello,
Rigo Wenning,
Rikkert Koppes,
Rimantas Liubertas,
Riona Macnamara,
Rob Buis,
Rob Ennals,
Rob Jellinghaus,
Rob S,
Rob Smith,
Robert Blaut,
Robert Collins,
Robert Hogan,
Robert Kieffer,
Robert Linder,
Robert Millan,
Robert O'Callahan,
Robert Sayre,
Robin Berjon,
Robin Schaufler,
Rodger Combs,
Roland Steiner,
Roma Matusevich,
Roman Ivanov,
Roy Fielding,
Rune Lillesveen,
Russell Bicknell,
Ruud Steltenpool,
Ryan King,
Ryan Landay,
Ryan Sleevi,
Ryo Kato,
Ryosuke Niwa,
S. Mike Dierken,
Salvatore Loreto,
Sam Dutton,
Sam Kuper,
Sam Ruby,
Sam Sneddon,
Sam Weinig,
Samikshya Chand,
Samuel Bronson,
Samy Kamkar,
Sander van Lambalgen,
Sanjoy Pal,
Sarah Gebauer,
Sarven Capadisli,
Satrujit Behera,
Schalk Neethling,
Scott Beardsley,
Scott González,
Scott Hess,
Scott Miles,
Scott O'Hara,
Sean B. Palmer,
Sean Feng,
Sean Fraser,
Sean Hayes,
Sean Hogan,
Sean Knapp,
Sebastian Markbåge,
Sebastian Schnitzenbaumer,
Sendil Kumar N,
Seth Call,
Seth Dillingham,
Shannon Moeller,
Shanti Rao,
Shaun Inman,
Shiino Yuki,
贺师俊 (HE Shi-Jun),
Shiki Okasaka,
Shivani Sharma,
shreyateeza,
Shubheksha Jalan,
Sidak Singh Aulakh,
Sierk Bornemann,
Sigbjørn Finne,
Sigbjørn Vik,
Silver Ghost,
Silvia Pfeiffer,
Šime Vidas,
Simon Fraser,
Simon Montagu,
Simon Sapin,
Yu Han,
Simon Spiegel,
skeww,
Smylers,
Srirama Chandra Sekhar Mogali,
Stanton McCandlish,
stasoid,
Stefan Håkansson,
Stefan Haustein,
Stefan Santesson,
Stefan Schumacher,
Ştefan Vargyas,
Stefan Weiss,
Steffen Meschkat,
Stephen Ma,
Stephen Stewart,
Stephen White,
Steve Comstock,
Steve Faulkner,
Steve Orvell,
Steve Runyon,
Steven Bennett,
Steven Bingler,
Steven Garrity,
Steven Tate,
Stewart Brodie,
Stuart Ballard,
Stuart Langridge,
Stuart Parmenter,
Subramanian Peruvemba,
Sudhanshu Jaiswal,
sudokus999,
Sunava Dutta,
Surma,
Susan Borgrink,
Susan Lesch,
Sylvain Pasche,
T. J. Crowder,
Tab Atkins-Bittner,
Taiju Tsuiki,
Takashi Toyoshima,
Takayoshi Kochi,
Takeshi Yoshino,
Tantek Çelik
田村健人 (Kent TAMURA),
Taylor Hunt,
Ted Mielczarek,
Terrence Wood,
Tetsuharu OHZEKI,
Theresa O'Connor,
Thijs van der Vossen,
Thomas Broyer,
Thomas Koetter,
Thomas O'Connor,
Tim Altman,
Tim Dresser,
Tim Johansson,
Tim Perry,
Tim van der Lippe,
TJ VanToll,
Tobias Schneider,
Tobie Langel,
Toby Inkster,
Todd Moody,
Tom Baker,
Tom Pike,
Tom Schuster,
Tom ten Thij,
Tomasz Jakut,
Tomek Wytrębowicz,
Tommy Thorsen,
Tony Ross,
Tooru Fujisawa,
Toru Kobayashi,
Travis Leithead,
Trevor Rowbotham,
Trevor Saunders,
Trey Eckels,
triple-underscore,
Tristan Fraipont,
Tyler Close,
Valentin Gosu,
Vardhan Gupta,
Veli Şenol,
Victor Carbune,
Victor Costan,
Vipul Snehadeep Chawathe,
Vitya Muhachev,
Vlad Levin,
Vladimir Katardjiev,
Vladimir Vukićević,
Vyacheslav Aristov,
voracity,
Walter Steiner,
Wakaba,
Wayne Carr,
Wayne Pollock,
Wellington Fernando de Macedo,
Weston Ruter,
Wilhelm Joys Andersen,
Will Levine,
Will Ray,
William Chen,
William Swanson,
Willy Martin Aguirre Rodriguez,
Wladimir Palant,
Wojciech Mach,
Wolfram Kriesing,
Xan Gregg,
xenotheme,
XhmikosR,
Xida Chen,
Xidorn Quan,
Xue Fuqiao,
Yang Chen,
Yao Xiao,
Yash Handa,
Yay295,
Ye-Kui Wang,
Yehuda Katz,
Yi Xu,
Yi-An Huang,
Yngve Nysaeter Pettersen,
Yoav Weiss,
Yonathan Randolph,
Yu Huojiang,
Yury Delendik,
平野裕 (Yutaka Hirano),
Yuzo Fujishima,
Zhenbin Xu,
张智强 (Zhiqiang Zhang),
Zoltan Herczeg,
and
Øistein E. Andersen,

for their useful comments, both large and small, that have led to changes to this specification
over the years.
Thanks also to everyone who has ever posted about HTML to their blogs, public mailing lists, or
forums, including all the contributors to the
various
W3C HTML WG lists
and the
various WHATWG
lists
Special thanks to Richard Williamson for creating the first implementation of
canvas
in Safari, from which the canvas feature was designed.
Special thanks also to the Microsoft employees who first implemented the event-based
drag-and-drop mechanism,
contenteditable
, and other
features first widely deployed by the Windows Internet Explorer browser.
Special thanks and $10,000 to David Hyatt who came up with a broken implementation
of the
adoption agency algorithm
that the editor had to reverse
engineer and fix before using it in the parsing section.
Thanks to the participants of the microdata usability study for allowing us to use their
mistakes as a guide for designing the microdata feature.
Thanks to the many sources that provided inspiration for the examples used in the
specification.
Thanks also to the Microsoft blogging community for some ideas, to the attendees of the W3C
Workshop on Web Applications and Compound Documents for inspiration, to the #mrt crew, the #mrt.no
crew, and the #whatwg crew, and to Pillar and Hedral for their ideas and support.
Thanks to Igor Zhbanov for generating PDF versions of the specification.
Special thanks to the
RICG
for developing
the
picture
element and related features; in particular thanks to Adrian Bateman,
Bruce Lawson, David Newton, Ilya Grigorik, John Schoenick, Leon de Rijke, Mat Marquis, Marcos
Cáceres, Tab Atkins, Theresa O'Connor, and Yoav Weiss for their contributions.
Special thanks to the
WPWG
for incubating the
custom elements
feature. In particular, thanks to David Hyatt and
Ian Hickson for their influence through the XBL specifications, Dimitri Glazkov for the first
draft of the custom elements specification, and to
Alex Komoroske,
Alex Russell,
Andres Rios,
Boris Zbarsky,
Brian Kardell,
Daniel Buchner,
Dominic Cooney,
Erik Arvidsson,
Elliott Sprehn,
Hajime Morrita,
Hayato Ito,
Jan Miksovsky,
Jonas Sicking,
Olli Pettay,
Rafael Weinstein,
Roland Steiner,
Ryosuke Niwa,
Scott Miles,
Steve Faulkner,
Steve Orvell,
Tab Atkins,
Theresa O'Connor,
Tim Perry, and
William Chen
for their contributions.
Special thanks to the
CSSWG
for developing
the
worklets
. In particular, thanks to Ian Kilpatrik for his work as
editor of the original worklets specification.
For about ten years starting in 2003, this standard was almost entirely written by
Ian Hickson (
Google
ian@hixie.ch
).
More recently,
Simon Pieters (
Bocoup
zcorpan@gmail.com
),
Anne van Kesteren
Mozilla
annevk@annevk.nl
),
Philip Jägenstedt
Google
philip@foolip.org
), and
Domenic Denicola
Google
d@domenic.me
),
all previously long-time contributors, have joined Ian in editing the text directly.
Intellectual property rights
The image in the introduction is based on
a photo
by
Wonderlane
CC BY 2.0
The image of the wolf in the embedded content introduction is based on
a photo
by
Barry O'Neill
Public domain
The image of the kettlebell swing in the embedded content introduction is based on
a photo
by
kokkarina
CC0 1.0
The Blue Robot Player sprite used in the canvas demo is based on
a work
by
JohnColburn
CC BY-SA 3.0
The photograph of robot 148 climbing the tower at the FIRST Robotics Competition 2013 Silicon Valley Regional is based on
a work
by
Lenore Edman
CC BY 2.0
The diagram showing how
async
and
defer
impact
script
loading is based on a
similar diagram from
blog post
by
Peter Beverloo
CC0 1.0
The image decoding demo used to demonstrate module-based workers draws on some example code
from
tutorial
by
Ilmari Heikkinen
CC BY 3.0
The

example was inspired by
a custom element
by
Steven
Skelton
. (
MIT
Part of the revision history of the
picture
element and related features can be found in the
ResponsiveImagesCG/picture-element
repository
, which is available under the
W3C Software and
Document License
Part of the revision history of the
theme-color
metadata name can be found in the
whatwg/meta-theme-color
repository
, which is available under
CC0
Part of the revision history of the
custom elements
feature can be found in the
w3c/webcomponents
repository
, which
is available under the
W3C Software and
Document License
Part of the revision history of the
innerText
getter and setter can be found in the
rocallahan/innerText-spec
repository
, which is available under
CC0
Part of the revision history of the
worklets
feature can be found in the
w3c/css-houdini-drafts
repository
, which is available under the
W3C Software and
Document License
Copyright © WHATWG (Apple, Google, Mozilla, Microsoft). This work is licensed under a
Creative Commons Attribution 4.0
International License
. To the extent portions of it are incorporated into source code, such
portions in the source code are licensed under the
BSD 3-Clause License
instead.
This is the Living Standard. Those interested in the patent-review version
should view the
Living Standard Review Draft