トラブルシュート

Bootstrapのグリッドやコンポーネントが崩れるときの対処

Bootstrapで「カラムが揃わない」「モーダルやタブが反応しない」というトラブルは、多くがCSS/JSの読み込み順やHTML構造の崩れに起因します。コンテナとrow、colの入れ子ルールやバージョン間の仕様変更を押さえると、原因の大半は素早く特定できます。

グリッドはcontainer-row-colの入れ子が基本

Bootstrapのグリッドはcontainer(またはcontainer-fluid)の中にrow、そのrowの直下にcolを置く構造が前提です。この入れ子が崩れると、想定の余白や折り返しが効かなくなります。

よくある失敗は、rowを挟まずにcontainerの直下へcolを置く、あるいはcolの中に直接別のcolを入れてしまうケースです。colはrowの直接の子であるべきで、さらに分割したいときはcol内に新しいrowを作ってからcolを並べます。

rowには左右に負のマージンが設定されており、colの内側余白と相殺して整列します。rowを省略するとこの相殺が働かず、端がはみ出したり余白がずれたりします。

CSSとJSの読み込み順を確認する

BootstrapのCSSはhead内で、なるべく自前CSSより前に読み込みます。逆にしてしまうと自分の上書きがBootstrapに打ち消されることがあります。JSはbodyの閉じタグ直前に置くのが定石です。

ドロップダウンやモーダル、トグルなどの動的コンポーネントはJavaScriptに依存します。バージョン5系ではjQueryが不要になり、代わりにPopperを含むバンドルJSが必要なケースがあります。JSが読み込まれていない、または順序が誤っていると、これらが無反応になります。

症状別チェック表

Bootstrapのグリッドやコンポーネントが崩れるは、症状を分けずに直そうとすると原因探しが長引きます。まず「自分だけで起きるのか」「全員で起きるのか」「特定ブラウザだけか」「差し替え後だけか」を切り分けます。

確認順序を固定すると、相対パス、ファイル名、キャッシュ、認証、外部読み込みのどこで止まっているかが見えます。修正後はローカル確認だけで終わらせず、実際の共有URLで再表示して、相手と同じ条件で直ったことを確認します。

  • 自分だけ表示されない: キャッシュ、ログイン状態、ブラウザ拡張、端末幅を確認する
  • 全員で表示されない: ファイル構成、相対パス、大文字小文字、アップロード漏れを見る
  • 一部だけ崩れる: CSS/画像/JSごとに読み込みエラーを分ける
  • 差し替え後だけ古い: URL、キャッシュ、更新対象ファイルの取り違えを確認する

バージョン差による違いに注意

Bootstrapは4系と5系でクラス名や仕様が変わっています。たとえば余白系のクラスで左右を表す接尾辞が変更され、フォーム関連のマークアップも見直されました。古いテンプレートを5系の読み込みで使うと崩れます。

また、data属性の名前も5系ではプレフィックスが付く形に変わっています。コピー元のサンプルと読み込んでいるBootstrapのバージョンが一致しているかを最初に確認してください。

崩れたときの切り分け手順

原因を順に潰していくと特定が早まります。

  1. 読み込んでいるBootstrapのバージョンを確認する
  2. CSSがhead内、JSがbody末尾にあり、自前CSSとの順序が正しいか見る
  3. container-row-colの入れ子が崩れていないかHTMLを点検する
  4. 動的コンポーネントが効かないならコンソールでJSエラーを確認する
  5. サンプルコードのクラス名や属性名がバージョンに合っているか照合する

レビュー共有で崩れを見せ合う

Bootstrapの崩れは画面幅やブラウザによって出方が変わるため、文章だけでは伝わりにくいことがあります。実際の表示を関係者が同じ環境で見られると、原因の合意が早まります。

ギガサイト便にHTMLとCSS/JSをまとめたZIPをドロップすれば、その場で共有URLが発行され、CDNのエッジ配信で各自の端末から素早く確認できます。修正後は同じURLのままファイルを差し替えられるので、崩れ箇所の確認とレビューのやり取りを一つのリンクで完結できます。

よくある質問

カラムが横に並ばず縦になってしまいます。

colをrowで包んでいない、またはcontainerの直下にcolを置いている可能性があります。container内にrow、rowの直接の子としてcolを配置する基本構造を確認してください。

モーダルやドロップダウンが反応しません。

これらはJavaScriptに依存します。BootstrapのJSがbody末尾で読み込まれているか、5系ではPopperを含むバンドルが必要かを確認し、コンソールのエラーも見てください。

サンプル通りに書いたのに崩れます。

サンプルのバージョンと読み込んでいるBootstrapのバージョンが食い違っている恐れがあります。4系と5系ではクラス名やdata属性が変わっているため、両者を一致させてください。

自前のCSSがBootstrapに打ち消されます。

BootstrapのCSSを自前CSSより前に読み込むと、後から書いた自分のスタイルが優先されやすくなります。読み込み順を見直し、必要なら詳細度を上げてください。

原因が分からないときはどこから確認すべきですか?

まず自分だけの問題か全員の問題かを分けます。次にシークレットウィンドウ、別ブラウザ、スマホで確認し、ファイル構成・相対パス・キャッシュ・認証設定を順に見ます。

関連記事

トラブルシュート

scriptのdefer/asyncで読み込み順が崩れて動かないときの対処

ライブラリより先に自分のコードが走ってエラーになり、deferとasyncのどちらを付けるべきか迷っている方向け。それぞれの実行タイミングの違いを図解で整理し、依存関係を壊さないスクリプトの並べ方を判断できるようになる記事です。

5分で読める
トラブルシュート

公開後にJavaScriptが動かないときの原因と直し方

ローカルでは動いていたボタンやアニメーションが公開後に反応しなくなった方向け。JavaScriptが止まる主な原因をファイルパスや読み込み順の観点で切り分け、自分で直せるかどうかを判断できます。

5分で読める
トラブルシュート

公開後に動画が再生されないときの対処

デモページや資料に埋め込んだ動画が公開後に再生されなくなった方向け。動画ファイルの添付漏れ・パスのズレ・ブラウザの自動再生制限を症状ごとに切り分け、自分でできる確認と対処を把握できます。

4分で読める
トラブルシュート

公開したHTMLのフォームが送信できないときの対処

問い合わせフォームやアンケートの送信ボタンが押せない・エラーになる方向け。静的ファイル公開ではフォームの動作に制約がある理由を理解し、外部サービス連携などの現実的な解決策を選べるようになります。

5分で読める
トラブルシュート

iframeが表示されないときの原因と対処

地図や外部コンテンツをiframeで埋め込んだのに公開後に枠が空白になった方向け。表示許可・HTTPSとHTTPの混在・相対パスのズレを症状ごとに切り分け、適切な対処を選べるようになります。

4分で読める
「トラブルシュート」の記事をもっと見る →