HTML Academy · Lektion

Part und Exportparts für externe Formatierung

Machen Sie Shadow-DOM-Teile mit part und exportparts für externes CSS zugänglich

Lektion 4 von 413 Schritte

Part und Exportparts für externe Formatierung 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.

Der Kapselungs-Kompromiss

Die strikte Style-Kapselung des Shadow DOM verhindert, dass Nutzer einzelne Elemente innerhalb einer Komponente neu stylen. CSS-Variablen eignen sich für globale Eigenschaften, aber Sie können beispielsweise dem internen "close"-Button keinen eigenen border-radius geben. Parts lösen dieses Problem.

Das part-Attribut

Markieren Sie ein Element innerhalb des Shadow Tree mit part="name". Nutzer können es dann mit dem Pseudoelement ::part(name) ansprechen: my-dialog::part(close-button) { color: red; }. Das benannte Element wird zu einer Styling-Schnittstelle, während der restliche Shadow Tree gekapselt bleibt.

// Shadow tree:
<button part="close-button">×</button>
// Page CSS:
my-dialog::part(close-button) {
  color: red;
  border-radius: 50%;
}

Mehrere Parts auf einem Element

Trennen Sie die Namen durch Leerzeichen, um ein Element als mehrere Parts bereitzustellen: part="button primary". ::part(button) spricht es allgemein an, ::part(primary) als Element im Primärstil. Jeder Name wird unabhängig abgeglichen.

Einschränkungen von ::part

::part erlaubt nur bestimmte Pseudoklassen (:hover, :focus, :disabled) – keine Nachfahren-Kombinatoren oder weitergehende strukturelle Auswahl. ::part(card) p ist ungültig; Sie können mit Nachfahren-Selektoren nicht in einen Part hineinreichen.

exportparts leitet Parts weiter

Wenn ein Custom Element innerhalb seines eigenen Shadow Tree ein weiteres Custom Element enthält, werden die Parts des inneren Elements normalerweise nicht für die äußere Seite bereitgestellt. exportparts="close-button" auf dem verschachtelten Element leitet diese Parts an den äußeren Host weiter.

// Outer shadow:
<inner-element exportparts="close-button"></inner-element>
// Page:
outer-element::part(close-button) { color: red; }

Beim Exportieren umbenennen

exportparts="close-button: dismiss" exportiert den inneren Part unter einem neuen Namen am äußeren Element. So kann die äußere Komponente eine klar benannte Schnittstelle anbieten, unabhängig davon, welche internen Elemente sie zusammensetzt.

parts im Vergleich zu CSS Custom Properties

Custom Properties stellen Werte bereit, etwa Farben, Abstände und Schriftarten. Parts stellen Elemente bereit, einschließlich der vollständigen CSS-Oberfläche für Rahmen, Transformationen und Animationen. Verwenden Sie Custom Properties für globale Tokens und Parts für individuelle Anpassungen auf Elementebene. Beides kann in derselben Komponente koexistieren.

Theming-Muster

Praxis in Designsystemen: Stellen Sie für die am häufigsten angepassten Elemente, etwa Buttons, Header und Indikatoren, eine kleine Auswahl an Parts bereit und ergänzen Sie sie durch eine großzügige Menge an Custom Properties für Farben, Abstände und Typografie. Nutzer können je nach Bedarf entweder auf Wertebene oder auf Elementebene themen.

Stabilität von Part-Namen

Part-Namen werden zu einem Bestandteil der öffentlichen API der Komponente – Änderungen daran beschädigen das CSS der Nutzer. Wählen Sie Namen, die die Rolle des Elements beschreiben, etwa "close-button", "header" oder "track", statt seine Position, etwa "first-button", damit die API auch bei einer Weiterentwicklung der Implementierung aussagekräftig bleibt.

Hinweise zur Dokumentation

Führen Sie alle verfügbaren Parts und exportierten Parts in der readme der Komponente auf. Ohne Dokumentation müssen Nutzer das DOM untersuchen, um Parts zu entdecken, und werden dadurch an das gekoppelt, was sie zufällig vorfinden. Behandeln Sie die Part-Liste wie die Props-Liste einer Framework-Komponente.

Browserunterstützung

::part und exportparts werden von allen modernen Browsern unterstützt. Selbst ältere Safari-Versionen unterstützen ::part inzwischen. Verwenden Sie beides unbedenklich; für sehr alte Browser, die größtenteils nicht mehr verwendet werden, können Sie als Ausweichlösung zusätzliche CSS Custom Properties einsetzen.

Wissenscheck

Was bewirkt das exportparts-Attribut?

Zusammenfassung

Das part-Attribut stellt einzelne Elemente des Shadow Tree über ::part(name) für externes Styling bereit – mit der vollständigen Leistungsfähigkeit von CSS, ohne die Kapselung zu verletzen. exportparts leitet Parts aus verschachtelten Custom Elements an den äußeren Host weiter und kann sie dabei optional umbenennen. Kombinieren Sie Parts mit CSS Custom Properties zu einer vollständigen Theming-Schnittstelle und dokumentieren Sie die Part-Liste als Bestandteil der Komponenten-API.

Kostenlos starten

Lerne HTML mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
40
Lektionen
159

Häufig gestellte Fragen

Ist die Lektion „Part und Exportparts für externe Formatierung“ kostenlos?

Ja — der vollständige Text von „Part und Exportparts für externe Formatierung“ 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 „Part und Exportparts für externe Formatierung“?

Machen Sie Shadow-DOM-Teile mit part und exportparts für externes CSS zugänglich 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 „Part und Exportparts für externe Formatierung“?

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. attachShadow und Shadow Root
  2. Slot-Elemente zur Inhaltsverteilung
  3. Gekapselte Stile im Shadow DOM
  4. Part und Exportparts für externe Formatierung
← Zurück zu HTML Academy