0Pricing
HTML Academy · Leçon

`part` et `exportparts` pour le style externe

Exposez les parties du DOM d’ombre au CSS externe avec `part` et `exportparts`.

`part` et `exportparts` pour le style externe est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.

Le compromis de l'encapsulation

La stricte encapsulation des styles du DOM fantôme empêche les utilisateurs de restyliser individuellement les éléments internes d'un composant. Les variables CSS conviennent aux propriétés globales, mais vous ne pouvez pas, par exemple, donner au bouton interne de fermeture un border-radius personnalisé. Les parties résolvent ce problème.

L'attribut part

Marquez un élément interne à l'arbre fantôme avec part="name". Les utilisateurs peuvent alors le cibler avec le pseudo-élément ::part(name) : my-dialog::part(close-button) { color: red; }. L'élément nommé devient un point d'extension de style, tandis que le reste de l'arbre fantôme demeure encapsulé.

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

Plusieurs parties sur un même élément

Séparez les noms par des espaces pour exposer un même élément comme plusieurs parties : part="button primary". ::part(button) le cible de manière générique, tandis que ::part(primary) le cible comme un élément de style principal. Chaque nom est mis en correspondance indépendamment.

Limitations de ::part

::part n'autorise que certaines pseudo-classes (:hover, :focus, :disabled), et non les combinateurs de descendants ni d'autres sélections structurelles. ::part(card) p n'est pas valide ; vous ne pouvez pas accéder à l'intérieur d'une partie avec des sélecteurs de descendants.

exportparts transmet les parties

Lorsqu'un élément personnalisé imbrique un autre élément personnalisé dans son propre arbre fantôme, les parties de l'élément interne ne sont normalement pas exposées à la page externe. L'attribut exportparts="close-button" placé sur l'élément imbriqué transmet ces parties à l'hôte externe.

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

Renommer lors de l'exportation

exportparts="close-button: dismiss" exporte la partie interne sous un nouveau nom sur l'élément externe. Le composant externe peut ainsi présenter une interface de nommage claire, indépendante des éléments internes qu'il compose.

Parties ou propriétés personnalisées CSS

Les propriétés personnalisées exposent des valeurs (couleur, espacement, polices). Les parties exposent des éléments (une interface CSS complète — bordures, transformations, animations). Utilisez les propriétés personnalisées pour les valeurs globales et les parties pour les personnalisations ponctuelles au niveau d'un élément. Les deux peuvent coexister dans le même composant.

Modèle de création de thèmes

Bonne pratique des systèmes de conception : exposez un petit ensemble de parties pour les éléments les plus personnalisés (boutons, en-têtes, indicateurs), ainsi qu'un ensemble généreux de propriétés personnalisées pour les couleurs, l'espacement et la typographie. Les utilisateurs peuvent appliquer un thème au niveau des valeurs ou au niveau des éléments, selon leurs besoins.

Stabilité des noms de parties

Les noms de parties deviennent une composante de l'API publique du composant : les modifier casse le CSS des utilisateurs. Choisissez des noms qui décrivent le rôle de l'élément («close-button», «header», «track») plutôt que sa position («first-button»), afin que l'interface reste pertinente lorsque l'implémentation évolue.

Conseils de documentation

Répertoriez toutes les parties disponibles, ainsi que les parties exportées, dans le fichier README du composant. Sans documentation, les utilisateurs doivent inspecter le DOM pour découvrir les parties, ce qui les couple à ce qu'ils trouvent par hasard. Traitez la liste des parties comme la liste des propriétés d'un composant de framework.

Compatibilité des navigateurs

::part et exportparts sont disponibles dans tous les navigateurs modernes. Même les anciennes versions de Safari prennent désormais en charge ::part. Utilisez-les librement ; pour les navigateurs très anciens, aujourd'hui presque disparus, prévoyez comme solution de remplacement des propriétés personnalisées CSS supplémentaires.

Vérification des connaissances

Que fait l'attribut exportparts ?

Résumé

L'attribut part expose des éléments fantômes individuels afin de permettre leur style externe via ::part(name), avec toute la puissance du CSS sans compromettre l'encapsulation. exportparts transmet les parties des éléments personnalisés imbriqués à l'hôte externe, avec la possibilité de les renommer. Combinez les parties avec les propriétés personnalisées CSS pour obtenir une interface de thème complète, et documentez la liste des parties comme faisant partie de l'API du composant.

Questions Fréquemment Posées

La leçon « `part` et `exportparts` pour le style externe » est-elle gratuite ?

Oui — le texte complet de « `part` et `exportparts` pour le style externe » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « `part` et `exportparts` pour le style externe » ?

Exposez les parties du DOM d’ombre au CSS externe avec `part` et `exportparts`. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer HTML Academy ?

Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « `part` et `exportparts` pour le style externe » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?

Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. `attachShadow` et racine d’ombre
  2. Éléments `slot` pour distribuer le contenu
  3. Styles limités dans le DOM d’ombre
  4. `part` et `exportparts` pour le style externe
← Retour à HTML Academy