経緯
グリッドデザインを使う上で、padding
やborder
の幅がwidth
やheight
に含まれているとそこまで計算した上でmargin
やwidth
を決定しないといけないので、結構面倒くさいです。
そういうときに
box-sizing: border-box;
と指定しておくと、width
とheight
にpadding
やborder
の幅が含まれるようになります。
自分がコーディングするとき、基本的には
*{ box-sizing: border-box; }
とするようにしています。
しかしながら、今回、これに関して問題にぶち当たってしまったので、それのメモです。
問題
例えば、以下の状況のとき。
CSS
#test-area{ box-sizing: border-box; padding: 20px; }
HTML
<div id="test-area"></div>
JS
$('#test-area').width(200);
このとき、こちらとしては、#test-area
の幅は200px
になってほしいですが、実際には240px
になってしまいます。
解決策
ちゃんとjQueryのドキュメントに書いてありました。
.width() | jQuery API Documentation
どうやら、jQueryのwidth
メソッドはbox-sizing
の指定によらず、コンテンツの幅を指定するメソッドのようです。
240px
は[width] + [右のpadding] + [左のpadding] = 200 + 20 + 20 px
というわけですね。
これを避けるためには、$('#test-area').width(200)
ではなく、
$('#test-area').css('width', 200)
とすることで、ちゃんと幅が200px
になってくれます。
まとめ
使い慣れているつもりのjQueryのメソッドやCSSも意外と見落としがあるみたいです。
困ったらドキュメントの確認はやはり鉄則ですね。
コメントを残す