Ich werde Sie mit einem einfachen Beispiel bieten hier, nehmen wir an, dass Sie nicht in der Mitte div
sehen jede width
so was zuweisen wird es werden tatsächlich tun
Demo
<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>
Warum das passiert?
div
ist ein block-level
Element, es den gesamten horizontalen Raum auf der Seite einnimmt, wenn Sie wissen, wenn Sie float
jedes Element entweder left
oder right
es 100%
nicht mehr nehmen, und es wird nur der Raum zugewiesen nehmen von mit der Breite oder dem Inhalt, den es enthält, so wird in diesem Fall left floated
div
20px
Breite nehmen, die anderen Raum ungenutzt lässt. Jetzt haben Sie eine weitere div
, die nicht FLOATED ist, aber es wird den Rest des verfügbaren horizontalen Speicherplatzes nehmen, so dass Ihr right floated
div
Element nach unten drücken.
Was also zu tun, um dies zu lösen?
Sie müssen float
alle div
nach links, oder es kann ausreichen, wenn Sie die div
float
nach links oder nach rechts middle
machen. Jetzt bin ich mir bewusst, dass Sie 2 div
, 1 nach links und andere nach rechts schweben möchten, aber dies ist nicht der richtige Weg, um das zu tun, wenn Sie möchten, können Sie die Elemente in einem Container div
, oder was Sie können Verwenden Sie position: absolute;
, um die Elemente richtig einzustellen.
Um Ihnen zu zeigen, wie Block-Level-Elemente arbeiten, werde ich Ihnen ein anderes Beispiel hier teilen ..
Angenommen, Sie ein div
in einem p
Tag verschachtelt haben (Dies ist ungültig so nie bitte Verwenden Sie dies in der realen Welt, dies ist nur zu Demonstrationszwecken), und geben Sie dem Element div
etwas Breite und sehen Sie, wie es Ihren Text rendert.
<p>Hello World, I don't want the <div>text to</div> break</p>
div {
width: 40px;
background: #f00;
}
Demo 2
Obwohl Sie die width
bieten Level-Element zu blockieren, wird es noch den Absatz brechen.
Von w3c
standardmäßig Elemente auf Blockebene werden anders als Inline- Elemente formatiert. Im Allgemeinen beginnen Elemente auf Blockebene mit neuen Zeilen, inline Elemente nicht.
@Aaron macht es inline "block" und sehen, wie es sich verhält, habe ich bereits erwähnt, ob Sie eine Block-Level-Element Breite oder nicht zur Verfügung stellen, ist es egal, es wird den Rest des Raumes zu nehmen, den Rest zu anderen Linie brechen, werde ich Ihnen zeigen 1 weiteres Beispiel. –
Sie müssen nichts davon tun. Legen Sie einfach die Floats über das Block Level-Element und Sie erhalten, was Sie wollen. –
@ToddBerman kann er das 'div' in der Mitte schweben lassen? :) –