The customElements define() method is used to define a new custom element. There are two types of custom elements that can be created:
- Autonomous custom element: These elements do not inherit from built-in HTML elements.
- Customized built-in element: These elements inherit from built-in HTML elements.
Syntax:
customElements.define( name, constructor, options );
Parameters:
- name: It specifies the name for the new custom element. The name of custom elements must contain hyphen.
- constructor: It specifies the constructor for the new custom element.
- options: It specifies the object that controls how the element is defined. It is an optional parameter.
Return value: This method returns void.
Example: In this example, a custom element is defined, named <gfg-custom-element> with a constructor named CustomEl using this method.
HTML
<!DOCTYPE HTML> < html > < body style = "text-align:center;" >     < h1 style = "color:green;" >         neveropen     </ h1 >      < p >         HTML | customElements define() method     </ p > Â
    < button onclick = "Geeks();" >         click here     </ button >     < p id = "arr" ></ p > Â
    < script >         var arr =             document.getElementById("arr"); Â
        // Function to define the element         function Geeks() {             class CustomEl extends HTMLElement {                 constructor() {                     super();                     this.attachShadow({ mode: 'open' });                     this.shadowRoot.innerHTML = `             < h1 style = "color:green;" >             neveropen Custom             Element Data                 </ h1 >             `;                 }             } Â
            // Use the define() method to define             // a new element             window.customElements.define(                 'gfg-custom-element', CustomEl);         }     </ script >     < gfg-custom-element ></ gfg-custom-element > </ body > </ html > |
Output:
Before Clicking the Button:
After Clicking the Button:
Supported Browsers:
- Google Chrome 54.0
- Edge 79.0
- Firefox 63.0
- Safari 10.1
- Opera 41.0