ここで簡単な例を提供します。真ん中を割り当てていないと仮定して、実際に何をするか見て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
width
to ブロック レベル要素を指定しても、段落が壊れます。
w3cから
デフォルトでは、ブロック レベル要素はインライン要素とは異なる形式になります。一般に、ブロックレベル要素は新しい行で始まりますが、インライン要素はそうではありません。