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

<pre> : l'élément de texte préformaté

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

L'élément HTML <pre> représente du texte préformaté qui est présenté exactement comme écrit dans le fichier HTML. Le texte est généralement affiché avec une police non proportionnelle, ou à chasse fixe.

Les espaces à l'intérieur de cet élément sont affichés tels quels, à une exception près. Si un ou plusieurs caractères de nouvelle ligne sont inclus immédiatement après la balise ouvrante <pre>, le premier caractère de nouvelle ligne est supprimé. Cette transformation est effectuée par l'analyseur HTML et ne s'applique pas lors de l'utilisation de XHTML.

Le contenu textuel des éléments <pre> est analysé comme du HTML, donc si vous souhaitez que votre texte reste du texte brut, certains caractères de syntaxe, comme <, doivent être échappés à l'aide de leur référence de caractère. Voir Échapper les caractères ambigus pour plus d'informations.

Les éléments <pre> contiennent couramment les éléments <code>, <samp> et <kbd>, pour représenter respectivement du code informatique, une sortie informatique et une saisie utilisateur.

Par défaut, <pre> est un élément de niveau bloc, c'est-à-dire que sa valeur display par défaut est block.

Exemple interactif

<pre>
             S
             A
            LUT
             M
            O N
            D  E
            DONT
          JE SUIS
          LA  LAN
          G U E  É
         L O Q U E N
        TE      QUESA
       B  O  U  C  H  E
      O        P A R I S
     T I R E   ET   TIRERA
    T O U             JOURS
   AUX                  A  L
 LEM                      ANDS   - Apollinaire
</pre>
pre {
  font-size: 0.7rem;
  margin: 0;
}

Attributs

Cet élément inclut uniquement les attributs universels.

width Obsolète Non standard

Cet attribut contient le nombre préféré de caractères qu'une ligne devrait avoir. Bien qu'implémenté, cet attribut n'a aucun effet visuel ; pour obtenir cet effet, il est plutôt conseillé d'utiliser la propriété CSS width.

wrap Obsolète Non standard

Cet attribut est une indication sur la façon de gérer le dépassement d'une ligne. Les navigateurs modernes ignorent cette indication et cet attribut n'engendre aucun effet visuel ; pour obtenir cet effet, il faut utiliser la propriété CSS white-space.

Accessibilité

Il est important de fournir une description alternative pour toute image ou diagramme créé avec du texte préformaté. Cette description alternative devrait décrire clairement, et de façon concise, le contenu du diagramme.

Les personnes souffrant de troubles de la vision et/ou navigant à l'aide d'outils d'assistance comme des lecteurs d'écran peuvent ne pas comprendre le diagramme si celui-ci est construit avec des lettres et symboles et lu dans le désordre.

Pour légender un tel diagramme, on pourra utiliser une combinaison d'éléments <figure> et <figcaption>, complétée par les attributs ARIA role et aria-label sur l'élément <pre> afin que le dessin en ASCII préformaté puisse être énoncé comme une image avec un texte alternatif, <figcaption> servant alors de légende à l'image.

Exemple

html
<figure>
  <pre role="img" aria-label="Vache en ASCII">
      ___________________________
  &lt; Je suis la meuhieure. &gt;
      ---------------------------
          \   ^__^
           \  (oo)\_______
              (__)\       )\/\
                  ||----w |
                  ||     ||
  </pre>
  <figcaption id="cow-caption">
    Une vache qui dit "Je suis la meuhieure.". La vache est illustrée à l'aide
    de caractères préformatés.
  </figcaption>
</figure>

Exemples

Exemple simple

HTML

html
<p>On peut utiliser CSS pour changer la couleur d'une police.</p>
<pre>
body {
  color: red;
}
</pre>

Résultat

Échapper des caractères réservés

Supposons que vous vouliez montrer du code HTML dans un élément <pre>. Les séquences de caractères qui définissent des balises HTML valides (commençant par < et se terminant par >) ne seront pas affichées. Pour afficher les caractères de balise comme du texte, vous devez échapper (au moins) le caractère < à l'aide de sa référence de caractère, afin que les séquences ne définissent plus de balises valides.

En réalité, l'analyseur HTML traite la plupart des caractères comme du texte brut, sauf dans des contextes spécifiques. Par exemple, < code fonctionne, mais <code serait mal interprété ; &am; fonctionne, mais &amp; non. Cependant, il est recommandé d'échapper tous les caractères ambigus pour éviter toute confusion, surtout si vous générez du HTML de manière programmatique et injectez le contenu du <pre>. Dans ce cas, voici une bonne règle à suivre pour échapper les caractères :

  1. Commencez par écrire le contenu tel que vous souhaitez qu'il apparaisse dans le document HTML.
  2. Remplacez tous les esperluettes (&) par &amp;. Faites cette étape en premier, afin que les nouveaux caractères & générés à l'étape suivante ne soient pas échappés.
  3. Remplacez tous les caractères < par &lt;.

Cela devrait permettre d'afficher le contenu comme vous le souhaitez. Le remplacement d'autres caractères de syntaxe HTML est optionnel (comme > par &gt;, " par &quot; et ' par &apos;), mais n'occasionnera aucun problème.

HTML

html
<pre>
let i = 5;

if (i &lt; 10 &amp;&amp; i &gt; 0) {
  return &quot;Nombre à un seul chiffre&quot;;
}
</pre>

Résultat

Résumé technique

Catégories de contenu Contenu de flux, contenu tangible.
Contenu autorisé Contenu phrasé.
Omission de balises Aucune, la balise d'ouverture et la balise de fermeture sont obligatoires.
Parents autorisés Tout élément qui accepte du contenu de flux.
Rôle ARIA implicite generic
Rôles ARIA autorisés Tous les rôles sont autorisés.
Interface DOM HTMLPreElement

Spécifications

Specification
HTML
# the-pre-element

Compatibilité des navigateurs

Voir aussi