2017-01-30 9 views
1

単一のDIVでフローティングとクリアについて技術的に間違っていますか?たとえば、float:leftはボックス書式設定コンテキストを開始し、clear:bothはボックス書式設定コンテキストを終了します。単一のものに両方を配置すると、DIVは、overflow:hiddenと違って、自己完結型のBFCを作成するように見えます。ここでfloatを使用するのは正しいですか:leftとclear:どちらも同じDIVですか?

は簡単な例です:

.wrapper { 
    width: 50%; 
    float: left; 
    clear: both; 
} 

私はiPhoneの便利を持っていないので、私はサファリを除くすべての近代的なブラウザでこれをテストしました。私はIE8から11でテストしました。すべてのケースで完璧に機能しました。さらに、CSS Lintで正しく検証されました。しかし、私は何かが欠けているのだろうかと思う。これが適切で、それがうまくいくなら、なぜ多くの人々がclearfix hackを使用しますか?たぶん私は何か明白なものを欠いているでしょう

答えて

3

はい、正しいです。フローティングは、要素を特別な方法で流出させ、クリアすると元の浮動小数点以下の要素をプッシュします。

これは、クリアされたフロートがまだ流れていないので、親要素がそれを包含するように成長しないため(ブロック書式設定コンテキストを確立しない限り)、clearfixハックを置き換えるものではありません。詳細については、Floating elements within a div, floats outside of div. Why?を参照してください。

div { 
 
    border: 2px solid blue; 
 
    margin-bottom: 50px; 
 
} 
 
span { 
 
    float: left; 
 
    clear: both; 
 
    background: yellow; 
 
} 
 
.clearfix::after { 
 
    content: ''; 
 
    display: block; 
 
    clear: both; 
 
}
No clearfix: 
 
<div> 
 
    <span>Float</span> 
 
    <span>Float</span> 
 
    Text 
 
</div> 
 
With clearfix: 
 
<div class="clearfix"> 
 
    <span>Float</span> 
 
    <span>Float</span> 
 
    Text 
 
</div>

+0

あなたは可能性がある "前回のフロート" の部分大胆。私は本当に代用品だと思っている人もいます。 – Rob

+0

私はあなたの驚くほど役に立つコメントを解剖しています。[div内の浮動要素はdiv内に浮いています。なぜですか?](http://stackoverflow.com/questions/2062258/floating-elements-within-a-div-floats-outside-of-div-why)私はDreamweaverであなたの事例を裂くことを今日の残りの部分(そしておそらくは明日の大部分)に費やす予定です。私が前に移る前にこれを完全に理解するつもりです。フロートとクリアの基本は簡単ですが、ルートの基本を理解することは驚異的です。 – DR01D

関連する問題