子要素が親要素の範囲内でいっぱいに広がるようにする
いきなり具体例を出すと、<div>
要素の中に<textarea>
要素などを入れて<textarea>
要素を<div>
要素の範囲内でいっぱいに広がるようにしたい場合、単にwidth: 100%;
を指定してもうまく表示されない。<textarea>
が<div>
の外へ若干はみ出てしまう。
このような場合は子要素、上のケースだと<textarea>
に以下のようなCSSを適用するとうまく表示される。
textarea.stretch { box-sizing: border-box; width: 100%; }
上記のbox-sizing: border-box;
は、MDNの解説によると以下の通り。
border-box は、要素に指定した width および height の中で境界線およびパディングを取るようにブラウザーに指示します。要素の width を100ピクセルに設定した場合、100ピクセルの中に追加した境界線やパディングが含まれ、コンテンツ領域はそれらの幅を吸収するために縮小します。これで普通は、要素に対するサイズ設定をもっと簡単になります。
width
にborder
及びpadding
が含まれるようになり、人間からするとより直感的にwidth
が指定できるようになる。