box-sizingは危険なCSS / レイアウトや位置がどうしても意図した通り設定できない場合は、box-sizingを疑う

CSS

結論

 状態:-  閲覧数:3,491  投稿日:2015-09-05  更新日:2015-09-05
box-sizing設定変更は、サイト全体に対して甚大な影響を及ぼす
・「理解している人が設定変更する場合」は問題ないが、よく分からない人が設定変更すると、泣きを見るかも
※そのサイトの「box-sizing設定が変更されていることを知らない人」、もしくは「box-sizing自体を知らない人(昨日までの私)」が、取り組むとハマる可能性がある

トラブル遭遇例1 / Bootstrap をアップデートしたら、jQueryで取得される値が変更

 閲覧数:964 投稿日:2015-09-05 更新日:2015-09-05

Bootstrap 3.3.4


Bootstrap をアップデートしたら、jQuery offsetメソッドで取得される値が変更
・それまで整数で返ってきていた戻り値が、ある日いきなり小数点で返ってくるようになる

原因を特定できない
・ブラウザの問題?
・jQueryの問題?
※原因を想定すら出来ず、苦しむ


犯人はbox-sizing


調査した結果、判明した事実
・bootstrap.cssに記述されていた 下記box-sizingによる影響を受けていた
* {
 -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
         box-sizing: border-box;
}


具体的には、下記組み合わせの場合において取得値が変更される可能性がある
・box-sizing: border-box;
・SVG viewBox
・border
※いや、普通は分からないでしょう、そんなの


box-sizing: border-box;


トラブル遭遇例2 / perspective使用時に、どうしても天地左右中央に配置できない

 閲覧数:974 投稿日:2015-09-05 更新日:2015-09-05

天地左右中央に配置できない


display: table-cell;指定しているのに位置が微妙にズレる
・もしかして、perspectiveだから?
→ 関係なかった


犯人はbox-sizing


bootstrap.cssに記述されていた 下記box-sizingによる影響を受けていた
* {
 -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
         box-sizing: border-box;
}



対応


初期値で上書き
* {
   box-sizing: content-box;
}

※ライブラリCSSは極力変更しない、という方針に基づき


floating 3D objects using nested transformations (with preserve-3d)


box-sizing をみんな賞賛し過ぎ! そんなに魅力的なプロパティとは思えない。むしろ出来れば使用を避けたい

 閲覧数:879 投稿日:2015-09-05 更新日:2015-09-05

絶賛の嵐


タイトルだけを読めば、導入すれば全てが解決するようにもとれる
box-sizing は魔法のコトバ!もうpaddingやborderを含めた幅の計算はヤメヤメ
CSS3 の box-sizing が便利すぎる!! padding や border に依存しない width, height 指定
borderもpaddingの数値も気にしなくていい!!cssのbox-sizing


ネット情報に反論


魔法のプロパティではない
・「ボックスサイズの算出方法」を変更する危険(影響度が大き)なCSSプロパティ
・ある一面だけ見れば魔法のように便利な側面があるかもしれないが、それはあくまでも全体の一部分でしかない

borderやpaddingの数値を気にする必要はある
・従来とは計算方法を変更するだけ
・borderやpaddingの概念や数値が、レイアウトの世界から実際に消えてなくなるわけではない
・つまり、裏では、それに伴う処理が発生している
・単純な例では自動で対応する(?)ようだが、複雑な場合(SVG viewBox × border など)は手動で対応する必要が生じてくる

トラブル遭遇例3 / 吹き出し位置がズレる

 閲覧数:956 投稿日:2016-07-11 更新日:2016-07-11

Bootstrap読込


吹き出し位置がズレる

原因
▼bootstrap.min.css
*, ::after, ::before {
   -webkit-box-sizing: inherit;
   box-sizing: inherit;
}


対応
・既存CSSを修正することなく、後から読込むことで上書き
/*既存CSS競合対策*/
*, ::after, ::before{
   box-sizing: content-box;
}



aタグのクリック範囲を、囲っているタグ範囲まで拡大する

CSS Transforms Module Level 1



類似度ページランキング
順位 ページタイトル抜粋
1 box-sizingは危険なCSS / レイアウトや位置がどうしても意図した通り設定できない場合は、box-sizingを疑う 73
2 レイアウトがどうしても崩れるときは、div marginへマイナス値が設定されていないか、確かめる 39
3 resizeが効かない場合は、min-heightを設定してみる 38
4 作成した素材がどうしても見つからないときは、「png形式」を疑ってみる 33
5 レスポンシブスマホサイトで、意図せず横スクロールが発生する場合は、URLを折り返し表示するよう設定 30
6 「レイアウト崩れ」がどうしても解決しない → Chrome「デベロッパーツール」で怪しいと思った要素を、正常表示されるまで削除し続けていく 30
7 「z-index」が効かない時は「-1」を指定してみる 29
8 Illustrator で文字を見た目通りSVG出力するためには、「アウトライン作成」処理が必要 29
9 Illustrator間で、ベクターデータコピーがどうしても出来ない場合は、Illustrator複数起動を疑う 29
10 CSS3-mediaqueries.jsは、@ importスタイルシートに記述した内容を反映しない 28
11 「:hover」「z-index」を組み合わせて使用すると、正常動作しないことがある 28
12 bootstrap3で意図せず横スクロールバーが表示される場合は、containerクラスの入れ子を疑う 28
13 IE8で、フォームの縦位置がどうしても真ん中にこない場合の、最後の手段(案) 28
14 「Fireworks」後継として「Gravit Designer」を使用していくことを一度は決定したが、2022 年時点で入手可能なソフトウェアは日本語入力未対応  28
15 PhotoshopCS3 で、テキストをアウトライン 27
16 textareaのスクロールバーが横へはみ出す場合は、「box-sizing:border-box;」を指定する 27
17 CSSで直前の要素を取得するセレクタはない。ので、直後の要素を取得してマイナス設定値を指定しました。 27
18 Chromeがおかしくなった。width認識が狭くなりレイアウトが崩れる 26
19 「z-index」が効かない時は? / 「position:relative」を指定してみる / 「z-index:-1」を指定してみる 26
20 テーブル枠線がどうしても消えない時は「border-collapse: collapse;」 26
2026/8/21 20:26 更新
週間人気ページランキング / 8-14 → 8-20
順位 ページタイトル抜粋 アクセス数
1 Design 0 5
2 キャラクター無料作成ジェネレーター / FLASH / オンラインサービス | イラスト参考(デザイン) 4
3 Adobe Camera Raw 4.0 | Photoshop 3
3 PNG画像透明化問題 | 画像 3
3 Chromeで(TikTokなど)特定Webサイトの音を消すには、該当タブを右クリック後、「サイトをミュート」をクリックします。 | Google Chrome(ブラウザ) 3
3 「レイアウト崩れ」がどうしても解決しない → Chrome「デベロッパーツール」で怪しいと思った要素を、正常表示されるまで削除し続けていく | CSSトラブル対応(CSS) 3
4 「Google Chrome」を経由したダウンロード個人ルール。「HTTrack Website Copier」とパッケージ化されていない拡張機能「Save As MHT 20220426」の 2 種類 | Google Chrome(ブラウザ) 2
4 8ビットカラー / インデックスカラー / パレットカラー 2
4 GIMPで「レイヤーとして開く」を選択した画像、の位置情報(x,y)を表示させる方法が分からない | GIMP 系(ソフトウェア) 2
4 鉄道会社毎のカラーコード | カラーコード(色) 2
4 金融機関ブランドカラー / コーポレートカラー | カラーコード(色) 2
4 Chromeブラウザは、ユーザーという単位で情報管理している(Cookieを使用する場面もあるが、必ずしもCookieだけに頼っているわけではない) | Google Chrome(ブラウザ) 2
4 コンソールエラー / ブラウザ間差異 | ブラウザ 2
4 「transform:translate3d();」でスマホ実機画面が一瞬だけチラつく → 「backface-visibility:hidden;」指定すると解消される | CSSトラブル対応(CSS) 2
4 Fireworks で背景画像透明化 | Fireworks CS3(Fireworks) 2
5 このエントリーの結論 / 主な機能と使い方 / 補足 1
5 Material Design 2014 年 | Material Design(色) 1
5 invalid property value css background-color | CSS 1
5 不特定多数投稿 1
5 ボタンクリック出来ない → 「display-inline;」を「display:inline-block;」へ変更 | CSSトラブル対応(CSS) 1
2026/8/21 5:05 更新