Web Components: Building Custom Elements with JavaScript
Last Updated : 27 Sep, 2023
In web development, creating reusable and encapsulated components is crucial for building scalable and maintainable applications and Web Components offer a powerful solution to this challenge by providing developers with the ability to build custom HTML elements with their functionality and styling. This article introduces Web Components and explores how they can enhance the development process and make it easier to create modular and reusable code.
Web Components are a set of web platform APIs that allow you to create custom, reusable, and encapsulated components for building web applications components can be used on any web page regardless of the framework or library being used and promote a modular and standardized approach to web development.
They consist of two main specifications:
Approach 1: Using Custom Elements with Shadow DOM
Creating custom web components using the Shadow DOM is a modern approach to building reusable and encapsulated UI elements for your web applications. Custom elements with the Shadow DOM offer a way to define your own HTML elements.
Syntax:
class MyCustomElement extends HTMLElement { } customElements.define('my-custom-element', MyCustomElement);
Example: This example shows the use of the above-explained approach.
HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Custom Element </title> <style> h1 { color: #336699; } </style> </head> <body style="background-color: #C0C0C0;"> <my-custom-element></my-custom-element> <script> class MyCustomElement extends HTMLElement { constructor() { super(); const shadowRoot = this.attachShadow({ mode: 'open' }); const paragraph = document.createElement('p'); paragraph.textContent = '**This is custom element with Shadow DOM**'; shadowRoot.appendChild(paragraph); const style = document.createElement('style'); style.textContent = ` p { color: red; } `; shadowRoot.appendChild(style); } } customElements.define('my-custom-element', MyCustomElement); </script> </body> </html>
Output:

Approach 2: Using HTML Templates
The HTML templates provide an innovative way to wield logical subsetting techniques in R, offering a dynamic and interactive approach to data manipulation and integrating HTML templates you can create visually engaging reports that allow users to interact with the data selecting subsets based on their criteria.
Syntax:
class MyCustomElement extends HTMLElement { constructor() { super(); const template = document.getElementById('custom-template').content; const shadowRoot = this.attachShadow({ mode: 'open' }); const clonedTemplate = document.importNode(template, true); shadowRoot.appendChild(clonedTemplate); } }
Example: This example shows the use of the above-explained approach.
HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Templates</title> <style> h1 { color: #336699; } </style> </head> <body style="background-color: #FFFF00;"> <template id="custom-template"> <p> **This is custom element with HTML Templates** </p> </template> <my-custom-element></my-custom-element> <script> class MyCustomElement extends HTMLElement { constructor() { super(); const template = document.getElementById('custom-template').content; const shadowRoot = this.attachShadow({ mode: 'open' }); const clonedTemplate = document.importNode(template, true); shadowRoot.appendChild(clonedTemplate); } } customElements.define('my-custom-element', MyCustomElement); </script> </body> </html>
Output :

Similar Reads
JavaScript code for adding new elements in a dynamic way Javascript is a very important language when it comes to learning how the browser works. Often there are times we would like to add dynamic elements/content to our web pages. This post deals with all of that. Creation of new element: New elements can be created in JS by using the createElement() met
2 min read
Build an AI Image Generator Website in HTML CSS and JavaScript Create an AI image generator website using HTML, CSS, and JavaScript by developing a user interface that lets users input text prompts and generate images by AI.We incorporated API integration to fetch data, providing users with an effortless and dynamic experience in generating AI-driven images. An
4 min read
How to select DOM Elements in JavaScript ? Selecting DOM (Document Object Model) elements is a fundamental aspect of web development with JavaScript. It allows developers to interact with and manipulate elements on a webpage dynamically. Proper selection of elements is crucial for tasks such as updating content, adding event listeners, or mo
3 min read
Manipulating HTML Elements with JavaScript JavaScript is a powerful language that can be used to manipulate the HTML elements on a web page. By using JavaScript, we can access the HTML elements and modify their attributes, styles, and content. This allows us to create dynamic and interactive web pages. Methods to Identify the elements to man
5 min read
How to Create a Chips Component using HTML CSS & JavaScript ? In this article, we will see how we can create a chip component with the help of HTML, CSS, and JavaScript. In a chip component, there are basically two sections: one is the content section, and the other is the cross-button section. Both should be under one container with a proper border-radius. Pr
3 min read