¿Cómo desactivo la propiedad redimensionable de un área de texto?
2650
Quiero deshabilitar la propiedad redimensionable de a textarea.
Actualmente, puedo cambiar el tamaño de un textareahaciendo clic en la esquina inferior derecha textareay arrastrando el mouse. ¿Cómo puedo desactivar esto?
@JDIsaaks: además, permitir el cambio de tamaño en ciertas situaciones puede romper el diseño y la capacidad de impresión (un aspecto importante de un proyecto actual de misión crítica).
random_user_name el
10
A veces realmente quieres un área de texto no redimensionable. Por ejemplo, en este caso, cuando estás (condicionalmente) convirtiendo un área de texto en algo que solo parece una etiqueta. Parece realmente extraño tener una etiqueta con un capturador flotante aleatorio a un lado.
neminem
2
Por amor a todo lo que es bueno, no hagas esto en un área de texto real o alienarás a tus usuarios avanzados. Romper la funcionalidad del núcleo del navegador debe considerarse una opción nuclear.
superluminario
Respuestas:
3532
La siguiente regla CSS deshabilita el comportamiento de cambio de tamaño de los textareaelementos:
textarea {resize: none;}
Para deshabilitarlo por algunos (pero no por todos) textarea, hay un par de opciones .
Para deshabilitar un específico textareacon el nameatributo establecido en foo(es decir, <textarea name="foo"></textarea>):
textarea[name=foo]{resize: none;}
O, usando un idatributo (es decir, <textarea id="foo"></textarea>):
#foo {resize: none;}
La página W3C enumera los valores posibles para cambiar el tamaño de las restricciones: ninguno, ambos, horizontal, vertical y heredar:
textarea {resize: vertical;/* user can resize vertically, but width is fixed */}
Revise una página de compatibilidad decente para ver qué navegadores admiten actualmente esta función. Como Jon Hulka ha comentado, las dimensiones pueden restringirse aún más en CSS utilizando max-width, max-height, min-width y min-height.
Súper importante saber:
Esta propiedad no hace nada a menos que la propiedad de desbordamiento sea diferente a la visible, que es el valor predeterminado para la mayoría de los elementos. En general, para usar esto, tendrá que configurar algo como desbordamiento: desplazamiento;
¿Existe una solución para Firefox, Opera y / o IE?
Šime Vidas
66
@ Šime IE y FF3 (y versiones anteriores) no agregan soporte para cambiar el tamaño, por lo que no se necesita una solución para ellos. Para FF4, esta solución debería funcionar.
Donut
24
según davidwalsh.name/textarea-resize - use resize : vertical o resize: horizontal para restringir el cambio de tamaño a una dimensión. O utilice cualquiera de max-width, max-height, min-width y min-height.
Jon Hulka
3
¿Soy el único que encuentra extraño configurar esto usando CSS y no atributos? ¿Por qué no puedo establecer propiedades deshabilitadas o marcadas u otras usando CSS ...
Buksy
66
@Buksy Porque "deshabilitado" es un estado, no una propiedad visual. Por lo tanto, es lógico que no se decida por un lenguaje de estilo .
CSS 3 tiene una nueva propiedad para los elementos de la interfaz de usuario que le permitirá hacer esto. La propiedad es la propiedad de cambio de tamaño . Por lo tanto, agregaría lo siguiente a su hoja de estilo para deshabilitar el cambio de tamaño de todos los elementos del área de texto:
textarea { resize: none;}
Esta es una propiedad CSS 3; use una tabla de compatibilidad para ver la compatibilidad del navegador.
Personalmente, me resultaría muy molesto tener el cambio de tamaño desactivado en elementos de área de texto. Esta es una de esas situaciones en las que el diseñador está tratando de "romper" al cliente del usuario. Si su diseño no puede acomodar un área de texto más grande, es posible que desee reconsiderar cómo funciona su diseño. Cualquier usuario puede agregar textarea { resize: both !important; }a su hoja de estilo de usuario para anular su preferencia.
Pero ese sería el usuario que rompe intencionalmente su diseño, en lugar de un usuario que solo necesita cambiar el tamaño de su / ella texareay termina haciendo que algo no funcione
<textareaclass="resizeable"rows="5"cols="20"name="resizeable"title="This is Resizable.">
This is Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea><textareaclass="noResizeable"rows="5"title="This will not Resizable. "cols="20"name="resizeable">
This will not Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea><textareaclass="resizeable_V"title="This is Vertically Resizable."rows="5"cols="20"name="resizeable">
This is Vertically Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea><textareaclass="resizeable_H"title="This is Horizontally Resizable."rows="5"cols="20"name="resizeable">
This is Horizontally Resizable. Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book.
</textarea>
Deberías usar más jquery . No lo estás usando lo suficiente. :)
Filip Savic
1
Es un meme , por ejemplo, "Deberías dejarlo totalmente y probar jQuery". .
Peter Mortensen
0
Para deshabilitar el cambio de tamaño para todos los textareas:
textarea {
resize: none;}
Para deshabilitar el cambio de tamaño para un específico textarea, agregue un atributo name, o an idy configúrelo en algo. En este caso, se llamanoresize
HTML
<textareaname='noresize'id='noresize'></textarea>
CSS
/* Using the attribute name */
textarea[name=noresize]{
resize: none;}/* Or using the id */#noresize {
resize: none;}
No abuses del !importantatributo. No tiene sentido corregir el ancho y la altura si el atributo CSS resize: nonepuede eliminar la función de cambio de tamaño
Raptor
1
¿No es !importantmalo?
Peter Mortensen
En Chrome actual, esto detiene el cambio de tamaño horizontal, pero aún puedo cambiar el tamaño del área de texto verticalmente.
Respuestas:
La siguiente regla CSS deshabilita el comportamiento de cambio de tamaño de los
textarea
elementos:Para deshabilitarlo por algunos (pero no por todos)
textarea
, hay un par de opciones .Para deshabilitar un específico
textarea
con elname
atributo establecido enfoo
(es decir,<textarea name="foo"></textarea>
):O, usando un
id
atributo (es decir,<textarea id="foo"></textarea>
):La página W3C enumera los valores posibles para cambiar el tamaño de las restricciones: ninguno, ambos, horizontal, vertical y heredar:
Revise una página de compatibilidad decente para ver qué navegadores admiten actualmente esta función. Como Jon Hulka ha comentado, las dimensiones pueden restringirse aún más en CSS utilizando max-width, max-height, min-width y min-height.
fuente
En CSS ...
fuente
Encontré dos cosas:
primero
Este es un CSS 3, que aún no se ha lanzado , compatible con Firefox 4 (y posterior), Chrome y Safari .
Otra característica del formato es
overflow: auto
deshacerse de la barra de desplazamiento derecha, teniendo en cuenta el atributo dir .Código y diferentes navegadores
HTML básico
Algunos navegadores
fuente
CSS 3 tiene una nueva propiedad para los elementos de la interfaz de usuario que le permitirá hacer esto. La propiedad es la propiedad de cambio de tamaño . Por lo tanto, agregaría lo siguiente a su hoja de estilo para deshabilitar el cambio de tamaño de todos los elementos del área de texto:
Esta es una propiedad CSS 3; use una tabla de compatibilidad para ver la compatibilidad del navegador.
Personalmente, me resultaría muy molesto tener el cambio de tamaño desactivado en elementos de área de texto. Esta es una de esas situaciones en las que el diseñador está tratando de "romper" al cliente del usuario. Si su diseño no puede acomodar un área de texto más grande, es posible que desee reconsiderar cómo funciona su diseño. Cualquier usuario puede agregar
textarea { resize: both !important; }
a su hoja de estilo de usuario para anular su preferencia.fuente
texarea
y termina haciendo que algo no funcionefuente
Si necesita un apoyo profundo, puede usar una técnica de la vieja escuela:
fuente
resize:none
con esta solución para evitar que el mango aparezca en la esquina inferior, lo que frustrantemente no funciona.Esto se puede hacer en HTML fácilmente:
Esto funciona para mi. El valor predeterminado es
true
para eldraggable
atributo.fuente
Para deshabilitar la propiedad de cambio de tamaño, use la siguiente propiedad CSS:
Puede aplicar esto como una propiedad de estilo en línea de la siguiente manera:
o entre
<style>...</style>
etiquetas de elementos de esta manera:fuente
Simplemente usa:
resize: none;
en tu CSS.Tampoco se admite el cambio de tamaño en Internet Explorer en este momento.
Aquí hay diferentes propiedades para cambiar el tamaño:
Sin cambio de tamaño:
Cambiar el tamaño en ambos sentidos (vertical y horizontalmente):
Cambiar el tamaño verticalmente:
Cambiar el tamaño horizontalmente:
Además, si tiene
width
yheight
en su CSS o HTML, evitará que su área de texto cambie de tamaño, con un soporte de navegadores más amplio.fuente
CSS 3 puede resolver este problema. Desafortunadamente, actualmente solo es compatible con el 60% de los navegadores usados .
Para Internet Explorer e iOS, no puede desactivar el cambio de tamaño, pero puede limitar la
textarea
dimensión configurando suwidth
yheight
.Ver demo
fuente
Simplemente puede deshabilitar la propiedad textarea de esta manera:
Para deshabilitar el cambio de tamaño vertical u horizontal , use
o
fuente
He creado una pequeña demostración para mostrar cómo funcionan las propiedades de cambio de tamaño. Espero que te ayude a ti y a los demás también.
fuente
Con
@style
, puede darle un tamaño personalizado y desactivar la función de cambio de tamaño(resize: none;)
.fuente
Puedes probar con jQuery también
fuente
Para deshabilitar el cambio de tamaño para todos los
textarea
s:Para deshabilitar el cambio de tamaño para un específico
textarea
, agregue un atributoname
, o anid
y configúrelo en algo. En este caso, se llamanoresize
HTML
CSS
fuente
Agregar lo
!important
hace funcionar:outline
es solo para evitar el contorno azul en ciertos navegadores.fuente
!important
atributo. No tiene sentido corregir el ancho y la altura si el atributo CSSresize: none
puede eliminar la función de cambio de tamaño!important
malo?