未経験からでもWEBエンジニアになれるブログ(さぼり気味)

可能な限り楽して生きていきたい。好きなものだけ食べて痩せたい。控えめに行っても玉の輿乗りたい。ほんとはプライベートブログにしたい。何もしてないのに尊敬されたい。家から出たくない。

HTML/CSS-12日目

 

先日作った二段組のレイアウトですが、

 

全ての要素のpaddingとmarginはそれぞれ10pxずつでした。

でも、よくみるとなぜか余白がバラバラ......。

 

 

今回はmarginとpaddingのルールについて説明します。

 

そもそもmargin(外向きの余白)は、垂直方向には隣接するマージンは加算されません。

 

大きい方の値のみ適用されます。

 

 

 

でもその中で例外が存在します。

それについて説明します。

 

 

 


こないだ作ったレイアウトがこちら。

 

 

 

f:id:mocha0426:20170727124135p:plain



 

これ、余白が均等ではありません。


この理由を解明していきます。

 

 

 

 

f:id:mocha0426:20170727124155p:plain

 

 

 


まずはこんな風に余白に番号を振ります。

 

 

 

 

 

で、各番号について説明して行きます。

 

 

コードはこちら。コード見ながらじゃないとわかりづらい。

 

 

f:id:mocha0426:20170727124643p:plain

 

 

 

CSSです。

 

 

 

まず①、外側の余白。

 

これは上下左右均等です。

 

 

div.wrapperの内側のpadding:10px;

と、

headerとfooterのmargin:10px;

が、加算されて20pxになっています。

 

 

ルール1:paddingとmarginは加算される。

 

 

 

 

 

 

 

 

 

②について。

これは、

 

headerの外側下のmargin:10px;

と、

nav,articleの外側上のmargin:10px;

 

が、加算されています。

 

ルール2:marginの上下間のmarginは相殺が原則だが、floatしたものとは加算される。

 

 

 

CSSをみてみてください。

navとarticleはfloatされています。

 

 

 

 

 

 

 

 

③、

やたら広い余白。

navは左寄せ、

articleは右寄せなので、ここに関してはなんのあれもないです。

 

ももし仮に、

navとarticleを共に左寄せにした場合、③には加算された空白が発生します。

 

ルール③:フローとされた左右間のmarginは加算される。

 

 

 

 

 

 

 

 

 

 

④について、

 

フロートしたnavとarticleと、footerのmargin:10px;が相殺されています。

 

ルール4:フロートされた要素のmarginでも、次要素がclear:both;すれば、相殺される。

 

 

 

 

以上!