0Pricing
HTML Academy · Lektion

Integrierte Elemente erweitern

Passen Sie vorhandene Elemente mit dem is-Attribut an

Integrierte Elemente erweitern ist eine kostenlose HTML Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des HTML Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.

Zwei Arten benutzerdefinierter Elemente

Die Spezifikation definiert autonomous custom elements (die HTMLElement erweitern und als <my-card> verwendet werden) sowie customized built-in elements (die eine bestimmte eingebaute Klasse erweitern und als <button is="my-button"> verwendet werden). Customized built-ins erben die Semantik eingebauter Elemente automatisch.

Warum ein eingebautes Element erweitern?

Ein autonomes <my-button> erhält keinerlei Verhalten des eingebauten <button> – keine Aktivierung durch Enter oder die Leertaste, keine Teilnahme an Formularen und kein role="button" für assistive Technologien. Ein customized button (is="my-button") erbt all das automatisch.

Die Klasse erweitern

Erweitern Sie die spezifische HTML-Klasse statt HTMLElement: class MyButton extends HTMLButtonElement {}. Das Element behält alle eingebauten Funktionen – Formularübermittlung, Fokusverwaltung und den deaktivierten Zustand – und Sie können darauf Ihre Erweiterungen aufbauen.

class MyButton extends HTMLButtonElement {
  connectedCallback() {
    this.style.fontWeight = "bold";
  }
}

Registrierung mit der extends-Option

customElements.define("my-button", MyButton, { extends: "button" }). Das dritte Argument teilt der Registry mit, welches eingebaute Tag das Element erweitert. Ohne dieses Argument schlägt die Registrierung fehl.

Das is-Attribut

Verwenden Sie customized built-ins mit dem is-Attribut am vorhandenen Tag: <button is="my-button">Click</button>. Wenn Sie stattdessen <my-button> schreiben, würden Sie ein autonomes Element erstellen und das eingebaute Verhalten verlieren.

Safari unterstützt dies nicht

Safari hat die Implementierung von customized built-in elements unter Berufung auf Bedenken hinsichtlich der Barrierefreiheit abgelehnt. Sie funktionieren in Chrome, Edge und Firefox; in Safari wird das is-Attribut ignoriert und das Element verhält sich wie ein gewöhnliches <button>. Verwenden Sie das offizielle Polyfill, wenn Safari unterstützt werden muss.

Polyfill-Optionen

Das @ungap/custom-elements-Polyfill stellt die Unterstützung für customized built-in elements in Safari wieder her. Es ist klein und wird gut gepflegt; binden Sie es ein, wenn Ihr Team browserübergreifende Unterstützung benötigt, ohne auf das is-Attribut-Muster zu verzichten.

Autonome Alternative

Wenn Safari ohne Polyfill relevant ist, erstellen Sie stattdessen ein autonomes Element und bilden Sie das benötigte Verhalten manuell nach: Fügen Sie role="button", tabindex="0", Tastatur-Handler für Enter und die Leertaste sowie die Formularanbindung über die ElementInternals API hinzu.

API für die Formularanbindung

Autonome Elemente können an der Formularübermittlung teilnehmen, indem Sie static formAssociated = true setzen und this.attachInternals() verwenden. Das zurückgegebene ElementInternals-Objekt stellt setFormValue und setValidity für eine vollständige Formularintegration bereit.

Wann Sie welche Variante wählen sollten

Wählen Sie customized built-ins für Komponenten, die sich weitgehend wie ein eingebautes Element verhalten (etwa ein aufwendiger Button oder ein intelligentes Eingabefeld) und wenn Ihre Plattformunterstützung Chrome und Firefox umfasst oder Sie das Polyfill akzeptieren. Wählen Sie autonome Elemente für völlig neue Komponenten (Karten, Dialoge) ohne eingebautes Gegenstück.

Fallstrick: Autonome Buttons

Der häufigste Fehler bei Web Components ist, <my-button> als autonomes Element zu erstellen. Es kann keine Formulare absenden, reagiert nicht auf Enter oder die Leertaste und wird nicht als Button angekündigt. Erweitern Sie entweder HTMLButtonElement oder bilden Sie sorgfältig jedes Verhalten eines echten Buttons nach.

Wissensprüfung

Welchen praktischen Vorteil bietet das Erweitern von HTMLButtonElement (customized built-in) gegenüber dem Erweitern von HTMLElement (autonom) bei einer buttonähnlichen Komponente?

Zusammenfassung

Customized built-in elements erweitern eine bestimmte HTML-Klasse (HTMLButtonElement, HTMLInputElement) und werden über das is-Attribut verwendet, wodurch sie das gesamte native Verhalten erben. Registrieren Sie sie mit der Option { extends: "button" }. Safari unterstützt sie nicht nativ – verwenden Sie ein Polyfill oder autonome Elemente mit manuell nachgebildetem Verhalten, wenn vollständige browserübergreifende Unterstützung erforderlich ist.

Häufig gestellte Fragen

Ist die Lektion „Integrierte Elemente erweitern“ kostenlos?

Ja — der vollständige Text von „Integrierte Elemente erweitern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des HTML Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Integrierte Elemente erweitern“?

Passen Sie vorhandene Elemente mit dem is-Attribut an Du übst HTML Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um HTML Academy zu starten?

Keine Vorkenntnisse erforderlich. HTML Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Integrierte Elemente erweitern“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser HTML Academy-Lektion Code schreiben und ausführen?

Ja. Jede HTML Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Elemente mit customElements.define definieren
  2. Die Callbacks connectedCallback und disconnectedCallback
  3. Beobachtete Attribute und attributeChangedCallback
  4. Integrierte Elemente erweitern
← Zurück zu HTML Academy