Creare un Web Component in HTML è un processo che consente di realizzare elementi personalizzati riutilizzabili, estendendo le funzionalità native del DOM. Questa tecnologia sfrutta un insieme di API moderne che includono custom elements, shadow DOM e template HTML. Offrono una soluzione elegante per creare interfacce modulari, scalabili e riutilizzabili.
Per iniziare, definiamo i passaggi principali:
- Creare un custom element: definizione di un nuovo elemento HTML, come possono esserelo un div o input, personalizzato tramite l'API `customElements.define`.
- Utilizzare lo shadow DOM: garantendo che lo stile e il comportamento del componente siano isolati dal resto della pagina.
- Definire il template HTML: un modello riutilizzabile per il contenuto e lo stile del componente.
Creiamo un elemento chiamato `
class MyButton extends HTMLElement {
constructor() {
super();
const shadow = this.attachShadow({ mode: 'open' });
// Bottone
const button = document.createElement('button');
button.textContent = 'Cliccami';
// Stile
const style = document.createElement('style');
style.textContent = `
button {
background-color: #6200ea;
color: white;
border: none;
border-radius: 5px;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
button:hover {
background-color: #3700b3;
}
`;
// Aggiunta a shadow DOM
shadow.appendChild(style);
shadow.appendChild(button);
}
}
// Registrazione elemento
customElements.define('my-button', MyButton);
Una volta definito il custom element, possiamo utilizzarlo in qualsiasi punto del nostro HTML
<my-button id="myButton"></my-button> <button>Cliccami esterno</button>
Grazie allo shadow DOM, il nostro componente risulta isolato, tant'è che gli stili applicati all'interno del codice javascript non si riflettono sul bottone definito esternamente, pur mantenendo tutte le proprietà di un elemento HTML, come la risposta ad un evento di click
var button = document.getElementById('myButton');
button.addEventListener('click', () => {
alert('Hai cliccato il pulsante!');
});Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare noopener e noreferrer nei link HTML
Esporre workflow come server MCP con Azure Logic Apps
Ridurre il reflow cambiando il CSS
Evidenziare una porzione di testo in un pagina dopo una navigazione
Realizzare un accordion con gli elementi HTML details e summary
Importare un servizio esterno in .NET Aspire
Abilitare il rolling update su Azure Functions flex consumption
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Integrazione di Copilot in .NET Aspire
Gestire progetti .NET + React in .NET Aspire
Ridimensionamento automatico input tramite CSS
Controllare la velocità di spostamento su una pagina HTML




