Bootstrap5実装環境でmt-5を足しても余白が変わらない原因

Bootstrap 5 の実装環境でmt-5を足したのに、「あれ? 余白、変わってない?」と首をかしげたことはありませんか?

講座やレビューの場でも、この違和感は本当によく出てきます。コードは正しそうに見えるし、Bootstrapのクラス指定も間違っていない。それでも、思った場所に余白が出ていないように感じる──ここで手が止まる方がとても多いです。

この手の違和感は、実はBootstrapやブラウザの問題ではないことがあります

実際には、意外と見落とされがちなCSSのmargin仕様と、「とりあえずmt-*を足す」という実装判断が噛み合っていないケースが多いです。

Bootstrapにはmt-*mb-*といった便利な余白クラスが揃っているため、実装中に余白を足しやすい。一方で、CSSの仕様を前提に考えずに追加すると、効いているのに“反映されていないように見える”状態が起きやすくなります。

この記事では、実務でよく見かける失敗パターンを題材に、「なぜそう感じるのか」「どう考えると迷いにくくなるのか」を、順を追って整理していきます。

前提として押さえておきたいCSSのmargin仕様

まず最初に、ここはしっかり押さえておきたいポイントです。

なぜそう考えるのか:縦方向のmarginは足し算されない

CSSの仕様では、縦に並んだ兄弟要素同士では、上と下のmarginは合算されません。見た目としては、大きいほう(同じならその値)が採用されます。

つまり、

  • 前の要素に margin-bottom
  • 次の要素に margin-top

を両方指定しても、「2倍の余白」にはならない、というのがCSSの基本仕様です。

そうしないと何が起きやすいか

この前提を知らないと、
「追加したのに変わらない」「効いていない気がする」という感覚になります。実務でよく聞く声です。

実は仕様なのに、構築上のエラーだと勘違いしてしまうことがある

このポイントは、

mt-*を足しても見た目が変わらないと、「どこか構築上のエラーがあるのでは?」と考えてしまい、本来は不要な修正を重ねてしまうケースがあります。

たとえば、

  • 回り込み(float)が悪さをしているのではと疑って解除してみる
  • positionの指定が原因だと思い、relative / absolute を切り替える
  • 親要素に無理に高さやoverflowを指定して押し下げようとする
  • 「とにかく反映させたい」と思ってmt-*を別の要素に付け替える

こうした対応で、たまたま余白が出ることもあります。ただしそれは、CSSの仕様を理解した上での修正ではなく、結果が合っただけの状態です。

今回のようなケースでは、そもそもmt-*が効いていないわけではなく、すでに同じ意味の余白が別の場所で指定されているだけ、ということがあります。

仕様を知らないまま「反映させること」だけを目的に修正を続けると、あとから

  • なぜこの指定が必要なのか説明できない
  • 別のレイアウトで流用できない
  • 余白を触るのが怖くなる

といった状態に繋がりやすくなります。

だからこそ、見た目が変わらないときほど、構築ミスを疑う前に「これはCSSのmargin仕様として説明がつくか?」を一度確認することが、実務ではとても大切です。

よくある失敗パターン:今回のコードで起きていること

では、講座やレビューで本当によく見る失敗パターンを、そのまま確認してみましょう。

<div class="row mb-5">
  <div class="col">
    <p>ここにレイアウトコンテンツ。</p>
  </div>
  <div class="col">
    <p>ここにレイアウトコンテンツ。</p>
  </div> 
</div>

<div class="mt-5">
  <p>ここに文章。</p>
</div>

一見すると、とても自然です。「rowの下を空けたい」「文章の上も少し空けたい」──その気持ち、よく分かります。

なぜそうなりやすいのか

Bootstrapには便利な余白クラスが揃っているので、前後どちらにも余白を持たせてしまう判断をしやすいのです。

実際に起きていること

  • .rowmb-5
  • 次のブロックに mt-5

どちらも「同じ境界」を空けるための指定で、意味が重複しています。

「mt-5が効いていない」と感じてしまう理由

なぜそう感じるのか:すでに同じ余白が存在している

mb-5mt-5が同じ値の場合、画面に現れる余白は1つ分です。そのため、mt-5を足しても見た目に変化が出ません

受講者・実務者からよく聞く声

「付けたのに変わらない」「指定が効いていない気がする」──ここで不安になるのは、ごく自然です。

ここで起きがちな失敗

この違和感から、mt-4mt-6に変え始めると、設計ではなく数値合わせの調整に入ってしまいます。

なぜ実務で迷いが増えやすいのか

なぜそう考えるのか:余白の責務が分散している

「ブロック間の余白」という1つの意味が、前後2つの要素に分かれています。

そのまま進むと起きやすいこと

  • 後から別の要素が挟まると余白が崩れる
  • どのクラスを消していいか判断できない
  • ページごとに余白のルールがバラつく

WordPress環境では、ブロックやテンプレートが差し替わるため、この問題が特に表に出やすくなります。

判断の整理と実装の落としどころ

mt-5が「効かない」のではなく、CSSの仕様どおりに動いている

今回のケースで起きているのは、Bootstrapの不具合や、最近のブラウザ特有の挙動ではないことがあります。多くの場合、CSSのmargin仕様どおりに描画された結果を、人間側が「効いていない」「反映されていない」と感じているだけのケースでした。

縦方向に並ぶ要素では、上と下のmarginが単純に足し算されるわけではありません。そのため、mb-5mt-5を両方指定しても、見た目としては1つ分の余白に見えることがあります。これはBootstrapのルールではなく、CSSそのものの仕様です。

Bootstrapのmarginユーティリティは、このCSS仕様の上に「使いやすいクラス名」を載せているだけなので、仕様を意識せずにmt-*を足していくと、「追加したのに変わらない」「どこが効いているのか分からない」という違和感が生まれやすくなります。

実務では、marginが効くかどうかよりも、どのブロックが余白の責務を持つかを決めることのほうが重要です。今回のようにレイアウトの区切りを表したいなら、前のブロックにmb-*を寄せる。文章ブロック自体のルールなら、mt-*を持たせる。この判断ができるようになると、余白調整で迷う時間は大きく減ります。

「mt-5が効かない」と感じたときは、まずBootstrapやブラウザを疑う前に、CSSのmargin仕様と、余白の責務がどこにあるかを一度立ち止まって確認してみてください。それだけで、修正の方向性がかなり見えやすくなります。

関連記事

【WP】WordPressの本文抜粋・本文の一部を取得する

WordPressで投稿された記事の本文の一部「抜粋」を取得するために、テンプレートタグthe_excerpt()とget_the_excerpt()があります。the_excerpt()とget_the_excerpt()は、投稿時に抜粋欄へ入力があればその内容が表示され、抜粋...続きを読む

2018.12.04HTMLコーディングWordPress

【無料】商用利用OKシームレステクスチャ「玄武岩(バサルト)」素材

自然の岩肌を表現したシームレスの無料で使えるテクスチャです。玄武岩(バサルト)の質感を再現しています。継ぎ目のないシームレス加工をしているテクスチャです。テクスチャマッピングやタイル敷の背景素材などにお使いいただけます。商用利用OKのフリー素材となっております。 テ...続きを読む

2025.07.29シームレステクスチャ

【フォト】藤枝花火大会《蓮華寺池公園》

毎年8月7日に藤枝市の蓮華寺池公園で開催される花火大会。 藤枝花火大会は、大正時代から続く静岡県藤枝市の歴史ある花火大会です。蓮華寺池公園の山々をバックに約5000発が打上がります。蓮華寺池公園周辺で花火を見ることが多いのですが、写真を撮ったのは、山側から花火を見下ろすように撮影...続きを読む

2016.08.07フォトギャラリー藤枝

生成AIパスポートの基礎概念を学ぶための記事を公開しました

基礎概念・試験概要の理解|生成AIパスポート学習の「最初の土台」 生成AIパスポートの学習を始めるとき、 多くの方が最初に感じるのが 「何から理解すればいいのか分からない」という戸惑いです。 ChatGPTや...続きを読む

2026.01.05

【CSS】リンクフォーカスを利用したナビゲーションのボタン操作

CSSの{a:hover}を使うとマウスオーバーの操作によって背景の色や画像を変えることができます。ナビゲーションメニューなどによく使われる手法ですが今回は{a:focus}に着目してみました。 {a:focus}はリンクにフォーカスされているとき。クリックされた時やT...続きを読む

2015.02.08CSSHTMLコーディング