Devo dimensionar um textarea com atributos CSS width / height ou HTML cols / rows?

cada vez que desenvolvi uma nova forma que inclui um {[[0]} tenho o seguinte dilema quando preciso especificar as suas dimensões:

usar CSS ou usar os atributos de textarea cols e rows?

Quais são os prós e os contras de cada método?

Quais são as semânticas de usar estes atributos?

Como é que se faz normalmente?

Author: alex, 2010-10-09

10 answers

Eu recomendo usar ambos. Linhas e cols são necessários e úteis se o cliente não suportar CSS. Mas como designer, eu os substituo para obter exatamente o tamanho Que Eu desejo.

A forma recomendada para o fazer é através de uma folha de estilo externa, por exemplo

textarea {
  width: 300px;
  height: 150px;
}
<textarea> </textarea>
 219
Author: kogakure, 2017-01-06 10:24:07

No conjunto HTML

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

No conjunto CSS

textarea { height: auto; }

Isto irá despoletar o navegador para definir a altura do textarea exactamente para a quantidade de linhas mais as paddings em torno dele. Configurar a altura do CSS para uma quantidade exacta de pixels deixa espaços em branco arbitrários.

 74
Author: Jan Werkhoven, 2014-04-14 06:33:11

De acordo com o w3c, os caracteres cols e as linhas são atributos necessários para os campos de texto. Linhas e Cols são o número de caracteres que vão caber na textarea ao invés de pixels ou algum outro valor potencialmente arbitrário. Vai com as linhas / cols.

 9
Author: Explosion Pills, 2014-08-13 13:51:22
A resposta é "sim". Isto é, devias usar ambos. Sem linhas e cols (e existem valores predefinidos, mesmo que não os use explicitamente), o textarea é inutilmente pequeno se o CSS estiver desactivado ou substituído por uma 'stylesheet' do utilizador. Tenha sempre em mente as preocupações de acessibilidade. Dito isto, se a sua folha de estilo é permitido para controlar a aparência do textarea, você Geralmente vai acabar com algo que parece muito melhor, se encaixa no design geral da página Bem, e que podem redimensionar para acompanhar a entrada do Utilizador (dentro dos limites do bom gosto, é claro).
 5
Author: Stan Rogers, 2010-10-09 08:27:02

O tamanho de uma área de texto pode ser especificado pelos atributos cols e linhas, ou ainda melhor; através das propriedades de altura e largura do CSS. O atributo cols é suportado em todos os navegadores principais. Uma diferença principal é que <TEXTAREA ...> é uma marca de contêineres: ela tem uma marca inicial ().

 3
Author: AsifQadri, 2011-02-20 11:02:11
 <textarea style="width:300px; height:150px;" ></textarea>
 2
Author: user470962, 2014-01-04 20:27:33

Normalmente não especifique {[[0]}, mas especifique width: ... e rows e cols.

Normalmente, nos meus casos, apenas width e rows são necessários, para que a área de texto pareça agradável em relação a outros elemas. (E cols é um recuo se alguém não usa CSS, como explicado nas outras respostas.)

(especificando ambos rows e height parece-se um pouco com a duplicação de dados, acho eu?))

 0
Author: KajMagnus, 2012-03-06 14:29:05

Uma característica importante das áreas de texto é que elas são expansíveis. Em uma página web Isso pode resultar em barras de posicionamento aparecendo na área de texto se o comprimento de texto exceder o espaço que você definir (seja o que usa linhas, ou seja o que usa CSS. Isso pode ser um problema quando um usuário decide imprimir, particularmente com 'impressão' para PDF - então defina uma altura mínima confortavelmente grande para áreas de texto impressas com uma regra CSS condicional:

@media print { 
textarea {
min-height: 900px;  
}
}
 0
Author: Geoff Kendall, 2016-08-16 10:10:32

Se não usar sempre a altura da linha:"..'; property its control the height of textarea and width property for width of textarea.

Ou pode usar o tamanho da fonte se seguir ao css:

#sbr {
  font-size: 16px;
  line-height:1.4;
  width:100%;
}
 0
Author: Nurealam Sabbir, 2017-07-24 18:49:29

CSS


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


HTML


<textarea rows="4" cols="50">HELLO</textarea>
 -10
Author: ASHU, 2014-03-17 13:39:05