回答:
width
そしてheight
、CSSルートを行くときに使用されます。
<!DOCTYPE html>
<html>
<head>
<title>Setting Width and Height on Textareas</title>
<style>
.comments { width: 300px; height: 75px }
</style>
</head>
<body>
<textarea class="comments"></textarea>
</body>
</html>
em
高さの指定に使用することに同意しますが、幅の指定に使用できるかどうか疑問です。それは可能性がある(幅考え出す後:文字の高さの比率を、それに応じて幅の値を変更する)モノスペースフォントで動作し、それはそれです。モノスペースを除いて、文字の幅は固定されていないので、幅を指定するときに属性em
やcols
属性が役に立たないと思います。
<textarea rows="4" cols="50"></textarea>
これは次と同等です。
textarea {
height: 4em;
width: 50em;
}
ここで、1emは現在のフォントサイズに相当するため、テキスト領域の幅は50文字になります。 こちらをご覧ください。
padding
ありline-height
ます。たとえば、上部と下部に半emのパディングと1.2emの行の高さがある場合、4行の高さは1 + 4 * 1.2 = 5.8emになります。
height: calc(3em + 8px);
。
rows
、属性が(多少)信頼性があり、私はに依存しないだろうcols
、私はテキストエリアに等幅フォントを使用していない限り、属性。@AlexanderScholzの更新されたフィドルを参照してください。
私の知る限りではできません。
その上、それはとにかくCSSが何のためにあるのかではありません。CSSはスタイリング用で、HTMLはマークアップ用です。
line-height
、padding
容器上(に基づいて高さを算出していないbox-sizing
)も考慮にテキストボックスが表示に設定された数を確保するために使用されるフォントの異なるアスペクト比を取りますcssの高さを使用して達成できないテキストの行の。
誰も行かなかったので、行/高さを設定するためにcalc()を使用してデモを投稿したかっただけです。
body {
/* page default */
font-size: 15px;
line-height: 1.5;
}
textarea {
/* demo related */
width: 300px;
margin-bottom: 1em;
display: block;
/* rows related */
font-size: inherit;
line-height: inherit;
padding: 3px;
}
textarea.border-box {
box-sizing: border-box;
}
textarea.rows-5 {
/* height: calc(font-size * line-height * rows); */
height: calc(1em * 1.5 * 5);
}
textarea.border-box.rows-5 {
/* height: calc(font-size * line-height * rows + padding-top + padding-bottom + border-top-width + border-bottom-width); */
height: calc(1em * 1.5 * 5 + 3px + 3px + 1px + 1px);
}
<p>height is 2 rows by default</p>
<textarea>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</textarea>
<p>height is 5 now</p>
<textarea class="rows-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</textarea>
<p>border-box height is 5 now</p>
<textarea class="border-box rows-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</textarea>
パディングに大きな値(たとえば、0.5emより大きい)を使用すると、コンテンツ(-box)領域をオーバーフローするテキストが表示されるようになり、高さが正確にx行ではないと考える可能性があります(あなたが設定したこと)、しかしそれはそうです。何が起こっているのかを理解するには、ボックスモデルとボックスサイズ設定のページをご覧ください。