cssのmargin|上下や親子でマージンが効かない…それはマージンの相殺かもね!

cssマージンの相殺トップ画像

 

「マージン」って名前の通りで分っかりやすーい!って思っていたのは昔のこと。いつになっても「あれっ、マージン効かないぞー」って悩むことがあります。

 

そんな奥深い?マージンですが、ここでは「効かない」原因でよくある相殺(そうさい)についてとりあげてみます。

 

 

上下のマージンは相殺される

上下に隣接するボックスのマージンは、原則として相殺されます。

左右に隣接するマージンでは相殺は起こりません。

 

「共にプラス」なら、大きい方のマージンだけ適用

上下のマージンが両方とも「プラス」なら、大きい方のマージンだけ適用されます。
マージンの相殺挿絵01

 

 

「プラス」と「マイナス」なら、両方を足した値が適用

上下のマージンが「プラス」と「マイナス」なら、両方を足した値が適用されます。

マージンの相殺挿絵02

 

 

「共にマイナス」なら、小さい方のマージンだけ適用

上下のマージンが「共にマイナス」なら、小さい方(マイナスの値が大きい方)のマージンだけ適用されます。

マージンの相殺挿絵03

 

 

親子(入れ子)で起こるマージンの相殺

親子の関係にあってもマージンの相殺は起こります。

入れ子で起こるマージンの相殺

「A」と「B」は兄弟関係、「B」と「b」は親と子の関係とします。

cssマージン挿絵04

上の例では「b」は「B」の中で上詰めになり、それぞれが持っている「margin-top」の値のうち、大きい方が適用されます。

 

「b」と「B」のマージンの値を入れ替えても、同じ結果になります。

cssマージン挿絵05

 

 

マージンを相殺させない方法

マージンが指定されている方向に「border」や「padding」を入れると、相殺は起こりません。相殺したくても「間に物」が挟まっていれば、相殺できない状態といった感じです。

入れ子の「親」にボーダーを指定

先ほどの「入れ子」関係の親に「border-top」を指定してみます。

cssマージン挿絵06

すると上記のように「B」の中で「b」に、上方向のマージンが適用されます。

 

「B」に「padding-top」を指定しても、同じ効果が得られます。
また「overflow」「float」「position」などの指定方法によっても、相殺を起こさない場合があります。

 

-CSS, ホームページ作成

投稿日:2018-05-15 更新日:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

columnsプロパティのアイキャッチ

cssのcolumns|ボックス内の文章を任意のカラム数に自動で段組みする方法

  カラムといえば、「メインコンテンツ」と「サイドバー」など、大きなボックス要素が思い起こされますが、ここで扱うカラムは、1つのボックスの中でテキストなどを折り返す「段組み」のことです。 & …

ボックスシャドウ・ドロップシャドウ比較アイキャッチ

cssで影をつくる|box-shadow・drop-shadowの使い方と使い分け

  cssで影をおとす「box-shadow」や「filter:drop-shadow」は、何とな~く分かるかな?!くらいの感じでこれまで使ってましたが、影のでき方を色々と試してみる機会があ …

cssで中央配置アイキャッチ画像

cssで縦横(上下左右)中央にテキストを配置|レスポンシブに対応する2つの方法

  横方向の「左右中央」は margin: auto や text-align: center がうまく効いてくれる場面が多いと思います。 ところが縦方向の「上下中央」になると、配置指定が難 …

縦書きの解説アイキャッチ

htmlとcssで縦書き|自動で段組みし横スクロールを発生させないレイアウト

  ウェブ上で縦書きの文字を見かけると、新鮮というか、目を引くというか、ちょっと印象に残ります。 「あっ いいな」って感じで。   こんなの (ちょっと違う?)  サイトメニュー …