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?
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 wrapahora es un atributo oficial de HTML5, vea w3schools . Cambió la respuesta para que coincida con esto.
El atributo "wrap" funciona en Firefox 3.6, pero no es HTML5 válido. Sin embargo, la solución CSS no funciona, como si se ignora "white-space: nowrap".
Clint Pachl
9
white-space: pre;(o pre-line/ pre-wrap) tuvo el mismo efecto que wrap="off"para mí (mientras white-space: nowrapque no respetó el padding)
philfreo
55
@ClintPachl En realidad, wrapes HTML5 válido ... su configuración es ahora "hard"y "soft"( ref )
white-space: nowraptambié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-wrapen navegadores antiguos) es necesario en caso de que algún padre haya cambiado esa configuración; puede causar envoltura incluso si preestá configurado.
también - al contrario de la respuesta aceptada actualmente - las áreas de texto no suelen envolver por defecto. pre-wrapparece ser el predeterminado en mi navegador.
¡Con FF 20, aún necesita wrap = "off" en la etiqueta html textarea! Esta tecnología es una mierda tan inconsistente.
Lawrence Dol
3
+1 por proporcionar una solución CSS y señalar que las
áreas de texto se ajustan
1
Ah, parece que hay una solicitud de función en Firefox desde 2001, pero con algunas recientes (2014) los comentarios de apoyo para el comportamiento Chrome dev por Ehsan Akhgari: bugzilla.mozilla.org/show_bug.cgi?id=82711 . ¡Ve y vota!
En lo personal, creo que es mejor sustituir overflow-x: scrollcon 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: autoarregló.
Sam
19
La siguiente solución basada en CSS funciona para mí:
<html><head><styletype='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:
Con barra de desplazamiento horizontal
Texto multilínea de apoyo
El texto no se ajusta.
Funciona bien en:
Chrome 15.0.874.120
Firefox 7.0.1
Opera 11.52 (1100)
Safari 5.1 (7534.50)
IE 8.0.6001.18702
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:
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.
+1 .wrap = 'off' es la magia que hizo el truco en FF 14.0.1 ... Gracias.
Shanimal
Parece que JavaScript no funciona en Safari 5.0.6 (última versión de PPC), aunque puede usar wrap = "off" en el HTML.
.wrap es lo que lo hizo por mí, usando Chrome. También lo usé junto con el no-wrap en css.
MineAndCraft12
wrap = 'off' hizo que IE se comportara como los otros navegadores.
Rand Scullard
4
Esta pregunta parece ser la más popular para deshabilitar textareawrap. 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: prealter 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:
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.
¡Agradable, me salvó el día! Me estaba rompiendo la cabeza por qué la adición programática de nuevas líneas falló al usar el código de la respuesta aceptada.
Tum
1
Este error de IE también se ha transferido a Edge
Jools
3
Si puede usar JavaScript, la siguiente podría ser la opción más portátil hoy (probado Firefox 31, Chrome 36):
Probablemente funciona con ACE porque no utiliza textareaninguno de los cuales está poco especificado / implementado de manera incoherente, pero no está seguro de si se utiliza contenteditable.
Respuestas:
Las áreas de texto no deberían ajustarse de manera predeterminada, pero puede configurar wrap = "soft" para deshabilitar explícitamente el ajuste:
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:
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.fuente
white-space: pre;
(opre-line
/pre-wrap
) tuvo el mismo efecto quewrap="off"
para mí (mientraswhite-space: nowrap
que no respetó elpadding
)wrap
es HTML5 válido ... su configuración es ahora"hard"
y"soft"
( ref )wrap="off"
¡ya no es válido, sin embargo, es un requisito tanto para IE como para Edge!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 prefieropre
.overflow-wrap: normal
(estabaword-wrap
en navegadores antiguos) es necesario en caso de que algún padre haya cambiado esa configuración; puede causar envoltura incluso sipre
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.fuente
overflow-x: scroll
conoverflow: 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 laoverflow: auto
arregló.La siguiente solución basada en CSS funciona para mí:
fuente
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:
En la sección CSS utilicé solo esto para IE:
Fue un poco complicado, pero está el CSS.
Una etiqueta (x) HTML como esta:
Y al final de la
<head>
sección, un JavaScript como este: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.
fuente
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 comowhite-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:
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.fuente
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/
Parece que no hay una solución CSS estándar y portátil:
wrap
el atributo no es estándarwhite-space: pre;
no funciona para Firefox 31 paratextarea
. 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/
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 utilizacontenteditable
.fuente