CSSのwidth / heightまたはHTMLのcols / rows属性を使用してtextareaのサイズを変更する必要がありますか?


307

を含む新しいフォームを開発するたびにtextarea、そのディメンションを指定する必要があるときに次のジレンマが発生します。

使用CSSや使用textareaの属性をcolsしてrows

各方法の長所と短所は何ですか?

これらの属性を使用する意味は何ですか?

それは通常どのように行われますか?

回答:


268

両方の使用をお勧めします。行と列は必須であり、クライアントがCSSをサポートしていない場合に役立ちます。しかし、デザイナーとして私はそれらを上書きして、希望するサイズに正確に合わせています。

これを行うための推奨される方法は、外部スタイルシートを使用することです。

textarea {
  width: 300px;
  height: 150px;
}
<textarea> </textarea>


4
これは問題ありませんが、サイズを設定している任意のスペースが無駄になり、実際に表示されるだけであることを理解する必要があります。
爆発の丸薬

4
@tandu:「無駄にするつもりで本当に見せるためだけのもの」とはどういう意味ですか?
BoltClock

2
rows / colsは、ユーザーの文字サイズに基づいています。したがって、CSSで定義された幅/高さがtextarea内の文字のピクセルで分割できない場合は、垂直方向と水平方向に余計な余白が残ります。おそらく誰も気づかないでしょうが、ただ言うだけです。
爆発の丸薬

21
ピクセルの代わりに「em」を測定値として使用できます。1emは、任意のフォントとサイズの「M」の幅です。ただし、colsは、モノスペースフォントで使用する場合にのみ関連します。これは、ほとんどのデザインでは当てはまりません。高さを完璧に合わせるにline-heightは、textareaの高さにの倍数を使用します。
kogakure

5
@LeoGalleguillos「クライアントがCSSをサポートしていない場合に必要かつ便利です」。誰も検証について何も言わなかった。
Janus Bahsジャケット2016

96

textarea { height: auto; }
<textarea rows="10"></textarea>

これにより、ブラウザーがトリガーされ、textareaの高さが行数とその周囲のパディングの量に正確に設定されます。CSSの高さを正確なピクセル数に設定すると、任意の空白が残ります。


4
生憎、「テキストエリアの高さは、Firefoxの行と一致していない」 -それは「行+ 1」だstackoverflow.com/q/7695945/1266880
apurkrt

2
'13以降に変更があったかどうか、または私の特定の状況について非常に明白でない何かがあるかどうかはわかりheight: auto;ませんが、CSSの設定がテキスト領域にまったく影響を与えていないようです。
clozach

10

w3cによると、colsとrowsはどちらもtextareasの必須属性です。行と列は、ピクセルやその他の潜在的に任意の値ではなく、textareaに収まる文字の数です。行/列に移動します。


8
w3c学校では、行と列の属性を使用して設定できると述べていますが、高さと幅の設定の方が優れています。w3c.orgのtextareaの必須属性であるrowsとcolsについての言及はありません。w3schools.com/tags/tag_textarea.asp w3.org/wiki/HTML/Elements/textarea
Michael Stramel 14

17
@MichaelStramel私の答えは4歳です:)-ところで、それ w3c学校ではありません。彼らは提携していません。HTML5に必須属性の概念があるかどうかはわかりませんが、間違っている可能性があります。幅/高さの設定が行/列よりも優れている理由はまだわかりません
Explosion Pills

3
コメントを書いた後、この投稿を読んでいる人には関係があると感じました。また、レスポンシブデザインでは、行と列がJavaScriptで設定されていない限り、行と列が問題を引き起こす可能性があります。そのIMOは、CSSを介してそれを設定することをはるかに良い方法にします。
Michael Stramel 2014

6

答えは「はい」です。つまり、両方を使用する必要があります。行と列がない場合(明示的に使用しなくてもデフォルト値があります)、CSSがユーザースタイルシートによって無効化またはオーバーライドされている場合、textareaは非常に小さくなります。常にアクセシビリティの問題に留意してください。そうは言っても、スタイルシートがtextareaの外観を制御することが許可されている場合、通常は全体的に見栄えがよく、ページ全体のデザインにうまく適合し、ユーザー入力に追いつくためにサイズ変更できるものになります(もちろん、良い味の範囲内です)。


6

テキスト領域の場合、CSSの下でサイズを修正するために使用できます

    <textarea  class="form-control" style=" min-width:500px; max-width:100%;min-height:50px;height:100%;width:100%;" ></textarea>

angularjsとangular7でテスト済み


1
これはAngularとどのような関係がありますか?そして、これは2010 /の既存の回答と比較してどのように追加されますか
LazarLjubenović

5
 <textarea style="width:300px; height:150px;" ></textarea>

19
@ user470962 Ad hominem。構文エラーを '<textarea style = "width:300px; height:150px;">'に修正すると、コードは正常です。誰かを侮辱する必要はありません。ご覧のとおり、最も人気のある答えは彼と同じです。+1
TAAPSogeking 2013年

1
@TAAPSogeking公平に言えば、これは4年後の同じ答えです。-1
ランバティーノ

4

textareaのサイズは、colsおよびrows属性で指定できます。CSSの高さと幅のプロパティを通じて。cols属性は、すべての主要なブラウザーでサポートされています。主な違いの1つ<TEXTAREA ...>は、コンテナタグです。開始タグ()があります。


2

通常は指定しませんがheightwidth: ...and rowsとを指定しますcols

通常、私の例では、唯一widthrows他のelemsとの関係で見て素敵にテキストエリアのために、必要とされています。(cols他の回答で説明されているように、誰かがCSSを使用しない場合のフォールバックです。)

((両方rowsを指定するとheight、データを複製するような感じがしますか?))


2

textareaの主な機能は、拡張可能であるということです。Webページでは、これにより、テキストの長さが設定したスペースを超えた場合(行を使用した場合、またはCSSを使用した場合)、スクロールバーがテキスト領域に表示される可能性があります。これは、特にユーザーがPDFへの「印刷」-条件付きのCSSルールを使用して、印刷されたテキスト領域の快適な大きな最小高さを設定します。

@media print { 
textarea {
min-height: 900px;  
}
}

2

毎回使用しない場合は、line-height: '..';を使用してください。プロパティそのtextareaの高さとtextareaの幅のwidthプロパティを制御します。

または、次のcssでfont-sizeを使用できます。

#sbr {
  font-size: 16px;
  line-height:1.4;
  width:100%;
}

2

HTMLの行と列は応答しません!

そのため、CSSでサイズを定義します。ヒントとして:モバイル向けに小さなサイズを定義する場合は、textarea:focus {};

ここに余分なスペースを追加します。これは、ユーザーが実際に何かを書きたいときにのみ展開します。


-11

CSS


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


HTML


<textarea rows="4" cols="50">HELLO</textarea>

あなたはCSSで非常に簡単に行うことができます
ASHU

両方の方法でcssで実行するか、次のように手動でフィードすることができます<textarea rows = "4" cols = "50"> HELLO </
textarea

これらのプロパティをすべての要素に適用するのはなぜですか?
blackmambo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.