¿Debo dimensionar un área de texto con atributos CSS width / height o HTML cols / rows?


Cada vez que desarrollo una nueva forma que incluya un textarea tengo el siguiente dilema cuando necesito especificar sus dimensiones:

Use CSS o use los atributos textarea cols y rows?

¿Cuáles son los pros y los contras de cada método?

¿Cuál es la semántica de usar estos atributos?

¿Cómo se suele hacer?

Author: alex, 2010-10-09

10 answers

Recomiendo usar ambos. Las filas y cols son necesarias y útiles si el cliente no soporta CSS. Pero como diseñador los sobreescribo para obtener exactamente el tamaño que deseo.

La forma recomendada de hacerlo es a través de una hoja de estilos externa, por ejemplo,

textarea {
  width: 300px;
  height: 150px;
}
<textarea> </textarea>
 219
Author: kogakure,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-06 10:24:07

En HTML conjunto

<textarea rows="10"></textarea>

En CSS conjunto

textarea { height: auto; }

Esto activará el navegador para establecer la altura del área de texto EXACTAMENTE a la cantidad de filas más los rellenos alrededor de ella. Establecer la altura de CSS a una cantidad exacta de píxeles deja espacios en blanco arbitrarios.

 74
Author: Jan Werkhoven,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-14 06:33:11

De acuerdo con el w3c, cols y rows son atributos requeridos para textareas. Filas y Cols son el número de caracteres que van a caber en el área de texto en lugar de píxeles o algún otro valor potencialmente arbitrario. Ir con las filas / cols.

 9
Author: Explosion Pills,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-13 13:51:22

La respuesta es "sí". Es decir, deberías usar ambos. Sin filas y cols (y hay valores predeterminados incluso si no los usa explícitamente) el área de texto es inutilizablemente pequeña si CSS está deshabilitado o anulado por una hoja de estilos de usuario. Siempre tenga en cuenta las preocupaciones de accesibilidad. Dicho esto, si se le permite a su hoja de estilo controlar la apariencia del área de texto, generalmente terminará con algo que se ve mucho mejor, encaja bien en el diseño general de la página, y eso puede cambiar de tamaño para mantenerse al día con la entrada del usuario (dentro de los límites del buen gusto, por supuesto).

 5
Author: Stan Rogers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-09 08:27:02

El tamaño de un área de texto puede ser especificado por los atributos cols y rows, o incluso mejor; a través de las propiedades height y width de CSS. El atributo cols es compatible con todos los navegadores principales. Una diferencia principal es que <TEXTAREA ...> es una etiqueta contenedor: tiene una etiqueta de inicio ().

 3
Author: AsifQadri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-20 11:02:11
 <textarea style="width:300px; height:150px;" ></textarea>
 2
Author: user470962,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-04 20:27:33

Normalmente no especifico height, pero sí especifico width: ... y rows y cols.

Generalmente, en mis casos, solo se necesitan width y rows, para que el área de texto se vea bien en relación con otros elementos. (Y cols es una alternativa si alguien no usa CSS, como se explica en las otras respuestas.)

((Especificar rows y height se siente un poco como duplicar datos, creo?))

 0
Author: KajMagnus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-06 14:29:05

Una característica importante de las áreas de texto es que son expandibles. En una página web esto puede dar lugar a barras de desplazamiento que aparecen en el área de texto si la longitud del texto sobrellena el espacio establecido (ya sea que el uso de filas, o que el uso de CSS. Eso puede ser un problema cuando un usuario decide imprimir, particularmente con 'imprimir' a PDF - así que establezca una altura mínima cómodamente grande para áreas de texto impresas con una regla CSS condicional:

@media print { 
textarea {
min-height: 900px;  
}
}
 0
Author: Geoff Kendall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-16 10:10:32

Si no usa cada vez use line-height:'..'; propiedad its controla la altura de textarea y la propiedad width para width of textarea.

O puede hacer uso de font-size siguiendo css:

#sbr {
  font-size: 16px;
  line-height:1.4;
  width:100%;
}
 0
Author: Nurealam Sabbir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-24 18:49:29

CSS


input
{
    width: 300px;
    height: 40px;
} 


HTML


<textarea rows="4" cols="50">HELLO</textarea>
 -10
Author: ASHU,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-17 13:39:05