The ShadowRoot interface of the Shadow DOM API is the root node of a DOM subtree that is rendered separately from a document's main DOM tree.

MDN Reference

interface ShadowRoot {
    activeElement: Element | null;
    adoptedStyleSheets: CSSStyleSheet[];
    ATTRIBUTE_NODE: 2;
    baseURI: string;
    CDATA_SECTION_NODE: 4;
    childElementCount: number;
    childNodes: NodeListOf<ChildNode>;
    children: HTMLCollection;
    clonable: boolean;
    COMMENT_NODE: 8;
    delegatesFocus: boolean;
    DOCUMENT_FRAGMENT_NODE: 11;
    DOCUMENT_NODE: 9;
    DOCUMENT_POSITION_CONTAINED_BY: 16;
    DOCUMENT_POSITION_CONTAINS: 8;
    DOCUMENT_POSITION_DISCONNECTED: 1;
    DOCUMENT_POSITION_FOLLOWING: 4;
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32;
    DOCUMENT_POSITION_PRECEDING: 2;
    DOCUMENT_TYPE_NODE: 10;
    ELEMENT_NODE: 1;
    ENTITY_NODE: 6;
    ENTITY_REFERENCE_NODE: 5;
    firstChild: ChildNode | null;
    firstElementChild: Element | null;
    fullscreenElement: Element | null;
    host: Element;
    innerHTML: string;
    isConnected: boolean;
    lastChild: ChildNode | null;
    lastElementChild: Element | null;
    mode: ShadowRootMode;
    nextSibling: ChildNode | null;
    nodeName: string;
    nodeType: number;
    nodeValue: string | null;
    NOTATION_NODE: 12;
    onslotchange: ((this: ShadowRoot, ev: Event) => any) | null;
    ownerDocument: Document;
    parentElement: HTMLElement | null;
    parentNode: ParentNode | null;
    pictureInPictureElement: Element | null;
    pointerLockElement: Element | null;
    previousSibling: ChildNode | null;
    PROCESSING_INSTRUCTION_NODE: 7;
    serializable: boolean;
    slotAssignment: SlotAssignmentMode;
    styleSheets: StyleSheetList;
    TEXT_NODE: 3;
    get textContent(): string;
    set textContent(value: string | null): void;
    addEventListener<K extends "slotchange">(
        type: K,
        listener: (this: ShadowRoot, ev: ShadowRootEventMap[K]) => any,
        options?: boolean | AddEventListenerOptions,
    ): void;
    addEventListener(
        type: string,
        listener: EventListenerOrEventListenerObject,
        options?: boolean | AddEventListenerOptions,
    ): void;
    append(...nodes: (string | Node)[]): void;
    appendChild<T extends Node>(node: T): T;
    cloneNode(subtree?: boolean): Node;
    compareDocumentPosition(other: Node): number;
    contains(other: Node | null): boolean;
    dispatchEvent(event: Event): boolean;
    elementFromPoint(x: number, y: number): Element | null;
    elementsFromPoint(x: number, y: number): Element[];
    getAnimations(): Animation[];
    getElementById(elementId: string): HTMLElement | null;
    getHTML(options?: GetHTMLOptions): string;
    getRootNode(options?: GetRootNodeOptions): Node;
    hasChildNodes(): boolean;
    insertBefore<T extends Node>(node: T, child: Node | null): T;
    isDefaultNamespace(namespace: string | null): boolean;
    isEqualNode(otherNode: Node | null): boolean;
    isSameNode(otherNode: Node | null): boolean;
    lookupNamespaceURI(prefix: string | null): string | null;
    lookupPrefix(namespace: string | null): string | null;
    normalize(): void;
    prepend(...nodes: (string | Node)[]): void;
    querySelector<K extends keyof HTMLElementTagNameMap>(
        selectors: K,
    ): HTMLElementTagNameMap[K] | null;
    querySelector<K extends keyof SVGElementTagNameMap>(
        selectors: K,
    ): SVGElementTagNameMap[K] | null;
    querySelector<K extends keyof MathMLElementTagNameMap>(
        selectors: K,
    ): MathMLElementTagNameMap[K] | null;
    querySelector<K extends keyof HTMLElementDeprecatedTagNameMap>(
        selectors: K,
    ): HTMLElementDeprecatedTagNameMap[K] | null;
    querySelector<E extends Element = Element>(selectors: string): E | null;
    querySelectorAll<K extends keyof HTMLElementTagNameMap>(
        selectors: K,
    ): NodeListOf<HTMLElementTagNameMap[K]>;
    querySelectorAll<K extends keyof SVGElementTagNameMap>(
        selectors: K,
    ): NodeListOf<SVGElementTagNameMap[K]>;
    querySelectorAll<K extends keyof MathMLElementTagNameMap>(
        selectors: K,
    ): NodeListOf<MathMLElementTagNameMap[K]>;
    querySelectorAll<K extends keyof HTMLElementDeprecatedTagNameMap>(
        selectors: K,
    ): NodeListOf<HTMLElementDeprecatedTagNameMap[K]>;
    querySelectorAll<E extends Element = Element>(
        selectors: string,
    ): NodeListOf<E>;
    removeChild<T extends Node>(child: T): T;
    removeEventListener<K extends "slotchange">(
        type: K,
        listener: (this: ShadowRoot, ev: ShadowRootEventMap[K]) => any,
        options?: boolean | EventListenerOptions,
    ): void;
    removeEventListener(
        type: string,
        listener: EventListenerOrEventListenerObject,
        options?: boolean | EventListenerOptions,
    ): void;
    replaceChild<T extends Node>(node: Node, child: T): T;
    replaceChildren(...nodes: (string | Node)[]): void;
    setHTMLUnsafe(html: string): void;
}
Hierarchy
Index

Properties

activeElement: Element | null

Returns the deepest element in the document through which or to which key events are being routed. This is, roughly speaking, the focused element in the document.

For the purposes of this API, when a child browsing context is focused, its container is focused in the parent browsing context. For example, if the user moves the focus to a text control in an iframe, the iframe is the element returned by the activeElement API in the iframe's node document.

Similarly, when the focused element is in a different node tree than documentOrShadowRoot, the element returned will be the host that's located in the same node tree as documentOrShadowRoot if documentOrShadowRoot is a shadow-including inclusive ancestor of the focused element, and null if not.

MDN Reference

adoptedStyleSheets: CSSStyleSheet[]
ATTRIBUTE_NODE: 2
baseURI: string

The read-only baseURI property of the Node interface returns the absolute base URL of the document containing the node.

MDN Reference

CDATA_SECTION_NODE: 4

node is a CDATASection node.

childElementCount: number
childNodes: NodeListOf<ChildNode>

The read-only childNodes property of the Node interface returns a live the first child node is assigned index 0.

MDN Reference

children: HTMLCollection

Returns the child elements.

MDN Reference

clonable: boolean

The clonable read-only property of the ShadowRoot interface returns true if the shadow root is clonable, and false otherwise.

MDN Reference

COMMENT_NODE: 8

node is a Comment node.

delegatesFocus: boolean

The delegatesFocus read-only property of the ShadowRoot interface returns true if the shadow root delegates focus, and false otherwise.

MDN Reference

DOCUMENT_FRAGMENT_NODE: 11

node is a DocumentFragment node.

DOCUMENT_NODE: 9

node is a document.

DOCUMENT_POSITION_CONTAINED_BY: 16

Set when other is a descendant of node.

DOCUMENT_POSITION_CONTAINS: 8

Set when other is an ancestor of node.

DOCUMENT_POSITION_DISCONNECTED: 1

Set when node and other are not in the same tree.

DOCUMENT_POSITION_FOLLOWING: 4

Set when other is following node.

DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32
DOCUMENT_POSITION_PRECEDING: 2

Set when other is preceding node.

DOCUMENT_TYPE_NODE: 10

node is a doctype.

ELEMENT_NODE: 1

node is an element.

ENTITY_NODE: 6
ENTITY_REFERENCE_NODE: 5
firstChild: ChildNode | null

The read-only firstChild property of the Node interface returns the node's first child in the tree, or null if the node has no children.

MDN Reference

firstElementChild: Element | null

Returns the first child that is an element, and null otherwise.

MDN Reference

fullscreenElement: Element | null

Returns document's fullscreen element.

MDN Reference

host: Element

The host read-only property of the ShadowRoot returns a reference to the DOM element the ShadowRoot is attached to.

MDN Reference

innerHTML: string

The innerHTML property of the ShadowRoot interface sets gets or sets the HTML markup to the DOM tree inside the ShadowRoot.

MDN Reference

isConnected: boolean

The read-only isConnected property of the Node interface returns a boolean indicating whether the node is connected (directly or indirectly) to a Document object.

MDN Reference

lastChild: ChildNode | null

The read-only lastChild property of the Node interface returns the last child of the node, or null if there are no child nodes.

MDN Reference

lastElementChild: Element | null

Returns the last child that is an element, and null otherwise.

MDN Reference

The mode read-only property of the ShadowRoot specifies its mode — either open or closed.

MDN Reference

nextSibling: ChildNode | null

The read-only nextSibling property of the Node interface returns the node immediately following the specified one in their parent's Node.childNodes, or returns null if the specified node is the last child in the parent element.

MDN Reference

nodeName: string

The read-only nodeName property of Node returns the name of the current node as a string.

MDN Reference

nodeType: number

The read-only nodeType property of a Node interface is an integer that identifies what the node is.

MDN Reference

nodeValue: string | null

The nodeValue property of the Node interface returns or sets the value of the current node.

MDN Reference

NOTATION_NODE: 12
onslotchange: ((this: ShadowRoot, ev: Event) => any) | null
ownerDocument: Document

The read-only ownerDocument property of the Node interface returns the top-level document object of the node.

MDN Reference

parentElement: HTMLElement | null

The read-only parentElement property of Node interface returns the DOM node's parent Element, or null if the node either has no parent, or its parent isn't a DOM Element.

MDN Reference

parentNode: ParentNode | null

The read-only parentNode property of the Node interface returns the parent of the specified node in the DOM tree.

MDN Reference

pictureInPictureElement: Element | null
pointerLockElement: Element | null
previousSibling: ChildNode | null

The read-only previousSibling property of the Node interface returns the node immediately preceding the specified one in its parent's or null if the specified node is the first in that list.

MDN Reference

PROCESSING_INSTRUCTION_NODE: 7

node is a ProcessingInstruction node.

serializable: boolean

The serializable read-only property of the ShadowRoot interface returns true if the shadow root is serializable.

MDN Reference

slotAssignment: SlotAssignmentMode

The read-only slotAssignment property of the ShadowRoot interface returns the slot assignment mode for the shadow DOM tree.

MDN Reference

styleSheets: StyleSheetList
TEXT_NODE: 3

node is a Text node.

Accessors

  • get textContent(): string

    Returns string

  • set textContent(value: string | null): void

    The textContent property of the Node interface represents the text content of the node and its descendants.

    MDN Reference

    Parameters

    • value: string | null

    Returns void

Methods

  • Inserts nodes after the last child of node, while replacing strings in nodes with equivalent Text nodes.

    Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.

    MDN Reference

    Parameters

    • ...nodes: (string | Node)[]

    Returns void

  • The appendChild() method of the Node interface adds a node to the end of the list of children of a specified parent node.

    MDN Reference

    Type Parameters

    Parameters

    • node: T

    Returns T

  • The cloneNode() method of the Node interface returns a duplicate of the node on which this method was called.

    MDN Reference

    Parameters

    • Optionalsubtree: boolean

    Returns Node

  • The compareDocumentPosition() method of the Node interface reports the position of its argument node relative to the node on which it is called.

    MDN Reference

    Parameters

    Returns number

  • The contains() method of the Node interface returns a boolean value indicating whether a node is a descendant of a given node, that is the node itself, one of its direct children (Node.childNodes), one of the children's direct children, and so on.

    MDN Reference

    Parameters

    Returns boolean

  • The dispatchEvent() method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order.

    MDN Reference

    Parameters

    • event: Event

    Returns boolean

  • The getHTML() method of the ShadowRoot interface is used to serialize a shadow root's DOM to an HTML string.

    MDN Reference

    Parameters

    Returns string

  • The hasChildNodes() method of the Node interface returns a boolean value indicating whether the given Node has child nodes or not.

    MDN Reference

    Returns boolean

  • The insertBefore() method of the Node interface inserts a node before a reference node as a child of a specified parent node.

    MDN Reference

    Type Parameters

    Parameters

    • node: T
    • child: Node | null

    Returns T

  • The isDefaultNamespace() method of the Node interface accepts a namespace URI as an argument.

    MDN Reference

    Parameters

    • namespace: string | null

    Returns boolean

  • The isEqualNode() method of the Node interface tests whether two nodes are equal.

    MDN Reference

    Parameters

    • otherNode: Node | null

    Returns boolean

  • The isSameNode() method of the Node interface is a legacy alias the for the === strict equality operator.

    MDN Reference

    Parameters

    • otherNode: Node | null

    Returns boolean

  • The lookupNamespaceURI() method of the Node interface takes a prefix as parameter and returns the namespace URI associated with it on the given node if found (and null if not).

    MDN Reference

    Parameters

    • prefix: string | null

    Returns string | null

  • The lookupPrefix() method of the Node interface returns a string containing the prefix for a given namespace URI, if present, and null if not.

    MDN Reference

    Parameters

    • namespace: string | null

    Returns string | null

  • The normalize() method of the Node interface puts the specified node and all of its sub-tree into a normalized form.

    MDN Reference

    Returns void

  • Inserts nodes before the first child of node, while replacing strings in nodes with equivalent Text nodes.

    Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.

    MDN Reference

    Parameters

    • ...nodes: (string | Node)[]

    Returns void

  • The removeChild() method of the Node interface removes a child node from the DOM and returns the removed node.

    MDN Reference

    Type Parameters

    Parameters

    • child: T

    Returns T

  • The removeEventListener() method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target.

    MDN Reference

    Type Parameters

    • K extends "slotchange"

    Parameters

    Returns void

  • The removeEventListener() method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target.

    MDN Reference

    Parameters

    Returns void

  • The replaceChild() method of the Node interface replaces a child node within the given (parent) node.

    MDN Reference

    Type Parameters

    Parameters

    Returns T

  • Replace all children of node with nodes, while replacing strings in nodes with equivalent Text nodes.

    Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.

    MDN Reference

    Parameters

    • ...nodes: (string | Node)[]

    Returns void

  • The setHTMLUnsafe() method of the ShadowRoot interface can be used to parse a string of HTML into a DocumentFragment, optionally filtering out unwanted elements and attributes, and then use it to replace the existing tree in the Shadow DOM.

    MDN Reference

    Parameters

    • html: string

    Returns void