margin-topが効かない件(親要素のfloatによるマージンの相殺)

この記事について

環境css、html
目的margin-topが効かないのを直す
結果clear:bothのdivを前に置いてfloatを解除し、事なきを得た

つまずきポイント要約

  • margin-topを使ったdivを含む親要素にfloat:leftがあると「マージンの相殺」が起こる
  • 本来はclearfixを使うべきらしいが、その場しのぎでclear:bothのdivを挟んだ

事象

margin-topが効かなかった。

原因

どうも「マージンの相殺」が起こっているらしい。

マージンの相殺が起こる原因はいろいろあるが、自分のケースは、margin-topを使った<div>を含む親要素に float: left; が使われていたため。

floatを解除しないとmarginが有効にならないようだ。

対処

解決方法として「clearfix」なるものがあるらしい。

ただ、私には理解できなかったため、とりあえずその場しのぎで次の方法でfloatを解除し、事なきを得た。

有効にならないmargin-topの<div>の前に

<div class="clear">テキスト</div>

を記述。

スタイルシートには、

.clear {
  clear: both;
}

と記述。

ようは普通にfloatを解除しただけ。

いずれclearfixを使わなければいけないだろうが、そのときまでこれでいこう。

関連記事

タイトルとURLをコピーしました