
CSS3で追加された
box-sizingというプロパティを使うと、煩わしい横幅の計算がグッと楽になります。
説明するより実際に挙動を見たほうが分かりやすいと思うので、デモを用意しました。
Demo
Sample_1
Sample_2
|
<div class="box_sample"> Sample_1 </div> <div class="box_sample sizing"> Sample_2 </div> |
|
.box_sample{ width: 200px; height: 100px; margin: 10px auto; padding: 10px; background: #ddd; border: 10px solid #444; } .sizing{ box-sizing: border-box; } |
Sample_1の幅が240pxなのに対し、Sample_2の幅は200pxとなっています。
同じクラスを使い回しているのに、box-sizingの値をborder-boxに変えただけでボックスサイズ変わりましたね!
通常、要素の幅は
widthにpaddingとborderの幅を足したサイズになりますが、box-sizingにborder-box;を指定すると、widthに指定した幅がそのまま要素の幅になります。
つまり、
paddingとborderの幅を考えてwidthの値を決める必要がありません。この計算が地味にめんどくさかったので、これは楽チン!
ブラウザの対応状況
CSS3といえば気になるのがブラウザの対応状況ですが、box-sizingに関しては特に心配する必要はありません。
あのIE8ですらベンダープレフィックス無しで動作します。
IE7以下だと動かないみたいですが、今時そんな古いブラウザまで考慮するのも馬鹿馬鹿しいので…
とにかく、使いたい人はどんどん使っていきましょう!
追記
どうやらAndroidの場合はベンダープレフィックスを付けないと動かないみたいです。
|
-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; |
スマートフォン用のCSSでは、こんな感じでベンダープレフィックス付きの記述も併記したほうが良さそうです。
関連するかもしれない記事