Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafaelff

Tag <pre> com quebra de linha

Recommended Posts

Para exibir comentários postados por usuários estou usando uma tag <pre> para manter a formatação. Mas quando um usuário posta em uma linha única o <pre> não quebra a linha, fazendo com que o layout expanda-se horizontalmente. Utilizei a o atibuto "width", que no caso da tag <pre> ele funciona limitando o número de caracteres exibidos em uma mesma linha, mas esse atributo apenas funcionou no Firefox e não no Internet Explorer. E no caso do "width" pelo css, ao invés de quebrar a linha ele oculta o texto em excesso.

Alguém sabe de alguma forma de manter os espaços em branco e a formatação do texto apenas quebrando as linhas que ultrapassarem o tamanho da tag?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recomendo o uso da TAG <P> e em alguns casos <BR>

a quebra sofreria um replace colocaria ou BR ou cada linha receberia um <P>

 

Recomendo o uso de <PRE> para exibição de códigos:

<pre>
   function funcao(){
	   alert("texto");
   }
</pre>

use overflow:auto; acaso sejam códigos:

pre{
width:200px;/*defina a largura que você quiser*/
height:500px;/*defina a altura que você quiser*/
overflow:auto;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Silverfox, agradeço a ajuda mas acho que posso não ter sido muito claro na minha dúvida.

 

O conteúdo a ser exibido é definido pelo usuário do site. Um usuário muitas vezes leigo em programação e que não usaria a tag <br> em seu texto.

Ele apenas escreve o que deseja em uma caixa de texto (assim como estou fazendo agora para enviar esse comentário) utilizando a tecla "enter" para dar as devidas quebras de linha e então envia-o a nós.

 

Esse texto será posteriormente exibido na minha página automaticamente. Por isso utilizei a tag <pre>, para manter as quebras de linha e a formatação enviadas pelo usuário. Caso eu utilize a tag <p> o texto que antes possuía 3 linhas, por exemplo, será exibido em uma linha única.

 

Mas o problema é que a tag <pre> além de manter as quebras de linha inseridas pelo usuário não permite que o navegador insira novas quebras de linha quando necessárias.

Então reformulo minha pergunta: Existe algum modo de mater as quebras de linha e os espaços em branco de um texto (assim como a tag <pre> faz) sem inibir o navegador de quebrar as linhas que excederem o espaço oferecido à exibição desse mesmo texto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que tal esse editor cara?

http://www.fckeditor.net/

 

Se for algo "bem sofisticado", vale a pena. Se não, basta que na hora em que você imprimir oque o user digitou, fazer isos dentro de um <p></p>, e configurar esse parágrafo para ter tanto de largura. Se você colocar width de 300pixels, oque ele digitou vai para chegar nos 300px, e quebrar, indo pra segunda linha, e assim por diante.

 

Se não é isso que acontece, então o erro é em outra parte do teu site.

Poste o link.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi bem sua pergunta, o que eu quero dizer que a quebra deveria ser feita usando Br ou fosse automatica.

E os paragrafos fossem definidos por SERVER-SIDE usando 'replace'.

 

O que eu quero dizer com isso é a questão ada semantica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, talvez o que eu precise seja algo como um replace automático...

Mas para fazer isso em server-side fica complicado, porque eu armazeno esses dados em um banco de dados sql. Acho que vou ter que procurar alguma solução em javascript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então você não prescisa fazer o replace no SQL e sim no retorno a sua pagina, é ASP ou PHP.

 

Vou por um exemplo em PHP simples.

<?php
while($linha){
echo str_replace("\r\n","<br />",$linha["texto"];
}
?>
Claro que esse é bem simples, recomendo usar preg_replace();, Assim você poderá usar BR na hora certa e P na linha inteira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, Silverfox!

 

Fiz exatamente o que você deu como "simples exemplo" mas em javascript e deu certo... No Firefox! Não sei por quê mas o Internet Explorer simplesmente ignorou meu código javascript e não executou-o. "¬¬

Hora de trocar de sessão no fórum e ir perguntar na área de javascript...

Por que essa porcaria de IE é o navegador mais popular? Só porque já vem com o Windows? Maldita Microsoft, só me dá dor de cabeça! É só resolver um problema que me aparecem mais dois!

 

O link do tópico na área de Javascript é esse:

http://forum.imasters.com.br/index.php?showtopic=300501

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recomendo o SERVER-SIDE ao inves de JAVASCRIPT pois ele funcionará tambem sem javascript.

Detalhe o \R não é lido pelo javscript, então use apenas \N.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.