minha área de texto simples não mostra uma barra horizontal quando o texto é excedido. Envolve o texto para uma nova linha. Então, como removo o wordwrap e exibo a barra horizontal quando o texto é excedido?
minha área de texto simples não mostra uma barra horizontal quando o texto é excedido. Envolve o texto para uma nova linha. Então, como removo o wordwrap e exibo a barra horizontal quando o texto é excedido?
Respostas:
As áreas de texto não devem ser quebradas por padrão, mas você pode definir wrap = "soft" para desativar explicitamente a quebra:
<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
EDIT: O atributo "wrap" não é oficialmente suportado. I got it from a página SELFHTML alemão (uma fonte Inglês é aqui ) que diz IE 4.0 e Netscape 2.0 suporte de TI. Também testei no FF 3.0.7, onde funciona como deveria. As coisas mudaram aqui, o SELFHTML agora é um wiki e o link da fonte em inglês está morto.
EDIT2: Se você quiser ter certeza de que todos os navegadores o suportam, use o CSS para alterar o comportamento de quebra automática:
Usando Cascading Style Sheets (CSS), você pode conseguir o mesmo efeito com
white-space: nowrap; overflow: auto;
. Portanto, o atributo wrap pode ser considerado desatualizado.
A partir daqui (parece ser uma excelente página com informações sobre a área de texto).
EDIT3: Não sei ao certo quando foi alterado (de acordo com os comentários, deve ter sido por volta de 2014), mas wrap
agora é um atributo oficial do HTML5, consulte w3schools . A resposta foi alterada para corresponder a isso.
white-space: pre;
(ou pre-line
/ pre-wrap
) tiveram o mesmo efeito como wrap="off"
para mim (enquanto white-space: nowrap
não respeitou a padding
)
wrap="off"
não é mais válido, no entanto, é um requisito para o IE e o Edge!
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
também funciona se você não se importa com espaço em branco, mas é claro que não deseja que esteja trabalhando com código (ou parágrafos recuados ou qualquer conteúdo em que possa haver deliberadamente vários espaços) ... então prefiro pre
.
overflow-wrap: normal
(estava word-wrap
em navegadores mais antigos) é necessário caso algum pai tenha alterado essa configuração; isso pode causar quebra mesmo que pre
esteja definido.
também - ao contrário da resposta atualmente aceita - textareas que muitas vezes envolver por padrão. pre-wrap
parece ser o padrão no meu navegador.
overflow-x: scroll
com overflow: auto
. As barras de rolagem reduzem o espaço de digitação disponível na área de texto. Além disso, o IE11 processou desnecessariamente uma barra de rolagem vertical, mas a overflow: auto
corrigiu.
A seguinte solução baseada em CSS funciona para mim:
<html>
<head>
<style type='text/css'>
textarea {
white-space: nowrap;
overflow: scroll;
overflow-y: hidden;
overflow-x: scroll;
overflow: -moz-scrollbars-horizontal;
}
</style>
</head>
<body>
<form>
<textarea>This is a long line of text for testing purposes...</textarea>
</form>
</body>
</html>
Eu encontrei uma maneira de fazer uma área de texto com tudo isso funcionando ao mesmo tempo:
Funciona bem em:
Deixe-me explicar como eu cheguei a isso: eu estava usando a ferramenta integrada do Chrome inspector e vi valores nos estilos CSS; portanto, experimentei esses valores, em vez dos normais ... tentativas e erros até que eu o reduzisse ao mínimo e aqui está é para quem quer.
Na seção CSS, usei exatamente isso para Chrome, Firefox, Opera e Safari:
textarea {
white-space:nowrap;
overflow:scroll;
}
Na seção CSS, usei exatamente isso para o IE:
textarea {
overflow:scroll;
}
Foi um pouco complicado, mas existe o CSS.
Uma tag (x) HTML como esta:
<textarea id="myTextarea" rows="10" cols="15"></textarea>
E no final da <head>
seção, um JavaScript como este:
window.onload=function(){
document.getElementById("myTextarea").wrap='off';
}
O JavaScript é para tornar o validador W3C passando XHTML 1.1 Strict, já que o atributo wrap não é oficial e, portanto, não pode ser uma tag HTML (x) diretamente, mas a maioria dos navegadores lida com isso, portanto, depois de carregar a página, ele define esse atributo.
Espero que isso possa ser testado em mais navegadores e versões e ajudar alguém a melhorá-lo e torná-lo totalmente cross-browser para todas as versões.
Essa pergunta parece ser a mais popular para desativar o textarea
wrap. No entanto, em abril de 2017, acho que o IE 11 (11.0.9600) não desativará a quebra de linha com nenhuma das soluções acima.
A única solução que funciona para o IE 11 é wrap="off"
. wrap="soft"
e / ou os vários atributos CSS, como white-space: pre
alter, onde o IE 11 escolhe quebrar, mas ele ainda está em algum lugar. Observe que eu testei isso com ou sem o Modo de Exibição de Compatibilidade . O IE 11 é bastante compatível com HTML 5, mas não neste caso.
Assim, para obter linhas que retêm seus espaços em branco e saem do lado direito, estou usando:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
Felizmente, isso também parece funcionar no Chrome e Firefox. Não estou defendendo o uso do pré-HTML 5 wrap="off"
, apenas dizendo que parece ser necessário para o IE 11.
Se você pode usar JavaScript, talvez seja a opção mais portátil hoje em dia (Firefox 31, Chrome 36 testado):
contenteditable="true"
http://jsfiddle.net/cirosantilli/eaxgesoq/
<style>
div#editor {
white-space: pre;
word-wrap: normal;
overflow-x: scroll;
}
<style>
<div contenteditable="true"></div>
Parece não haver uma solução CSS portátil padrão:
wrap
atributo não é padrão
white-space: pre;
não funciona no Firefox 31 para textarea
. Fiddle , solicitação de recurso aberto .
Além disso, se você pode usar Javascript, também pode usar o editor do ACE:
http://jsfiddle.net/cirosantilli/bL9vr8o8/
<script src="http://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js"></script>
<div id="editor">content</div>
<script>
var editor = ace.edit('editor')
editor.renderer.setShowGutter(false)
</script>
Provavelmente funciona com o ACE porque ele não usa um textarea
dos quais é subespecificado / implementado incoerentemente, mas não tem certeza se é usado contenteditable
.