Pseudo-classe CSSPseudo-classes

:placeholder-shown

Correspond à un champ input ou textarea qui affiche actuellement un texte de substitution, c’est-à-dire qu’il est vide et possède l’attribut placeholder.

Sur cette page

Exemple

#
CSS
.float {
  position: relative;
}

.float label {
  position: absolute;
  left: 12px;
  top: 50%;
  translate: 0 -50%;
  color: #a1a1aa;
  pointer-events: none;
  transition: all 0.15s;
}

.float input:focus + label,
.float input:not(:placeholder-shown) + label {
  top: 0;
  padding: 0 4px;
  background: #0c0c10;
  color: #c4b5fd;
  font-size: 12px;
}
Aperçu

Le champ a placeholder=" ", c’est-à-dire une espace, car sans attribut la pseudo-classe ne fonctionnerait pas. Cliquez dans le champ et saisissez quelque chose : l’étiquette se déplace sur la bordure et y reste tant que le champ n’est pas vide.

Définition et utilisation

#

La pseudo-classe :placeholder-shown correspond à un champ de texte tant que l’indication de l’attribut placeholder y est visible. Dès que l’utilisateur saisit le premier caractère, l’indication disparaît et le champ cesse de correspondre. Un champ sans attribut placeholder n’y correspond jamais.

C’est un moyen indirect de vérifier si un champ est vide, car le CSS n’a pas de sélecteur « champ avec une valeur ». D’où l’association courante :not(:placeholder-shown), c’est-à-dire « l’utilisateur a saisi quelque chose ». Les étiquettes flottantes et l’affichage des erreurs de validation seulement après la saisie s’appuient sur elle.

Ne la confondez pas avec le pseudo-élément ::placeholder. La pseudo-classe permet de styliser tout le champ à l’état vide (bordure, fond, étiquette à côté), tandis que le pseudo-élément ne stylise que le texte de l’indication lui-même.

Syntaxe

#
Syntaxe
sélecteur:placeholder-shown { propriété: valeur; }

Utilisations courantes

#
  • input:placeholder-shown

    Un champ vide avec une indication visible a une bordure en pointillés. Saisissez quelque chose, et la bordure devient continue.
  • input:not(:placeholder-shown)

    Un champ dans lequel quelque chose a été saisi. Le second champ correspond immédiatement, car il a une valeur.

Utilisations courantes en pratique

#

input:placeholder-shown

Un champ vide avec une indication visible a une bordure en pointillés. Saisissez quelque chose, et la bordure devient continue.
input:placeholder-shown {
  border-style: dashed;
  border-color: #71717a;
}

input:not(:placeholder-shown)

Un champ dans lequel quelque chose a été saisi. Le second champ correspond immédiatement, car il a une valeur.
input:not(:placeholder-shown) { border-color: #10b981; }

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Si vous ne voulez pas d’indication visible mais avez besoin de cette pseudo-classe, définissez placeholder=" ". Le champ paraîtra vide, et le sélecteur fonctionnera.
  • Le placeholder ne remplace pas une étiquette : il disparaît à la saisie et a souvent un faible contraste. Une étiquette flottante est un bon compromis, car elle reste toujours visible.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.