4 The elements of HTML
4.1 The root element
4.1.1
The html element
- Categories:
- None.
- Contexts in which this element can be used:
- As the root element of a document.
- Wherever a subdocument fragment is allowed in a compound document.
- Content model:
- A
headelement followed by abodyelement. - Tag omission in text/html:
- An
htmlelement's start tag can be omitted if the first thing inside thehtmlelement is not a comment. - An
htmlelement's end tag can be omitted if thehtmlelement is not immediately followed by a comment. - Content attributes:
- Global attributes
-
manifest— Application cache manifest - DOM interface:
-
interface HTMLHtmlElement : HTMLElement {};
The html element represents the root of an HTML document.
Authors are encouraged to specify a lang attribute on the root
html element, giving the document's language. This aids speech synthesis tools to
determine what pronunciations to use, translation tools to determine what rules to use, and so
forth.
The manifest attribute gives the address of
the document's application cache manifest, if there is one. If the attribute is present,
the attribute's value must be a valid non-empty URL potentially surrounded by
spaces.
The manifest attribute only has an effect during the early stages of document load.
Changing the attribute dynamically thus has no effect (and thus, no DOM API is provided for this
attribute).
For the purposes of application cache
selection, later base elements cannot affect the resolving of relative URLs in manifest
attributes, as the attributes are processed before those elements are seen.
The window.applicationCache IDL
attribute provides scripted access to the offline application cache mechanism.
The html element in the following example declares that the document's language
is English.
<!DOCTYPE html> <html lang="en"> <head> <title>Swapping Songs</title> </head> <body> <h1>Swapping Songs</h1> <p>Tonight I swapped some of the songs I wrote with some friends, who gave me some of the songs they wrote. I love sharing my music.</p> </body> </html>
4.2 Document metadata
4.2.1
The head element
- Categories:
- None.
- Contexts in which this element can be used:
- As the first element in an
htmlelement. - Content model:
- If the document is an
iframesrcdocdocument or if title information is available from a higher-level protocol: Zero or more elements of metadata content, of which no more than one is atitleelement and no more than one is abaseelement. - Otherwise: One or more elements of metadata content, of which exactly one is a
titleelement and no more than one is abaseelement. - Tag omission in text/html:
- A
headelement's start tag can be omitted if the element is empty, or if the first thing inside theheadelement is an element. - A
headelement's end tag can be omitted if theheadelement is not immediately followed by a space character or a comment. - Content attributes:
- Global attributes
- DOM interface:
-
interface HTMLHeadElement : HTMLElement {};
The head element represents a collection of metadata for the
Document.
The collection of metadata in a head element can be large or small. Here is an
example of a very short one:
<!doctype html> <html> <head> <title>A document with a short head</title> </head> <body> ...
Here is an example of a longer one:
<!DOCTYPE HTML> <HTML> <HEAD> <META CHARSET="UTF-8"> <BASE HREF="http://www.example.com/"> <TITLE>An application with a long head</TITLE> <LINK REL="STYLESHEET" HREF="default.css"> <LINK REL="STYLESHEET ALTERNATE" HREF="big.css" TITLE="Big Text"> <SCRIPT SRC="support.js"></SCRIPT> <META NAME="APPLICATION-NAME" CONTENT="Long headed application"> </HEAD> <BODY> ...
The title element is a required child in most situations, but when a
higher-level protocol provides title information, e.g. in the Subject line of an e-mail when HTML
is used as an e-mail authoring format, the title element can be omitted.
4.2.2
The title element
- Categories:
- Metadata content.
- Contexts in which this element can be used:
- In a
headelement containing no othertitleelements. - Content model:
- Text that is not inter-element whitespace.
- Tag omission in text/html:
- Neither tag is omissible.
- Content attributes:
- Global attributes
- DOM interface:
-
interface HTMLTitleElement : HTMLElement { attribute DOMString text; };
The title element represents the document's title or name. Authors
should use titles that identify their documents even when they are used out of context, for
example in a user's history or bookmarks, or in search results. The document's title is often
different from its first heading, since the first heading does not have to stand alone when taken
out of context.
There must be no more than one title element per document.
If it's reasonable for the Document to have no title, then the
title element is probably not required. See the head element's content
model for a description of when the element is required.
-
title .
text[ = value ] -
Returns the contents of the element, ignoring child nodes that aren't
Textnodes.Can be set, to replace the element's children with the given value.
Here are some examples of appropriate titles, contrasted with the top-level headings that might be used on those same pages.
<title>Introduction to The Mating Rituals of Bees</title>
...
<h1>Introduction</h1>
<p>This companion guide to the highly successful
<cite>Introduction to Medieval Bee-Keeping</cite> book is...
The next page might be a part of the same site. Note how the title describes the subject matter unambiguously, while the first heading assumes the reader knows what the context is and therefore won't wonder if the dances are Salsa or Waltz:
<title>Dances used during bee mating rituals</title>
...
<h1>The Dances</h1>
The string to use as the document's title is given by the document.title IDL attribute.
4.2.3
The base element
- Categories:
- Metadata content.
- Contexts in which this element can be used:
- In a
headelement containing no otherbaseelements. - Content model:
- Empty.
- Tag omission in text/html:
- No end tag.
- Content attributes:
- Global attributes
-
href— Document base URL -
target— Default browsing context for hyperlink navigation and form submission - DOM interface:
-
interface HTMLBaseElement : HTMLElement { attribute DOMString href; attribute DOMString target; };
The base element allows authors to specify the document base URL for
the purposes of resolving relative URLs, and the name of the
default browsing context for the purposes of following hyperlinks. The
element does not represent any content beyond this
information.
There must be no more than one base element per document.
A base element must have either an href
attribute, a target attribute, or both.
The href content attribute, if specified, must
contain a valid URL potentially surrounded by spaces.
A base element, if it has an href attribute,
must come before any other elements in the tree that have attributes defined as taking URLs, except the html element (its manifest attribute isn't affected by base
elements).
The target attribute, if specified, must
contain a valid browsing context name or keyword, which specifies which
browsing context is to be used as the default when hyperlinks and forms in the
Document cause navigation.
A base element, if it has a target
attribute, must come before any elements in the tree that represent hyperlinks.
In this example, a base element is used to set the document base
URL:
<!DOCTYPE html>
<html>
<head>
<title>This is an example for the <base> element</title>
<base href="http://www.example.com/news/index.html">
</head>
<body>
<p>Visit the <a href="archives.html">archives</a>.</p>
</body>
</html>
The link in the above example would be a link to "http://www.example.com/news/archives.html".
4.2.4
The link element
- Categories:
- Metadata content.
- If the
itempropattribute is present: flow content. - If the
itempropattribute is present: phrasing content. - Contexts in which this element can be used:
- Where metadata content is expected.
- In a
noscriptelement that is a child of aheadelement. - If the
itempropattribute is present: where phrasing content is expected. - Content model:
- Empty.
- Tag omission in text/html:
- No end tag.
- Content attributes:
- Global attributes
-
href— Address of the hyperlink -
crossorigin— How the element handles crossorigin requests -
rel— Relationship between the document containing the hyperlink and the destination resource -
media— Applicable media -
hreflang— Language of the linked resource -
type— Hint for the type of the referenced resource -
sizes— Sizes of the icons (forrel="icon") - Also, the
titleattribute has special semantics on this element: Title of the link; alternative style sheet set name. - DOM interface:
-
interface HTMLLinkElement : HTMLElement { attribute DOMString href; attribute DOMString crossOrigin; attribute DOMString rel; readonly attribute DOMTokenList relList; attribute DOMString media; attribute DOMString hreflang; attribute DOMString type; [PutForwards=value] readonly attribute DOMSettableTokenList sizes; }; HTMLLinkElement implements LinkStyle;
The link element allows authors to link their document to other resources.
The destination of the link(s) is given by the href attribute, which must be present and must contain a
valid non-empty URL potentially surrounded by spaces.
A link element must have either a rel attribute
or an itemprop attribute, but not both.
If the rel attribute is used, the element is
restricted to the head element. When used with the itemprop attribute, the element can be used both in the
head element and in the body of the page, subject to the constraints of
the microdata model.
The types of link indicated (the relationships) are given by the value of the rel attribute, which, if present, must have a value that
is a set of space-separated tokens. The allowed keywords and
their meanings are defined in a later section.
Two categories of links can be created using the link element: Links to external resources and hyperlinks. The link types section defines
whether a particular link type is an external resource or a hyperlink. One link
element can create multiple links (of which some might be external resource links and some might
be hyperlinks); exactly which and how many links are created depends on the keywords given in the
rel attribute. User agents must process the links on a per-link
basis, not a per-element basis.
Each link created for a link element is handled separately. For
instance, if there are two link elements with rel="stylesheet",
they each count as a separate external resource, and each is affected by its own attributes
independently. Similarly, if a single link element has a rel attribute with the value next stylesheet,
it creates both a hyperlink (for the next keyword) and
an external resource link (for the stylesheet
keyword), and they are affected by other attributes (such as media or title)
differently.
For example, the following link element creates two hyperlinks (to the same
page):
<link rel="author license" href="/about">
The two links created by this element are one whose semantic is that the target page has information about the current page's author, and one whose semantic is that the target page has information regarding the license under which the current page is provided.
The crossorigin attribute is a CORS
settings attribute. It is intended for use with external resource links.
The exact behavior for links to external resources depends on the exact relationship, as defined for the relevant link type. Some of the attributes control whether or not the external resource is to be applied (as defined below).
Hyperlinks created with the link element and its rel attribute apply to the whole page. This contrasts with the rel attribute of a and area elements,
which indicates the type of a link whose context is given by the link's location within the
document.
The media attribute says which media the
resource applies to. The value must be a valid media query.
The default, if the media attribute is
omitted, is "all", meaning that by default links apply to all media.
The hreflang attribute on the
link element has the same semantics as the hreflang attribute on a and
area elements.
The type attribute gives the MIME
type of the linked resource. It is purely advisory. The value must be a valid MIME
type.
For external resource links, the type attribute is used as a hint to user agents so that they can
avoid fetching resources they do not support.
The title attribute gives the title of the
link. With one exception, it is purely advisory. The value is text. The exception is for style
sheet links, where the title attribute defines
alternative style sheet sets.
The title attribute on link
elements differs from the global title attribute of most other
elements in that a link without a title does not inherit the title of the parent element: it
merely has no title.
The sizes attribute is used with the icon link type. The attribute must not be specified on link
elements that do not have a rel attribute that specifies the
icon keyword.
The LinkStyle interface is also implemented by this element. [CSSOM]
Here, a set of link elements provide some style sheets:
<!-- a persistent style sheet --> <link rel="stylesheet" href="default.css"> <!-- the preferred alternate style sheet --> <link rel="stylesheet" href="green.css" title="Green styles"> <!-- some alternate style sheets --> <link rel="alternate stylesheet" href="contrast.css" title="High contrast"> <link rel="alternate stylesheet" href="big.css" title="Big fonts"> <link rel="alternate stylesheet" href="wide.css" title="Wide screen">
The following example shows how you can specify versions of the page that use alternative formats, are aimed at other languages, and that are intended for other media:
<link rel=alternate href="/en/html" hreflang=en type=text/html title="English HTML"> <link rel=alternate href="/fr/html" hreflang=fr type=text/html title="French HTML"> <link rel=alternate href="/en/html/print" hreflang=en type=text/html media=print title="English HTML (for printing)"> <link rel=alternate href="/fr/html/print" hreflang=fr type=text/html media=print title="French HTML (for printing)"> <link rel=alternate href="/en/pdf" hreflang=en type=application/pdf title="English PDF"> <link rel=alternate href="/fr/pdf" hreflang=fr type=application/pdf title="French PDF">
4.2.5
The meta element
- Categories:
- Metadata content.
- If the
itempropattribute is present: flow content. - If the
itempropattribute is present: phrasing content. - Contexts in which this element can be used:
- If the
charsetattribute is present, or if the element'shttp-equivattribute is in the Encoding declaration state: in aheadelement. - If the
http-equivattribute is present but not in the Encoding declaration state: in aheadelement. - If the
http-equivattribute is present but not in the Encoding declaration state: in anoscriptelement that is a child of aheadelement. - If the
nameattribute is present: where metadata content is expected. - If the
itempropattribute is present: where metadata content is expected. - If the
itempropattribute is present: where phrasing content is expected. - Content model:
- Empty.
- Tag omission in text/html:
- No end tag.
- Content attributes:
- Global attributes
-
name— Metadata name -
http-equiv— Pragma directive -
content— Value of the element -
charset— Character encoding declaration - DOM interface:
-
interface HTMLMetaElement : HTMLElement { attribute DOMString name; attribute DOMString httpEquiv; attribute DOMString content; };
The meta element represents various kinds of metadata that cannot be
expressed using the title, base, link, style,
and script elements.
The meta element can represent document-level metadata with the name attribute, pragma directives with the http-equiv attribute, and the file's character encoding
declaration when an HTML document is serialised to string form (e.g. for transmission over
the network or for disk storage) with the charset
attribute.
Exactly one of the name, http-equiv, charset,
and itemprop attributes must be specified.
If either name, http-equiv, or itemprop is
specified, then the content attribute must also be
specified. Otherwise, it must be omitted.
The charset attribute specifies the character
encoding used by the document. This is a character encoding declaration. If the
attribute is present in an XML document, its value must be an
ASCII case-insensitive match for the string "UTF-8" (and the
document is therefore forced to use UTF-8 as its encoding).
The charset attribute on the
meta element has no effect in XML documents, and is only allowed in order to
facilitate migration to and from XHTML.
There must not be more than one meta element with a charset attribute per document.
The content attribute gives the value of the
document metadata or pragma directive when the element is used for those purposes. The allowed
values depend on the exact context, as described in subsequent sections of this specification.
If a meta element has a name
attribute, it sets document metadata. Document metadata is expressed in terms of name-value pairs,
the name attribute on the meta element giving the
name, and the content attribute on the same element giving
the value. The name specifies what aspect of metadata is being set; valid names and the meaning of
their values are described in the following sections. If a meta element has no content attribute, then the value part of the metadata name-value
pair is the empty string.
4.2.5.1 Standard metadata names
This specification defines a few names for the name
attribute of the meta element.
Names are case-insensitive.
application-name-
The value must be a short free-form string giving the name of the Web application that the page represents. If the page is not a Web application, the
application-namemetadata name must not be used. Translations of the Web application's name may be given, using thelangattribute to specify the language of each name.There must not be more than one
metaelement with a given language and with itsnameattribute set to the valueapplication-nameper document. authorThe value must be a free-form string giving the name of one of the page's authors.
descriptionThe value must be a free-form string that describes the page. The value must be appropriate for use in a directory of pages, e.g. in a search engine. There must not be more than one
metaelement with itsnameattribute set to the valuedescriptionper document.generator-
The value must be a free-form string that identifies one of the software packages used to generate the document. This value must not be used on pages whose markup is not generated by software, e.g. pages whose markup was written by a user in a text editor.
Here is what a tool called "Frontweaver" could include in its output, in the page's
headelement, to identify itself as the tool used to generate the page:<meta name=generator content="Frontweaver 8.2">
keywords-
The value must be a set of comma-separated tokens, each of which is a keyword relevant to the page.
This page about typefaces on British motorways uses a
metaelement to specify some keywords that users might use to look for the page:<!DOCTYPE HTML> <html> <head> <title>Typefaces on UK motorways</title> <meta name="keywords" content="british,type face,font,fonts,highway,highways"> </head> <body> ...
Many search engines do not consider such keywords, because this feature has historically been used unreliably and even misleadingly as a way to spam search engine results in a way that is not helpful for users.
4.2.5.2 Other metadata names
Extensions to the predefined set of metadata names may be registered in the WHATWG Wiki MetaExtensions page. [WHATWGWIKI]
Anyone is free to edit the WHATWG Wiki MetaExtensions page at any time to add a type. These new names must be specified with the following information:
- Keyword
The actual name being defined. The name should not be confusingly similar to any other defined name (e.g. differing only in case).
- Brief description
A short non-normative description of what the metadata name's meaning is, including the format the value is required to be in.
- Specification
- A link to a more detailed description of the metadata name's semantics and requirements. It could be another page on the Wiki, or a link to an external page.
- Synonyms
A list of other names that have exactly the same processing requirements. Authors should not use the names defined to be synonyms, they are only intended to allow user agents to support legacy content. Anyone may remove synonyms that are not used in practice; only names that need to be processed as synonyms for compatibility with legacy content are to be registered in this way.
- Status
-
One of the following:
- Proposed
- The name has not received wide peer review and approval. Someone has proposed it and is, or soon will be, using it.
- Ratified
- The name has received wide peer review and approval. It has a specification that unambiguously defines how to handle pages that use the name, including when they use it in incorrect ways.
- Discontinued
- The metadata name has received wide peer review and it has been found wanting. Existing pages are using this metadata name, but new pages should avoid it. The "brief description" and "specification" entries will give details of what authors should use instead, if anything.
If a metadata name is found to be redundant with existing values, it should be removed and listed as a synonym for the existing value.
If a metadata name is registered in the "proposed" state for a period of a month or more without being used or specified, then it may be removed from the registry.
If a metadata name is added with the "proposed" status and found to be redundant with existing values, it should be removed and listed as a synonym for the existing value. If a metadata name is added with the "proposed" status and found to be harmful, then it should be changed to "discontinued" status.
Anyone can change the status at any time, but should only do so in accordance with the definitions above.
Metadata names whose values are to be URLs must not be proposed or
accepted. Links must be represented using the link element, not the meta
element.
4.2.5.3 Pragma directives
When the http-equiv attribute is specified
on a meta element, the element is a pragma directive.
The http-equiv attribute is an enumerated
attribute. The following table lists the keywords defined for this attribute. The states
given in the first cell of the rows with keywords give the states to which those keywords map.
| State | Keyword | Notes |
|---|---|---|
| Encoding declaration |
content-type
|
|
| Default style |
default-style
|
|
| Refresh |
refresh
|
-
Encoding declaration state (
http-equiv="content-type") -
The Encoding declaration state is just an alternative form of setting the
charsetattribute: it is a character encoding declaration.For
metaelements with anhttp-equivattribute in the Encoding declaration state, thecontentattribute must have a value that is an ASCII case-insensitive match for a string that consists of: the literal string "text/html;", optionally followed by any number of space characters, followed by the literal string "charset=", followed by one of the labels of the character encoding of the character encoding declaration.A document must not contain both a
metaelement with anhttp-equivattribute in the Encoding declaration state and ametaelement with thecharsetattribute present.The Encoding declaration state may be used in HTML documents, but elements with an
http-equivattribute in that state must not be used in XML documents. -
Default style state (
http-equiv="default-style") -
This pragma sets the name of the default alternative style sheet set.
-
Refresh state (
http-equiv="refresh") -
This pragma acts as timed redirect.
For
metaelements with anhttp-equivattribute in the Refresh state, thecontentattribute must have a value consisting either of:- just a valid non-negative integer, or
- a valid non-negative integer, followed by a U+003B SEMICOLON character
(;), followed by one or more space characters, followed
by a substring that is an ASCII case-insensitive match for the string "
URL", followed by a U+003D EQUALS SIGN character (=), followed by a valid URL that does not start with a literal U+0027 APOSTROPHE (') or U+0022 QUOTATION MARK (") character.
In the former case, the integer represents a number of seconds before the page is to be reloaded; in the latter case the integer represents a number of seconds before the page is to be replaced by the page at the given URL.
A news organization's front page could include the following markup in the page's
headelement, to ensure that the page automatically reloads from the server every five minutes:<meta http-equiv="Refresh" content="300">
A sequence of pages could be used as an automated slide show by making each page refresh to the next page in the sequence, using markup such as the following:
<meta http-equiv="Refresh" content="20; URL=page4.html">
There must not be more than one meta element with any particular state in the
document at a time.
4.2.5.4 Other pragma directives
Extensions to the predefined set of pragma directives may, under certain conditions, be registered in the WHATWG Wiki PragmaExtensions page. [WHATWGWIKI]
Such extensions must use a name that is identical to an HTTP header registered in the Permanent Message Header Field Registry, and must have behavior identical to that described for the HTTP header. [IANAPERMHEADERS]
Pragma directives corresponding to headers describing metadata, or not requiring specific user agent processing, must not be registered; instead, use metadata names. Pragma directives corresponding to headers that affect the HTTP processing model (e.g. caching) must not be registered, as they would result in HTTP-level behavior being different for user agents that implement HTML than for user agents that do not.
Anyone is free to edit the WHATWG Wiki PragmaExtensions page at any time to add a pragma directive satisfying these conditions. Such registrations must specify the following information:
- Keyword
The actual name being defined. The name must match a previously-registered HTTP name with the same requirements.
- Brief description
A short non-normative description of the purpose of the pragma directive.
- Specification
- A link to the specification defining the corresponding HTTP header.
4.2.5.5 Specifying the document's character encoding
A character encoding declaration is a mechanism by which the character encoding used to store or transmit a document is specified.
The following restrictions apply to character encoding declarations:
- The character encoding name given must be an ASCII case-insensitive match for one of the labels of the character encoding used to serialise the file. [ENCODING]
- The character encoding declaration must be serialised without the use of character references or character escapes of any kind.
- The element containing the character encoding declaration must be serialised completely within the first 1024 bytes of the document.
In addition, due to a number of restrictions on meta elements, there can only be
one meta-based character encoding declaration per document.
If an HTML document does not start with a BOM, and its
encoding is not explicitly given by Content-Type
metadata, and the document is not an iframe srcdoc document, then the character encoding used must be
an ASCII-compatible character encoding, and the encoding must be specified using a
meta element with a charset attribute or a
meta element with an http-equiv attribute
in the Encoding declaration state.
A character encoding declaration is required (either in the Content-Type metadata or explicitly in the file) even if the encoding is US-ASCII, because a character encoding is needed to process non-ASCII characters entered by the user in forms, in URLs generated by scripts, and so forth.
If the document is an iframe srcdoc
document, the document must not have a character encoding declaration. (In
this case, the source is already decoded, since it is part of the document that contained the
iframe.)
If an HTML document contains a meta element
with a charset attribute or a meta element
with an http-equiv attribute in the Encoding declaration state, then the character
encoding used must be an ASCII-compatible character encoding.
Authors should use UTF-8. Conformance checkers may advise authors against using legacy encodings. [ENCODING]
Encodings in which a series of bytes in the range 0x20 to 0x7E can encode characters other than
the corresponding characters in the range U+0020 to U+007E represent a potential security
vulnerability: a user agent that does not support the encoding (or does not support the label used
to declare the encoding, or does not use the same mechanism to detect the encoding of unlabeled
content as another user agent) might end up interpreting technically benign plain text content as
HTML tags and JavaScript. Authors should therefore not use these encodings. For example, this
applies to encodings in which the bytes corresponding to "<script>" in
ASCII can encode a different string. Authors should not use such encodings, which are known to
include JIS_C6226-1983, JIS_X0212-1990,
HZ-GB-2312, JOHAB (Windows code page 1361), encodings based on
ISO-2022, and encodings
based on EBCDIC. Furthermore, authors must not use the CESU-8, UTF-7, BOCU-1 and SCSU encodings,
which also fall into this category; these encodings were never intended for use for Web content.
[RFC1345]
[RFC1842]
[RFC1468]
[RFC2237]
[RFC1554]
[CP50220]
[RFC1922]
[RFC1557]
[CESU8]
[UTF7]
[BOCU1]
[SCSU]
Authors should not use UTF-32, as the encoding detection algorithms described in this specification intentionally do not distinguish it from UTF-16. [UNICODE]
Using non-UTF-8 encodings can have unexpected results on form submission and URL encodings, which use the document's character encoding by default.
In XHTML, the XML declaration should be used for inline character encoding information, if necessary.
In HTML, to declare that the character encoding is UTF-8, the author could include the
following markup near the top of the document (in the head element):
<meta charset="utf-8">
In XML, the XML declaration would be used instead, at the very top of the markup:
<?xml version="1.0" encoding="utf-8"?>
4.2.6
The style element
- Categories:
- Metadata content.
- If the
scopedattribute is present: flow content. - Contexts in which this element can be used:
- If the
scopedattribute is absent: where metadata content is expected. - If the
scopedattribute is absent: in anoscriptelement that is a child of aheadelement. - If the
scopedattribute is present: where flow content is expected, but before any other flow content other than inter-element whitespace andstyleelements, and not as the child of an element whose content model is transparent. - Content model:
- Depends on the value of the
typeattribute, but must match requirements described in prose below. - Tag omission in text/html:
- Neither tag is omissible.
- Content attributes:
- Global attributes
-
media— Applicable media -
type— Type of embedded resource -
scoped— Whether the styles apply to the entire document or just the parent subtree - Also, the
titleattribute has special semantics on this element: Alternative style sheet set name. - DOM interface:
-
interface HTMLStyleElement : HTMLElement { attribute DOMString media; attribute DOMString type; attribute boolean scoped; }; HTMLStyleElement implements LinkStyle;
The style element allows authors to embed style information in their documents.
The style element is one of several inputs to the styling processing
model. The element does not represent content for the
user.
The type attribute gives the styling language.
If the attribute is present, its value must be a valid MIME type that designates a
styling language. The charset parameter must not be specified. The default
value for the type attribute, which is used if the attribute
is absent, is "text/css". [RFC2318]
The media attribute says which media the
styles apply to. The value must be a valid media query.
The default, if the media
attribute is omitted, is "all", meaning that by default styles apply to all
media.
The scoped attribute is a boolean
attribute. If present, it indicates that the styles are intended just for the subtree
rooted at the style element's parent element, as opposed to the whole
Document.
If the scoped attribute is present and the element has a
parent element, then the style element must precede any flow content in
its parent element other than inter-element whitespace and other style
elements, and the parent element's content model must not have a transparent
component.
This implies that scoped style elements cannot be children of, e.g.,
a or ins elements, even when those are used as flow content
containers.
A style element without a scoped attribute is restricted to appearing in the
head of the document.
A style sheet declared by a style element that has a scoped attribute and has a parent node that is an element is
scoped, with the scoping root being the style element's parent
element. [CSSSCOPED]
The title attribute on
style elements defines alternative style sheet sets. If the
style element has no title attribute, then it
has no title; the title attribute of ancestors does not apply to
the style element. [CSSOM]
The title attribute on style
elements, like the title attribute on link
elements, differs from the global title attribute in that a
style block without a title does not inherit the title of the parent element: it
merely has no title.
The textContent of a style element must match the style production in the following ABNF, the character set for which is Unicode. [ABNF]
style = no-c-start *( c-start no-c-end c-end no-c-start ) no-c-start = < any string that doesn't contain a substring that matches c-start > c-start = "<!--" no-c-end = < any string that doesn't contain a substring that matches c-end > c-end = "-->"
This specification does not specify a style system, but CSS is expected to be supported by most Web browsers. [CSS]
The LinkStyle interface is also implemented by this element. [CSSOM]
The following document has its stress emphasis styled as bright red text rather than italics text, while leaving titles of works and Latin words in their default italics. It shows how using appropriate elements enables easier restyling of documents.
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>My favorite book</title>
<style>
body { color: black; background: white; }
em { font-style: normal; color: red; }
</style>
</head>
<body>
<p>My <em>favorite</em> book of all time has <em>got</em> to be
<cite>A Cat's Life</cite>. It is a book by P. Rahmel that talks
about the <i lang="la">Felis Catus</i> in modern human society.</p>
</body>
</html>