2016-05-14 12 views
0

なぜ#rightfloat: 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では明白ではありません。

+0

ことを説明するいくつかのリンクでありますk; #rightでこれを修正しますが、あなたの質問では、なぜ "width:* px"はブロックを削除し、 "width:auto;"私は知らない。私は誰かが答えとしてそれを説明すると思います。おそらくブロックの幅が固定されている場合は、その横に浮動小数点の要素がありますが、幅はautoです。そうです。 – MajeStic

+0

float:rightとclear:の両方を使用する必要があります。右から幅を削除すると、左のaの後ろにもdiv全体に表示されます。https://jsfiddle.net/anzzxrcw/を参照してください。Divはブロック要素なので、100%の幅をとります。 –

+0

@Leothelionしかし、なぜ彼らは幅の設定なしで同じ行にとどまるのですか?なぜ、幅を設定するとdivを次の行に折り返すのですか? – Basj

答えて

0

<div>はブロックスタイルの要素なので、左側にフローティングされても、残りのブロックはまだブロックであり、それ自身の行にレンダリングされます。

彼らはどちらか、同じ行にレンダリングinline-blockにディスプレイを設定するか、あまりに秒1をフロートにするには:

* { margin:0; padding: 0; } 
 
#left {background-color: green; float: left; width: 200px; } 
 
#right {background-color: blue; width: 200px; float: left}
<div id="menu"> 
 
    <div id="left">Left</div> 
 
    <div id="right">Right</div> 
 
</div>

+0

ありがとう!しかし、#rightの幅を設定しない場合、#right *はdiv *(したがってブロック)です。同じ動作が適用されます。しかし、(私の2番目のコードスニペットを参照してください)、動作は幅なしで非常に異なります:同じ行にとどまります。どうして? – Basj

2

あなた以外にmargin-left: 200px;の追加は、DIVを浮かべ、それが動作します

* { margin:0; padding: 0; } 
 
#left {background-color: green; float: left; width: 200px; } 
 
#right {margin-left: 200px;background-color: blue;}
<div id="menu"> 
 
    <div id="left">Left</div> 
 
    <div id="right">Right</div> 
 
</div>

更新

フロートを使用して、一方がフロートと共に使用した場合の要素は、特定の方法で動作させるブロックフォーマット文脈(BFC)をトリガすることができます。インラインブロック:ここ

は、ディスプレイを使用して

+0

問題の2番目のコードスニペットを参照してください。マージンが残っていないレイアウトと同じレイアウトでも動作します。私の質問はもっとです:#rightに 'width'を設定すると、divを次の行に折り返すのはなぜですか? (すなわち、私の2つのコードスニペットを比較する) – Basj

+0

@Basjあなたは非常に正しいです、それは関連する質問で明らかではありません、それでもあなたの質問に対する答えです。 BFCは、なぜそれがそうするかのように動作するのを理解するのがいくぶん難しいので、私の投稿されたすべてのリンクは、他の人のために理解できると思います。 – LGSon

関連する問題