まず、HTMLマークアップ、'body {padding:0;}'のとき、 'float'と 'clear'は変な動作をしています。どうして?
<p>Bananas For BreakFast</p>
<h1>What the what!?</h1>
...とCSS、
body, p, h1, h2, h3, h4{
margin: 0; padding: 0;
}
body{
padding: 30px;
}
/*remove the comment to trigger the effect
body{
padding: 0;
}
*/
p{
float: left;
background-color: red; /*just to aid visualization*/
}
h1{
clear: both;
margin-top: 200px;
background-color: grey; /*just to aid visualization*/
}
あなたは以下のtinkerbinページでアクションでそれを見ることができます。
だから、私の問題は何ですか?
シンプル:ボディエレメントにパディングがあり、クリアされたエレメントのマージントップが適用されます。 'パディング:0;'同じ消去された要素の「margin-top」が機能しなくなります。
なぜですか?
クリアされた要素は、それより上の要素でマージンコラプスに参加しないため、マージントップのマージンをボディマージンと一緒に折りたたむことはできません。たとえそれがあったとしても、ボディ要素にマージンを適用して全体を押し下げる必要がありますが、そうではありません。間にclear
div要素を追加
あなたは何をしたいですか?ボディのみにパディングを適用し、マージントップをh1要素にのみ適用しますか? – redDevil
いいえ、これは私が出会ったばかりの奇妙な振る舞いで、その説明が不思議でした。私はレイアウトを達成しようとしていません - 私はちょうどその動作を理解しようとしています。 – banzomaikaka
body {float:left} ha - 他にどのような悪影響があるのかはっきりしていませんが、問題を修正しているようです。 – mikevoermans