Respostas:
A resposta desta página em CSS:
pre {
white-space: pre-wrap; /* Since CSS 2.1 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
pre-line
recolhe todos os espaços em branco (não apenas no início da linha). developer.mozilla.org/en-US/docs/Web/CSS/white-space possui uma tabela que resume o comportamento dos white-space
valores.
word-wrap: break-word
não faz o que a pergunta está pedindo, faz com que ocorram linhas entre as palavras. Você pode excluir essa linha. Nos navegadores modernos, você não precisa de nenhum -moz
ou de outro prefixo.
Isso funciona muito bem para quebrar o texto e manter o espaço em branco dentro da pre
-tag:
pre {
white-space: pre-wrap;
}
Descobri que pular a tag pré e usar espaço em branco: pré-envolver em uma div é uma solução melhor.
<div style="white-space: pre-wrap;">content</div>
style="white-space: pre-wrap; font-family:monospace;"
<pre>
de blocos de código.
De maneira mais sucinta, isso força o conteúdo a quebrar dentro de uma tag "pre" sem quebrar as palavras. Felicidades!
pre {
white-space: pre-wrap;
word-break: keep-all
}
Veja o exemplo ao vivo aqui .
Era disso que eu precisava. Impedia que as palavras se quebrassem, mas permitia uma largura dinâmica na área pré.
word-break: keep-all;
Sugiro esquecer o pré e colocá-lo em uma área de texto.
Seu recuo permanecerá e seu código não será digitado no meio de um caminho ou algo assim.
Também é mais fácil selecionar o intervalo de texto em uma área de texto se você deseja copiar para a área de transferência.
A seguir, um trecho do php; portanto, se você não estiver no php, a maneira como você compacta os caracteres especiais html varia.
<textarea style="font-family:monospace;" onfocus="copyClipboard(this);"><?=htmlspecialchars($codeBlock);?></textarea>
Para obter informações sobre como copiar texto para a área de transferência em js, consulte: Como copiar para a área de transferência em JavaScript? .
Contudo...
Acabei de inspecionar os blocos de código stackoverflow e eles envolvem uma tag <code> envolvida na tag <pre> com css ...
code {
background-color: #EEEEEE;
font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;
}
pre {
background-color: #EEEEEE;
font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;
margin-bottom: 10px;
max-height: 600px;
overflow: auto;
padding: 5px;
width: auto;
}
Além disso, o conteúdo dos blocos de códigos stackoverflow é destacado em sintaxe usando (eu acho) http://code.google.com/p/google-code-prettify/ .
É uma boa configuração, mas estou indo com textareas por enquanto.
<pre>
tem nenhum significado semântico (ao contrário <code>
), significa simplesmente que novas linhas e vários espaços devem ser preservados.
Você também pode:
pre { white-space: normal; }
para manter a fonte monoespaçada, mas adicione quebra automática de linha ou:
pre { overflow: auto; }
o que permitirá um tamanho fixo com rolagem horizontal para linhas longas.
Tente usar
<pre style="white-space:normal;">.
Ou melhor, jogue CSS.
Use white-space: pre-wrap
e alguns prefixos para quebra automática de linha dentro de pre
s.
Não use, word-wrap: break-word
porque isso simplesmente quebra uma palavra ao meio, o que provavelmente é algo que você não deseja.
O Best Cross Browser Way trabalhou para mim para obter quebras de linha e mostra o código ou texto exato: (chrome, internet explorer, Firefox)
CSS:
xmp{ white-space:pre-wrap; word-wrap:break-word; }
HTML:
<xmp> your text or code </xmp>
O seguinte me ajudou:
pre {
white-space: normal;
word-wrap: break-word;
}
obrigado
white-space: pre-wrap;
porque respeita os espaços em branco
O <pre>
-Element significa "texto pré-formatado" e se destina a manter a formatação do texto (ou qualquer outra coisa) entre suas tags. Portanto, na verdade, não se pretende ter quebra automática de linha ou quebra de linha dentro da <pre>
tag
O texto em um elemento é exibido em uma fonte de largura fixa (geralmente Courier) e preserva os espaços e as quebras de linha .
fonte: w3schools.com , ênfases feitas por mim.
white-space:pre-line;
(e todos os tipos de navegadores compatíveis) parece mais adequado em alguns casos (sem guias, por exemplo), pois ocupa o espaço no início da linha (se houver)