CSS3のbox-sizingはpaddingを含めたwidthを指定できる
widthは幅であるが、paddingとborderを含めないため、厳密にはwidth+padding+borderが実質的な幅になっている。
この仕様が分かりづらく、例えばtable>tdの幅を100pxにしたい場合は、padding:3px;width:94pxなんてしていた。
しかしbox-sizingプロパティを使うとwidthに指定した値が幅になり、paddingとborderの値を引いてくれる。
つまり幅を100pxにしたい場合はwidth:100pxと書けば良くなり、paddingが3pxでも10pxでもwidthは100pxを維持してくれる。
box-sizingの使い方
table td {
    padding:10px;
    width:100px;
    /* borderとpaddingをwidthに含める */
    box-sizing:border-box; /* CSS3, IE8~, Opera8~ */
    -moz-box-sizing: border-box; /* Mozilla系 */
    -webkit-box-sizing: border-box; /* Safari, Chrome系 */
    /* "content-box"にすると従来通りになる */
}
上記の例はtdにwidthとpaddingを設定したものだが、通常であれば幅は100+10+10で120pxになる。
しかしbox-sizingをborder-boxにしているので、幅はwidthに設定した100pxになる。
実験1 : content-boxの場合
| width:100px | width:100px | width:100px | 
実験2 : border-boxの場合
| width:100px | width:100px | width:100px | 
一目瞭然、死ぬほど便利。
対応ブラウザについて
| 対応ブラウザ | 対応バージョン | ベンダープレフィックス | 
|---|---|---|
| Chrome | 1~ | 必要(-webkit-) | 
| safari | 3~ | 必要(-webkit-) | 
| Firefox | 2~ | 必要(-moz-) | 
| opera | 8~ | 不要(-o-) | 
| IE | 8~ | 不要(-ms-) | 
IE7以下を切り捨てればほぼOK。
もちろんスマホはほぼ全てのブラウザが対応。
IE7以下対応案件以外では、強気に下記の指定をデフォルトにして構わない。
* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    -o-box-sizing: border-box;
    -ms-box-sizing: border-box;
    box-sizing: border-box;
}
 
																			 
																			
最近のコメント