About 2670 letters
About 13 minutes
<template>
The <template> HTML element serves as a mechanism for holding HTML fragments, which can either be used later via JavaScript or generated immediately into shadow DOM.
shadowrootmode
: Creates a shadow root for the parent element.
It is a declarative version of the Element.attachShadow()
method and accepts the same enumerated values.
open
: Exposes the internal shadow root DOM for JavaScript (recommended for most use cases). closed
: Hides the internal shadow root DOM from JavaScript. Note:
The HTML parser creates a ShadowRoot
object in the DOM for the first <template>
in a node with this attribute set to an allowed value.
If the attribute is not set, or not set to an allowed value — or if a ShadowRoot
has already been declaratively created in the same parent — then an HTMLTemplateElement
is constructed.
A HTMLTemplateElement
cannot subsequently be changed into a shadow root after parsing, for example, by setting HTMLTemplateElement.shadowRootMode
.
Note:
You may find the non-standard shadowroot
attribute in older tutorials and examples that used to be supported in Chrome 90-110. This attribute has since been removed and replaced by the standard shadowrootmode
attribute.
shadowrootclonable
: Sets the value of the clonable
property of a ShadowRoot
created using this element to true
.
If set, a clone of the shadow host (the parent element of this <template>
) created with Node.cloneNode()
or Document.importNode()
will include a shadow root in the copy.
shadowrootdelegatesfocus
: Sets the value of the delegatesFocus
property of a ShadowRoot
created using this element to true
.
If this is set and a non-focusable element in the shadow tree is selected, then focus is delegated to the first focusable element in the tree.
The value defaults to false
.
shadowrootserializable
Experimental
: Sets the value of the serializable
property of a ShadowRoot
created using this element to true
.
If set, the shadow root may be serialized by calling the Element.getHTML()
or ShadowRoot.getHTML()
methods with the options.serializableShadowRoots
parameter set true
.
The value defaults to false
.
Created in 5/27/2025
Updated in 5/27/2025