Meu site terá algum código embutido ("ao usar a foo()
função ...") e alguns trechos de bloco. Eles tendem a ser XML e têm linhas muito longas que eu prefiro que o navegador agrupe (ou seja, não quero usar <pre>
). Eu também gostaria de colocar a formatação CSS nos trechos do bloco.
Parece que não posso usar <code>
para ambos, porque se eu colocar atributos de bloco CSS nele (com display: block;
), ele quebrará os trechos inline.
Estou curioso para saber o que as pessoas fazem. Use <code>
para blocos e <samp>
para inline? Use <code><blockquote>
ou algo semelhante?
Eu gostaria de manter o HTML real o mais simples possível, evitando classes, pois outros usuários o manterão.
html
semantic-markup
Steve Bennett
fonte
fonte
<pre>
e seu comportamento pode ser mantido em mente que a palavra “pré precisamente”Respostas:
Use
<code>
para código embutido que pode quebrar e<pre><code>
para código de bloco que não deve quebrar.<samp>
é para saída de amostra , portanto, evitaria usá-lo para representar o código de amostra (que o leitor deve inserir ). É isso que o Stack Overflow faz.(Melhor ainda, se você quiser uma manutenção fácil, permita que os usuários editem os artigos como Markdown, eles não precisam se lembrar de usá-los
<pre><code>
.)O HTML5 concorda com isso no "
pre
elemento" :fonte
<code>
tag, mas decidiram que apenas escreveríamos uma linha? Ou eu acho, porque eles não queriam ter duas tags, uma bloco e uma inline? Ainda assim ... o que há de errado em criar<code>
um nível de bloco com CSS? Eu pensei que deveríamos escrever HTML "semântico".<code>
é bom e semântico, mas<pre>
não tanto.<code>
nível de bloco com CSS não é semântico. Dessa forma, é recomendado em HTML5 .<pre>
é que ele também modifica o processamento de espaço em branco: todos os espaços são preservados e o empacotamento é desativado. A menos que haja uma maneira de desligar isso?white-space: normal;
Embora eu não consiga entender por que você faria isso por código. Além disso, isso<pre><code>
é estúpido, a<pre>
tag é definida muito claramente nos padrões como "código de computador" (e outras coisas), como mencionado por @jleedev. É porque você acha que<code>
é um nome melhor? desculpe por não torná-lo mais semântico. Existe um caso semelhante com a tag<address>
, que realmente não soa como "autor", mas o padrão diz que é para isso que serve.Algo que eu perdi completamente: o comportamento de não empacotar
<pre>
pode ser controlado com CSS. Portanto, isso fornece o resultado exato que eu estava procurando:http://jsfiddle.net/9mCN7/
fonte
Pessoalmente, eu usaria
<code>
porque é o mais semanticamente correto. Em seguida, para diferenciar entre código inline e código de bloco, eu adicionaria uma classe:para código embutido ou:
para bloco de código. Dependendo do que é menos comum.
fonte
<code>
bloco padrão sem uma classe para o caso de uso mais comum. Então, qualquer pessoa que queira fazer algo incomum precisa apenas adicionar a classe. Fazer isso de qualquer outra maneira ainda exigirá que o usuário digite extra. Dessa forma, o usuário pode pensar nisso como adicionar uma tag especial em vez de usar uma estrutura completamente diferente.Para
<code>
uso normal embutido :e para todo e qualquer lugar onde
<code>
é necessário bloquear, useComo alternativa, defina uma
<codenza>
tag para o bloco de forro de quebra<code>
(sem classes)Teste: (NB: o seguinte é um scURIple utilizando um
data:
protocolo / esquema URI, portanto, os%0A
códigos de formato nl são essenciais para preservá- los quando cortados e colados na barra de URL para teste - para queview-source:
( ctrl- U) pareça bom antes de todas as linhas abaixo%0A
)fonte
Mostre o código HTML, como está , usando a
<xmp>
tag (obsoleta) :É muito triste que essa tag tenha sido descontinuada, mas ainda funciona em navegadores, é uma tag ruim. não há necessidade de escapar de nada dentro dela. Que alegria!
Mostre o código HTML, como está , usando a
<textarea>
tag:fonte
<textarea readonly>
faz o mesmo, é atual e tem muito mais controle, se você desejar.<xmp>
faz, ou em qualquer outroblock
elemento. Eu não o recomendaria como uma solução real, apenas como teórica.<blink>
é um exemplo -, eu ficaria ansioso em usar isso para qualquer coisa que precise ser preparada para o futuro.Considere TextArea
Pessoas encontrar esta via Google e à procura de uma maneira melhor de gerenciar a exibição de seus trechos também deve considerar
<textarea>
o que dá um grande controle sobre a largura / altura, a rolagem etc. Observando que @vsync mencionou a tag deprecated<xmp>
, acho que<textarea readonly>
é um excelente substituto para exibir HTML sem a necessidade de escapar de qualquer coisa dentro dele (exceto onde</textarea>
possa aparecer dentro).Por exemplo, para exibir uma única linha com quebra de linha controlada, considere
<textarea rows=1 cols=100 readonly>
seu html ou etc com qualquer caractere, incluindo tabulações e CrLfs</textarea>
.Para comparar tudo ...
fonte
Considere Prism.js: https://prismjs.com/#examples
Faz
<pre><code>
trabalho e é atraente.fonte