2016-05-12 9 views
0

(Chromeデベロッパーツールに見られるように).However私は、float:leftにフローティング#p1周り#p2ラップのコンテンツのみを#p1を設定していない場合div#p2選択図div#p2のみブラウザの左端から存在すると思われます両方ともdivsfloat:leftに設定すると、コンテナとコンテナがお互いに包み込まれます。なぜそうですか?浮動小数点2(またはそれ以上)のdivはどのように動作しますか?

#p1 { 
 
    background-color: blue; 
 
    border: 1px solid black; 
 
    float: left; 
 
    width: 100px; 
 
} 
 
#p2 { 
 
    background-color: red; 
 
    border: 1px solid black; 
 
    width: 100px; 
 
    float: left; 
 
}
<title>Floating Divs</title> 
 
<h1>Floating Divs</h1> 
 
<div> 
 
    <div id="p1">DIV</div> 
 
    <div id="p2">DIVDIVDIV</div> 
 
</div>

#p1 { 
 
    background-color: blue; 
 
    border: 1px solid black; 
 
    float: left; 
 
    width: 100px; 
 
} 
 
#p2 { 
 
    background-color: red; 
 
    border: 1px solid black; 
 
    width: 100px; 
 
}
<title>Floating Divs</title> 
 
<h1>Floating Divs</h1> 
 
<div> 
 
    <div id="p1">DIV</div> 
 
    <div id="p2">DIVDIVDIV</div> 
 
</div>
Single float,#p2 is entire #p1 but content is wrapped

Both #p1 and #p2 i floated,however both container and content is wrapped

+0

https://developer.mozilla.org/en-US/docs/Web/CSS/floatを読むことをお勧めします。すべてがかなりよくそこに説明されています。単に「それがどのように機能し、動作するのか」を除いて、おそらくP – thepio

答えて

1

CSS 2.1仕様に記載precise rules for floatsとしては、点2で述べている:

現在のボックスがされた場合

左フローティング、以前のソース文書内の要素によって生成された左フローティング ボックスはそれぞれ、このような以前のボックス、次いで、存在する、いずれかの現在のボックス の左側外縁前のボックスの右端の右側にあるか、または の先頭が前のボックスの下端よりも低くなければなりません。類似の ルールは右浮動ボックスで保持されます。

したがって#p2浮動小数点の場合#p1を避けるようにします。フローティングされていない場合、#p1の存在は無視されます。しかし、#p2に含まれるラインボックスは、浮動小数点型#p1を避け、#p2の高さがそのラインボックスを含むのに十分なほど大きくなる原因となります。

+0

「ラインボックス」とは何ですか?あなたはコンテンツを参照していますか? – avistein

+1

@avistein - コンテンツの1行。あなたの例 '#p2'では、すべての内容が1行に収まりますが、さらにテキストを追加すると、2行目以降の行に流れます。そのテキストの各行は、ラインボックスに含まれています。 [CSS 2.1仕様のラインボックス](https://www.w3.org/TR/CSS22/visuren.html#line-box) – Alohci

+0

したがって、ラインボックスはデフォルトでフローティングされていますか?さもなければ、浮動小数点 '#p1'を避けることはできません。また、ラインボックスに格納されたhtmlの内容はすべてですか?私は、コンテンツとしてhtmlで書いているすべてのことを言いたいのですが、それらのすべてにボックスがありますか?今でも、html要素だけがボックスであることを知っていました。 – avistein

関連する問題