mi área de texto simple no muestra una barra horizontal cuando el texto se desborda. Envuelve el texto para una nueva línea. Entonces, ¿cómo elimino wordwrap y visualizo la barra horizontal cuando el texto se desborda?
mi área de texto simple no muestra una barra horizontal cuando el texto se desborda. Envuelve el texto para una nueva línea. Entonces, ¿cómo elimino wordwrap y visualizo la barra horizontal cuando el texto se desborda?
Respuestas:
Las áreas de texto no deberían ajustarse de manera predeterminada, pero puede configurar wrap = "soft" para deshabilitar explícitamente el ajuste:
<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
EDITAR: El atributo "wrap" no es oficialmente compatible. Lo obtuve de la página alemana SELFHTML (una fuente en inglés está aquí ) que dice que IE 4.0 y Netscape 2.0 lo admiten. También lo probé en FF 3.0.7 donde funciona como se supone. Las cosas han cambiado aquí, SELFHTML ahora es un wiki y el enlace fuente en inglés está muerto.
EDIT2: si desea asegurarse de que todos los navegadores lo admitan, puede usar CSS para cambiar el comportamiento de ajuste:
Usando hojas de estilo en cascada (CSS), puede lograr el mismo efecto con
white-space: nowrap; overflow: auto;
. Por lo tanto, el atributo de ajuste puede considerarse obsoleto.
Desde aquí (parece ser una excelente página con información sobre textarea).
EDIT3: no estoy seguro de cuándo cambió (según los comentarios, debe haber sido alrededor de 2014), pero wrap
ahora es un atributo oficial de HTML5, vea w3schools . Cambió la respuesta para que coincida con esto.
white-space: pre;
(o pre-line
/ pre-wrap
) tuvo el mismo efecto que wrap="off"
para mí (mientras white-space: nowrap
que no respetó el padding
)
wrap="off"
¡ya no es válido, sin embargo, es un requisito tanto para IE como para Edge!
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
también funciona si no te importa el espacio en blanco, pero por supuesto no lo quieres si estás trabajando con código (o párrafos sangrados o cualquier contenido donde pueda haber múltiples espacios deliberadamente) ... así que prefiero pre
.
overflow-wrap: normal
(estaba word-wrap
en navegadores antiguos) es necesario en caso de que algún padre haya cambiado esa configuración; puede causar envoltura incluso si pre
está configurado.
también - al contrario de la respuesta aceptada actualmente - las áreas de texto no suelen envolver por defecto. pre-wrap
parece ser el predeterminado en mi navegador.
overflow-x: scroll
con overflow: auto
. Las barras de desplazamiento reducen el espacio de escritura disponible en el área de texto. Además, IE11 renderizó una barra de desplazamiento vertical innecesariamente a su manera, pero la overflow: auto
arregló.
La siguiente solución basada en CSS funciona para mí:
<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>
Encontré una manera de hacer un área de texto con todo esto funcionando al mismo tiempo:
Funciona bien en:
Permítanme explicar cómo llego a eso: estaba usando la herramienta integrada del inspector de Chrome y vi valores en los estilos CSS, así que pruebo estos valores, en lugar de los normales ... prueba y errores hasta que lo reduje al mínimo y aquí está es para quien lo quiera.
En la sección CSS utilicé esto para Chrome, Firefox, Opera y Safari:
textarea {
white-space:nowrap;
overflow:scroll;
}
En la sección CSS utilicé solo esto para IE:
textarea {
overflow:scroll;
}
Fue un poco complicado, pero está el CSS.
Una etiqueta (x) HTML como esta:
<textarea id="myTextarea" rows="10" cols="15"></textarea>
Y al final de la <head>
sección, un JavaScript como este:
window.onload=function(){
document.getElementById("myTextarea").wrap='off';
}
El JavaScript es para hacer que el validador W3C pase XHTML 1.1 Strict, ya que el atributo wrap no es oficial y, por lo tanto, no puede ser una etiqueta (x) HTML directamente, pero la mayoría de los navegadores lo manejan, por lo que después de cargar la página establece ese atributo.
Espero que esto se pueda probar en más navegadores y versiones y que ayude a alguien a mejorarlo y lo haga completamente cruzado para todas las versiones.
Esta pregunta parece ser la más popular para deshabilitar textarea
wrap. Sin embargo, a partir de abril de 2017, encuentro que IE 11 (11.0.9600) no deshabilitará el ajuste de texto con ninguna de las soluciones anteriores.
La única solución que funciona para IE 11 es wrap="off"
. wrap="soft"
y / o los diversos atributos CSS como white-space: pre
alter donde IE 11 elige ajustarse pero aún se ajusta en algún lugar. Tenga en cuenta que he probado esto con o sin Vista de compatibilidad . IE 11 es bastante compatible con HTML 5, pero no en este caso.
Por lo tanto, para lograr líneas que conserven su espacio en blanco y salgan del lado derecho que estoy usando:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
Afortunadamente, esto también parece funcionar en Chrome y Firefox. No estoy defendiendo el uso de pre-HTML 5 wrap="off"
, solo digo que parece ser necesario para IE 11.
Si puede usar JavaScript, la siguiente podría ser la opción más portátil hoy (probado Firefox 31, Chrome 36):
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 que no hay una solución CSS estándar y portátil:
wrap
el atributo no es estándar
white-space: pre;
no funciona para Firefox 31 para textarea
. Violín , solicitud de función abierta .
Además, si puede usar Javascript, también podría usar el editor 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>
Probablemente funciona con ACE porque no utiliza textarea
ninguno de los cuales está poco especificado / implementado de manera incoherente, pero no está seguro de si se utiliza contenteditable
.