Mon site va avoir du code en ligne ("lors de l'utilisation de la foo()
fonction ...") et des extraits de blocs. Ceux-ci ont tendance à être XML et ont de très longues lignes que je préfère que le navigateur encapsule (c'est-à-dire que je ne veux pas utiliser <pre>
). Je voudrais également mettre la mise en forme CSS sur les extraits de blocs.
Il semble que je ne puisse pas utiliser les <code>
deux, car si je mets des attributs de bloc CSS dessus (avec display: block;
), cela cassera les extraits en ligne.
Je suis curieux de savoir ce que font les gens. Utiliser <code>
pour les blocs et <samp>
pour en ligne? Utiliser <code><blockquote>
ou quelque chose de similaire?
J'aimerais garder le HTML réel aussi simple que possible, en évitant les classes, car d'autres utilisateurs le maintiendront.
la source
<pre>
et son comportement peut être gardé à l'esprit comme le mot « précisément»Réponses:
À utiliser
<code>
pour le code en ligne qui peut encapsuler et<pre><code>
pour le code de bloc qui ne doit pas encapsuler.<samp>
est pour un exemple de sortie , donc j'éviterais de l'utiliser pour représenter un exemple de code (que le lecteur doit saisir ). C'est ce que fait Stack Overflow.(Mieux encore, si vous voulez un entretien facile, laissez les utilisateurs éditer les articles en Markdown, alors ils n'auront pas à se rappeler de les utiliser
<pre><code>
.)HTML5 est d'accord avec cela dans «l'
pre
élément» :la source
<code>
balise, mais ont décidé que nous n'écririons jamais qu'une seule ligne? Ou je suppose, parce qu'ils ne voulaient pas avoir deux balises, un bloc et un en ligne? Pourtant ... qu'est-ce qui ne va pas avec la création de<code>
blocs au niveau CSS? Je pensais que nous étions censés écrire du HTML "sémantique".<code>
est bon et sémantique, mais<pre>
pas tellement.<code>
niveau du bloc avec CSS n'est pas sémantique. Cette méthode est recommandée en HTML5 .<pre>
est qu'il modifie également le traitement des espaces blancs: tous les espaces sont conservés et l'habillage est désactivé. À moins qu'il n'y ait un moyen de désactiver cela?white-space: normal;
Bien que je ne vois pas pourquoi vous le feriez pour du code. De plus, cette<pre><code>
chose est stupide, la<pre>
balise est définie très clairement dans les normes comme "code informatique" (et d'autres choses) comme mentionné par @jleedev. Est-ce parce que vous pensez que<code>
c'est un meilleur nom? désolé, cela ne le rend pas plus sémantique. Il y a un cas similaire avec la balise<address>
, cela ne ressemble pas vraiment à "auteur", mais la norme dit que c'est pour ça, donc c'est le cas.Quelque chose que j'ai complètement manqué: le comportement de non-wrapping
<pre>
peut être contrôlé avec CSS. Cela donne donc le résultat exact que je cherchais:http://jsfiddle.net/9mCN7/
la source
Personnellement, j'utiliserais
<code>
parce que c'est le plus sémantiquement correct. Ensuite, pour différencier le code en ligne et le code de bloc, j'ajouterais une classe:pour le code en ligne ou:
pour le bloc de code. Selon ce qui est moins courant.
la source
<code>
bloc par défaut sans classe pour le cas d'utilisation le plus courant. Ensuite, toute personne souhaitant faire la chose inhabituelle n'a qu'à ajouter la classe. Le faire d'une autre manière demandera toujours à l'utilisateur de taper extra. De cette façon, l'utilisateur peut y penser en ajoutant une balise spéciale plutôt qu'en utilisant une structure complètement différente.Pour une
<code>
utilisation normale en ligne :et pour chaque endroit où le blocage
<code>
est nécessaire, utilisezAlternativement, définissez une
<codenza>
balise pour le bloc de doublure de rupture<code>
(pas de classes)Test: (NB: ce qui suit est un scURIple utilisant un
data:
protocole / schéma URI, donc les%0A
codes de format nl sont essentiels pour les conserver lorsqu'ils sont coupés et collés dans la barre d'URL pour le test - doncview-source:
( ctrl- U) semble bien précéder chaque ligne ci-dessous avec%0A
)la source
Afficher le code HTML, tel quel , à l'aide de la
<xmp>
balise (obsolète) :Il est très triste que cette balise soit obsolète, mais cela fonctionne toujours sur les navigateurs, c'est une balise bad-ass. pas besoin d'échapper à quoi que ce soit à l'intérieur. Quelle joie!
Afficher le code HTML, tel quel , à l'aide de la
<textarea>
balise:la source
<textarea readonly>
fait de même, est actuelle et a beaucoup plus de contrôle si vous le souhaitez.<xmp>
fait, ou tout autreblock
élément le fait .. je ne le recommanderais pas comme une vraie solution, seulement comme une solution théorique.<blink>
est un exemple - je serais impatient de l'utiliser pour tout ce qui doit être évolutif.Considérez TextArea
Les personnes qui trouvent cela via Google et recherchent un meilleur moyen de gérer l'affichage de leurs extraits devraient également considérer
<textarea>
ce qui donne beaucoup de contrôle sur la largeur / hauteur, le défilement, etc. Notant que @vsync a mentionné la balise obsolète<xmp>
, je trouve que<textarea readonly>
c'est un excellent substitut pour afficher du HTML sans avoir besoin d'échapper à quoi que ce soit à l'intérieur (sauf là où</textarea>
pourrait apparaître à l'intérieur).Par exemple, pour afficher une seule ligne avec un habillage de ligne contrôlé, considérez
<textarea rows=1 cols=100 readonly>
votre html ou etc avec tous les caractères, y compris les tabulations et les CrLf</textarea>
.Pour tout comparer ...
la source
Considérez Prism.js: https://prismjs.com/#examples
Cela fait du
<pre><code>
travail et est attrayant.la source