なぜ#right
はfloat: left
div #left
と同じ行にとどまっていませんか?#right
の幅をに設定しないと、動作は正常です(下の2番目のコードスニペットを参照)。浮動小数点の同じ行にいないdiv:左div
* { margin:0; padding: 0; }
#left {background-color: green; float: left; width: 200px; }
#right {background-color: blue; width: 200px; }
<div id="menu">
<div id="left">Left</div>
<div id="right">Right</div>
</div>
奇妙なことは、私は#rightのための任意の幅を入れていないとき、それは動作しますが、です。 #rightの幅設定を追加すると、すべてが変更されるのはなぜですか?
* { margin:0; padding: 0; }
#left {background-color: green; float: left; width: 200px; }
#right {background-color: blue; }
<div id="menu">
<div id="left">Left</div>
<div id="right">Right</div>
</div>
注:質問は本当にここにある:なぜwidth
変更ラッピング/ラッピング不可設定のでしょうか?これに対する答えはthis related questionでは明白ではありません。
ことを説明するいくつかのリンクでありますk; #rightでこれを修正しますが、あなたの質問では、なぜ "width:* px"はブロックを削除し、 "width:auto;"私は知らない。私は誰かが答えとしてそれを説明すると思います。おそらくブロックの幅が固定されている場合は、その横に浮動小数点の要素がありますが、幅はautoです。そうです。 – MajeStic
float:rightとclear:の両方を使用する必要があります。右から幅を削除すると、左のaの後ろにもdiv全体に表示されます。https://jsfiddle.net/anzzxrcw/を参照してください。Divはブロック要素なので、100%の幅をとります。 –
@Leothelionしかし、なぜ彼らは幅の設定なしで同じ行にとどまるのですか?なぜ、幅を設定するとdivを次の行に折り返すのですか? – Basj