W3docs

CSS ::placeholder Pseudo-élément

Utilisez le sélecteur CSS ::placeholder pour styliser le texte indicatif d'un champ de formulaire. Découvrez ce pseudo-élément et consultez des exemples.

Le pseudo-élément ::placeholder sélectionne le texte indicatif d'un champ de formulaire — l'indice court affiché à l'intérieur d'un <input> ou d'un <textarea> vide, qui disparaît dès que l'utilisateur commence à taper. Il ne correspond qu'aux éléments portant un attribut placeholder. Par défaut, les navigateurs affichent le texte indicatif dans une couleur semi-transparente ou gris clair.

Pseudo-élément ::placeholder

L'indice lui-même provient de l'attribut HTML placeholder, tandis que ::placeholder vous permet de styliser l'apparence de cet indice — sa couleur, sa police, et ainsi de suite.

Quand l'utiliser

Utilisez ::placeholder lorsque vous souhaitez que l'indice soit lisible sur le fond de votre formulaire, ou qu'il corresponde aux couleurs de votre marque. Quelques points à connaître avant de le styliser :

  • Seul un ensemble limité de propriétés s'applique. Comme le placeholder est du « pseudo-contenu », vous pouvez utiliser des propriétés qui affectent le texte lui-même — color, font-*, letter-spacing, text-decoration, opacity, background, et quelques autres. Les propriétés de mise en page (comme margin ou width) n'ont aucun effet.
  • Conservez un contraste suffisant. Le gris clair par défaut ne respecte souvent pas les règles d'accessibilité en matière de contraste. Si vous modifiez la couleur, assurez-vous que le texte reste lisible.
  • Un placeholder n'est pas un label. Il disparaît dès que l'utilisateur commence à taper, il ne doit donc jamais remplacer un vrai <label>. Utilisez-le pour une valeur exemple, pas pour le nom du champ.
Info

Les préfixes vendeurs (-webkit-, -moz-, -ms-) sont des héritages du passé et inutiles pour les navigateurs modernes. Le sélecteur standard ::placeholder est pris en charge partout, vous pouvez donc écrire une seule règle ::placeholder en toute sécurité.

Version

Selectors Level 4

Syntaxe

Exemple de syntaxe CSS ::placeholder

::placeholder {
  css declarations;
}

Exemple du sélecteur ::placeholder :

Exemple CSS ::placeholder

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      input::placeholder {
        color: #1c87c9;
        font-size: 1.2em;
        font-style: italic;
      }
    </style>
  </head>
  <body>
    <h2>::placeholder selector example</h2>
    <input placeholder="Type here..." />
  </body>
</html>

Exemple du sélecteur ::placeholder utilisé dans un formulaire :

Exemple de code CSS ::placeholder

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      * {
        box-sizing: border-box;
      }
      .container {
        margin: 20px auto;
        max-width: 250px;
        background-color: #8ebf42;
        padding: 20px;
      }
      input {
        border: 1px solid #666666;
        background-color: #eeeeee;
        padding: 15px;
        margin-bottom: 20px;
        display: block;
        width: 100%;
      }
      input::-webkit-input-placeholder {
        color: #666666;
      }
      input::-moz-placeholder {
        color: #666666;
      }
      input:-ms-input-placeholder {
        color: #666666;
      }
      input::placeholder {
        color: #666666;
      }
    </style>
  </head>
  <body>
    <h2>::placeholder selector example</h2>
    <div class="container">
      <form>
        <input type="text" placeholder="Lorem ipsum is simply..." />
        <input type="date" placeholder="DD/MM/YYYY" />
      </form>
    </div>
  </body>
</html>

Exemple du sélecteur ::placeholder avec l'attribut autofocus de <input> HTML :

Exemple HTML de placeholder

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      label {
        display: block;
        color: #777777;
        margin: 0 0 4px;
      }
      input {
        border: 1px solid transparent;
        padding: 15px;
        font-size: 1.2em;
        outline: 0;
      }
      input::placeholder {
        color: #8ebf42;
      }
      label,
      input {
        font-family: sans-serif;
      }
    </style>
  </head>
  <body>
    <h2>::placeholder selector example</h2>
    <form action="#">
      <div>
        <label for="name">Name:</label>
        <input id="name" name="name" type="text" placeholder="Enter your name here" autofocus />
      </div>
    </form>
  </body>
</html>

Sujets connexes

Pratique

Pratique
Que fait le pseudo-élément ::placeholder en CSS ?
Que fait le pseudo-élément ::placeholder en CSS ?
Was this page helpful?