How Does Shadow DOM Work? – Devstringx

Back to Blog
Banner for Shadow DOM Work blog

How Does Shadow DOM Work? – Devstringx

If you’ve ever created or worked with HTML elements inside JavaScript, you’ve probably noticed that your HTML elements don’t always have the style information you would expect them to have, even if they’re visible in the DOM. For example, if you create an HTML element, add some CSS to your CSS file, and then display it using JavaScript by adding the element to the document page.createElement, it may not show up with any CSS applied to it!


Shadow DOM is a W3C standard that allows developers to create self-contained, reusable components. By using Shadow DOM, developers can keep their HTML structure, style, and behavior separate from the rest of the page. This way, they can ensure that their component will work in any context without worrying about styles clashing with the rest of the page.

Shadow DOM in HTML

Shadow DOM is a W3C specification that defines how to encapsulate a subtree of elements in an HTML document. It allows you to write self-contained components that are easier to reason about and reuse. The markup for a widget can be contained in the widget’s subtree, meaning it’s not directly tied to the markup of its surroundings.

With browser support, the compiled CSS styles and scripts can then be imported into the host page’s global scope, adding them as necessary without cluttering up the global namespace; this makes it possible for multiple widgets on the same page to use different stylesheets without naming conflicts (via qualified names).

Shadow DOM in CSS

In CSS, It works by specifying a host element and then adding a class to the containing tag. The containing tag is then used as the selector for the content. What’s great about this is that because it’s using CSS, we don’t need JavaScript to create any new elements or attach them to the DOM. It all happens in style rules that are attached directly to your HTML.

So far, I’ve only been talking about styling things, but you can also use this technique to add behavior to existing elements. That is when you’re creating new HTML and not just styling existing ones. To do that with pure CSS requires some clever markup inside the style sheet, but again there’s no extra code required other than what you would normally write if you were working with regular HTML tags.

Shadow DOM In JavaScript

In JavaScript, it works similarly. The most commonly used syntax for the Shadow DOM is to call createShadowRoot() on an element. For example, let’s say we want to style our button’s text in a new way, but we don’t want that style to affect other page elements. We could wrap our button in a div with class=shadow and then use createShadowRoot() as follows:

There are three ways that you can put content into the Shadow DOM. You can either move the desired content there explicitly, by calling.innerHTML or .textContent within the createShadowRoot method; you can copy it from elsewhere in your code (e.g., document.createElement(p)); or from another document altogether (e.g., document2.getElementById(my-paragraph)).

Recommended to Read – Handling Shadow DOM in Selenium

What Browsers Support It?

Shadow DOM is a relatively new web standard that allows developers to create self-contained, reusable components. It’s supported in all major browsers, including Google Chrome, Mozilla Firefox, Apple Safari, and Microsoft Edge.


1) What connections do shadow DOM root elements have?

When you create a shadow DOM element, it is given a special root element. This root element is the only thing that can see and interact with the shadow DOM elements inside it. Shadow DOM elements can be used to create encapsulated sections of UI that are separate from the rest of the page. This can be useful for creating custom input fields or dropdown menus.

2) Are there any drawbacks to using shadow DOM?

While there are some drawbacks to using shadow DOM, they are far outweighed by the benefits. For one, it can be difficult to style shadow DOM elements since they are not part of the main document. Additionally, shadow DOM can be resource-intensive and slow down your page if used excessively.

However, the advantages of using shadow DOM far outweigh these disadvantages. Shadow DOM allows you to create encapsulated, self-contained elements that are isolated from the rest of the document.

3) Do browsers support all the new features in Shadow DOM?

Shadow DOM is a relatively new concept; not all browsers have full support for it yet. Most browsers only support a subset of the features available in the latest version of Shadow DOM. If you’re using Shadow DOM in your web applications, you may need to provide fallbacks for older browsers.

If you are interested in even more software testing-related articles and information from us here at Devstringx, then we have a lot to choose from.

Share this post

Back to Blog