ここで簡単な例を提供します。真ん中を割り当てていないと仮定して、実際に何をするか見てdivみましょう。width
デモ
<div style="width:100%">
<div style="width:20px;height:20px;background-color:red;float:left;border: 3px solid #000;"></div>
<div style="height:20px;background-color:red;margin:0 auto auto;border: 3px solid #000;"></div>
<div style="width:20px;height:20px;background-color:red;float:right;border: 3px solid #000;"></div>
</div>
なぜこれが起こるのですか?
div要素であるblock-level場合、ページの水平方向のスペース全体を占有します。ご存知の場合はfloat、要素を使用するか、それleft以上right必要とせず100%、幅を使用して割り当てられたスペースまたはそれが保持するコンテンツのみを占有します。この場合、他のスペースを使用せずに幅をleft floated div取ります。20pxこれで、フロートされていない別のdivものがありますが、残りの使用可能な水平スペースが必要になり、right floated div要素が押し下げられます。
では、これを解決するにはどうすればよいでしょうか。
float全部左にするか、左か右divにすれば十分かもしれませんmiddle div float。2 、 1 を左に、その他を右にフロートさせたいことはわかっていますdivが、これは正しい方法ではありません。必要に応じて、要素を container 内にラップするdivか、使用できるのはposition: absolute;要素を正しく設定します。
ブロック レベルの要素がどのように機能するかを示すために、ここで別の例を紹介します。
divタグ内にネストされていると仮定しp(これは無効なので、実際には使用しないでください。これはデモンストレーション目的のためだけです)、div要素に幅を与えて、テキストがどのようにレンダリングされるかを確認します。
<p>Hello World, I don't want the <div>text to</div> break</p>
div {
width: 40px;
background: #f00;
}
デモ 2
widthto ブロック レベル要素を指定しても、段落が壊れます。
w3cから
デフォルトでは、ブロック レベル要素はインライン要素とは異なる形式になります。一般に、ブロックレベル要素は新しい行で始まりますが、インライン要素はそうではありません。