Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

:defined

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨janvier 2020⁩.

La pseudo-classe CSS :defined représente n'importe quel élément ayant été défini. Cela inclut les éléments standards provenant du navigateur, ainsi que les éléments personnalisés (« custom elements ») ayant correctement été définis (c'est-à-dire grâce à la méthode CustomElementRegistry.define()).

css
/* Cette règle cible tout élément défini */
:defined {
  font-style: italic;
}

/* Cette règle cible n'importe quelle instance d'un élément personnalisé donné */
simple-custom:defined {
  display: block;
}

Syntaxe

css
:defined {
  /* ... */
}

Exemples

Masquer les éléments jusqu'à ce qu'ils soient définis

Dans cette démonstration, nous définissons un élément personnalisé de base nommé <custom-element> et utilisons les sélecteurs :not(:defined) et :defined pour mettre en forme l'élément avant et après sa définition. Cela est utile si vous avez un élément personnalisé complexe qui prend un certain temps à se charger dans la page — vous pouvez alors masquer les instances de l'élément jusqu'à ce que la définition soit terminée afin d'éviter que des éléments non stylisés n'apparaissent de manière inesthétique sur la page.

HTML

Le code HTML suivant utilise l'élément personnalisé, mais celui-ci n'a pas encore été défini. Nous incluons également un élément <button> qui définira l'élément personnalisé lorsqu'on cliquera dessus, ce qui vous permettra de voir son état avant et après la définition.

html
<custom-element>
  <p>
    Contenu chargé : Lorem ipsum tel sed tellus eiusmod tellus. Aenean. Semper
    dolor sit nisi. Elit porttitor nisi sit vivamus.
  </p>
</custom-element>

<button id="btn">définir le <code>&lt;custom-element&gt;</code></button>

CSS

Dans le CSS suivant, nous utilisons le sélecteur custom-element:not(:defined) pour sélectionner l'élément et le colorer en gris lorsqu'il n'est pas défini, et le sélecteur custom-element:defined pour sélectionner l'élément et le colorer en noir une fois qu'il est défini.

css
custom-element:not(:defined) {
  border-color: grey;
  color: grey;
}

custom-element:defined {
  background-color: wheat;
  border-color: black;
  color: black;
}

/* afficher le message de chargement */
custom-element:not(:defined)::before {
  content: "Chargement...";
  position: absolute;
  inset: 0;
  align-content: center;
  text-align: center;
  font-size: 2rem;
  background-color: white;
  border-radius: 1rem;
}

/* supprimer le message de chargement */
custom-element:defined::before {
  content: "";
}

Nous avons également utilisé le pseudo-élément ::before pour afficher un message superposé « Chargement... » jusqu'à ce que l'élément soit défini. Une fois défini, il est supprimé en définissant le content sur une chaîne vide.

JavaScript

Le JavaScript suivant a été utilisé pour définir l'élément personnalisé. Pour vous permettre de voir l'état de l'élément personnalisé avant et après sa définition, nous exécutons la méthode must be provided lorsque vous cliquez sur le bouton.

js
const btn = document.querySelector("#btn");

btn.addEventListener("click", () => {
  customElements.define("custom-element", class extends HTMLElement {});
  btn.remove();
});

Résultat

Spécifications

Specification
HTML
# selector-defined
Selectors Level 4
# defined-pseudo

Compatibilité des navigateurs

Voir aussi