65 votes

Pourquoi HTML5 recommande-t-il de placer l'élément de code dans pre?

Le HTML5 documentation recommande de mettre la code élément à l'intérieur de l' pre élément, mais je ne comprends pas comment c'est mieux ou plus sémantiques que juste à l'aide de l'élément de code et CSS. Dans leur propre exemple:

<pre><code class="language-pascal">var i: Integer;
begin
   i := 1;
end.</code></pre>

Peut aussi être écrite (en Faisant certaines hypothèses sur le navigateur par défaut pour pre):

<style>
code {
    display: block;
    white-space: pre;
}
</style>
…
<code class="language-pascal">var i: Integer;
begin
   i := 1;
end.</code>

Même si l' pre est-il de distinguer un code de bloc à partir d'une ligne de chaîne de code, je ne vois pas qu'il soit plus sémantique choix que de spécifier le bloc-ness de l' code dans une classe.

Est-il une raison spécifique de l' pre est recommandée sur une feuille CSS solution?

73voto

Zeta Points 34033

<code> ne représente qu'un "fragment de code informatique". Il a été pensé à l'origine pour de simples fragments de code comme i++ ou <code>.

<pre> "représente un bloc de texte préformaté, dans lequel la structure est représentée par les conventions typographiques plutôt que par des éléments". C'est l'objectif initial était rien de plus qu'exactement ceci: fournir un texte de la même manière qu'il a été donné par l'auteur, par exemple

+----------------------------------+
| |
| ATTENTION! TEXTE PRÉFORMATÉ À L'AVANCE! | =o=
| __; ~^
+----------------TT------------°
 || _____________ _____________________
 || | À LA GRAND-MÈRE > | TOTALEMENT PAS UN PIÈGE > 
 oÖo|| |°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°° 
 | ö || | | .mm, 
~"""~"""~"""~"""~"""~"""~~"""~"""~"""~"""~"""~"""~"""~"""~"""~""..MWMWc...~"""~""

Vous n'avez pas besoin d'utiliser de chacun avec chacun des autres. <pre> a son propre rôle, comme <code> dispose de sa propre. Toutefois, <pre> est une façon de signaler que l'espace blanc dans le fragment est important, un rôle <code> est manquant.

Cependant, pour revenir à ta question: la note de l' exacte formulation:

L'exemple suivant montre comment un bloc de code pourrait être marquée à l'aide de l'avant et d'éléments de code.

<pre><code class="language-pascal">var i: Integer;
begin
   i := 1;
end.</code></pre>

Une classe est utilisée dans cet exemple pour indiquer la langue utilisée.

Il dit pourrait, pas devrait. Vous êtes libre de faire ce la façon dont vous le souhaitez. Il n'est pas recommandé par le W3C en aucune façon, cependant, personnellement, je vous recommande d'utiliser <pre><code>....

De plus amples explications

Chaque fois que white-space est une partie de votre code et de la structure de votre code, vous devez préciser que cette structure doit être conservée. Comme la structure dans le code est donné par les conventions typographiques (tabulations, sauts de ligne, les espaces) j'ai personnellement vous recommandons d'utiliser <pre><code>, même si c'est sans doute plus de code et un autre nœud du DOM. Mais à chaque fois que manquant d'espace blanc de rendre votre code imparfait qu'il est nécessaire.

En dehors de cela, vous pouvez facilement varier entre de code en ligne et code-blocs, sans vérification de l' element.className, et certains JS syntaxe surligneur fonctionne assez bien avec <pre><code>... et de la bande de l' <code> automatiquement.

Aussi, si vous utilisez une règle générale pour l' <code> avec white-space:pre;, vous ne pouvez pas l'utiliser pour les extraits sans classes supplémentaires. Si vous deviez créer une classe au lieu de cela, vous avez rien gagné par rapport à l' <pre><code>.

Références

  • W3C: HTML5: 4.6.11 L'élément de code (WD-html5-20120329)

    L' code élément représente un fragment de code informatique. Ce pourrait être un nom de l'élément XML, un fichier, un programme d'ordinateur, ou n'importe quelle autre chaîne que l'ordinateur se reconnaître.

  • W3C: HTML5: 4.5.3 Le pré élément (WD-html5-20120329)

    L' pre élément représente un bloc de texte préformaté, dans lequel la structure est représentée par les conventions typographiques plutôt que par les éléments.

12voto

Quentin Points 325526

CSS est pour la présentation.

L'espace blanc est significatif (pas de présentation) dans de nombreux langages de programmation.

4voto

prash Points 2653

Pour représenter un bloc de code informatique, le pré élément peut être utilisé avec un élément de code;

Pour représenter un bloc de sortie de l'ordinateur de la pré élément peut être utilisé avec un samp élément.

<pre><code> pour le bloc de code qui ne doit pas envelopper. Utiliser <code> de code en ligne qui peut s'enrouler.

Les sauts de ligne et les espaces blancs dans le texte inclus dans l' <pre> tags est maintenue car elle est dans le document html lorsque s'affiche sur le navigateur.Les navigateurs normalement rendu <pre> texte fixe pente de la police, avec whitespace.

0voto

Ghost Points 19

<pre> montre les sauts de ligne!

Cela vous empêche d'utiliser des fonctions php telles que nl2br () ou d'ajouter manuellement <br /> à chaque fin de ligne.

Cordialement, Ghost

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X