2013-04-18 23 views
17

私はいつもCSSのclear: left,clear: rightclear: bothと混同しています。私はclear: bothがそれ自身の両側にフローティング要素を許可しないことを意味します。なぜクリア:右は意図したとおりに動作しません

私はいくつかのテストを行ったhereBclear: bothを使用しているため、レイアウトが以下のように表示されると思いました。しかし、それはしません。誰かが私に理由を教えてもらえますか?

要素に (ポストコード)

<div class="container"> 
    <div class="A">a</div> 
    <div class="B">b</div> 
    <div class="C">c</div> 
    <div class="D">d</div> 
    <div class="CB"></div> 
</div> 

.container{ 
    width:100%; 
    border:1px solid red;  
} 
.B{ 
    float:left; 
    clear:both; 
    width:10%; 
    height:30px; 
    border:1px solid blue; 
} 
.A,.C,.D{ 
    float:left; 
    width:10%; 
    height:30px; 
    border:1px solid blue; 
} 
.CB{ 
    clear:both; 
} 
+0

あなたにも問題になっているテストケースのコードの概要を説明しなければならないが - フィドルから不可欠なビットを含む(サンセリフのサイジングと国境など) – millimoose

答えて

29

clear更新


B
CDは、それがドキュメント順に前フロートをクリアします。の後に浮動小数点数がクリアされません。 leftおよびrightの値は、それぞれ要素に先行して、左浮動小数点および右浮動小数点のクリアランスを意味します。要素の前後で浮動小数点数をクリアすることは意味しません。

Cはフロートされていますが、クリアランスが適用されていないため、Bの横に浮かんでいます。Cは、Cがドキュメント構造の後ろに来るため、Cをクリアしようとしません。

さらに、clear: rightは、いずれの要素も右に浮かぶことがないため、テストケースには何の効果もありません。

+0

@ジョン:ありがとう、それは私が探していたフレーズでした。 – BoltClock

+0

あなたの編集と助けてくれてありがとう、あなたは答えは非常に明確で有用です。私はそれが好きです 。今私の理解はより良い。 –

0

あなたが使用している場合はdivの後に動作する明確なを持つことができます。

.clr:after { 
visibility: hidden; 
display: block; 
content: ""; 
clear: both; 
height: 0; 
} 
関連する問題