<div class = "container">
<div class = "square">...</div>
<div class = "square">...</div>
<div class = "square">...</div>
<div class = "square">...</div>
</div>
Wie kann ich die Divs im Container zentrieren?
Die Anzahl der inneren Divs kann variabel sein.
Tangential: Verursachen Leerzeichen zwischen Klasse, Gleichheitszeichen und Wert in Anführungszeichen keine Probleme?
– RwwL
20. August 2009 um 18:46 Uhr
edi9999
Da Sie die Anzahl der divs, die Sie haben, nicht kennen, sollten Sie verwenden
<div class = "container">
<div class = "square">John</div>
<div class = "square">Mary</div>
<div class = "square">Doe</div>
<div class = "square">Jane</div>
</div>
Leicht aktualisierte Version Ihres jsfiddle (Sie hatten ursprünglich auch einen Inline-Block im Container, was nicht erforderlich ist): jsfiddle.net/yv2WY/34
– Mikemaccana
14. Januar 2014 um 10:57 Uhr
Wurm
Hier ist eine alternative Methode, wenn Sie ein zusätzliches div verwenden können:
<div class = "container">
<div class="centerwrapper">
<div class = "square">...</div>
<div class = "square">...</div>
<div class = "square">...</div>
<div class = "square">...</div>
</div>
</div>
<style>
.square
{
float: left;
margin:1pt;
width:72pt;
height:72pt;
}
.container
{
text-align:center;
width:450pt;
height: 80pt;
}
.centerwrapper
{
margin: auto;
width: 302pt;
}
</style>
Stellen Sie außerdem sicher, dass Sie ein Schlussangebot auf Ihrem haben <div class = "container"> dort. Dem eingefügten Code fehlt einer.
Dies funktioniert für 4 Divs, aber die Anzahl der Divs im Container ist möglicherweise nicht immer gleich. In meinem Fall erscheinen manchmal nur 2 oder 3 Divs, und ich möchte, dass sie auch zentriert sind. Ich habe vergessen, dies in meiner Frage anzugeben …
– julienln
20. August 2009 um 19:05 Uhr
Hmm. Es könnte besser sein, wenn Sie Ihre Quadrate inline mit einer bestimmten Breite anzeigen können, anstatt sie zu schweben. Wenn Sie Rand verwenden können: auto; in einem umgebenden div, dann werden sie immer zentriert – der Trick besteht darin, die Breite nicht anzugeben.
– Puh
20. August 2009 um 21:00 Uhr
Ok, ich habe es geschafft, indem ich die Breite des Centerwrappers so definiert habe, anstatt eine CSS-Klasse zu verwenden:
– julienln
21. August 2009 um 14:04 Uhr
Wie würden Sie dies ohne eine Breite für tun .centerwrapper. Wie in haben Sie ein dynamisches Array von .squares
– Reise
31. Oktober 2012 um 19:02 Uhr
Das hat mir sehr geholfen. Ich hatte die schwierigste Zeit, Divs für die Cross-Browser-Kompatibilität horizontal auszurichten, und am Ende war es wirklich einfach. Alles, was ich tun musste, war, der gleichen div-Struktur wie oben zu folgen, width und display:block-Eigenschaften im Container anzugeben, dann für jedes untergeordnete div einen Prozentsatz für die Breite zu geben, es nach links zu schweben, und ich konnte loslegen . Vielen Dank!
– gcode
6. November 2012 um 23:00 Uhr
Nestor
Wie #RwL sagt, mit <span> funktioniert, hier ein Beispielcode, getestet auf IE6/8, Chrome, Safari, Firefox:
CSS
<style type="text/css">
/* borders and width are optional, just added to improve visualization */
.parent
{
text-align:center;
display: block;
border: 1px solid red;
}
.child
{
display: inline-block;
border: 1px solid black;
width: 100px;
}
</style>
HTML
<span class="parent">
<span class="child">
A
</span>
<span class="child">
B
</span>
</span>
Wenn Sie jedoch UL-Listen einfügen müssen, wird es dadurch nicht CSS-konform, da UL innerhalb von SPAN nicht zulässig ist. In diesem Fall können Sie Bedingungen verwenden und SPAN für IE6 anwenden (es ist nicht mehr Standard, kann deshalb nicht mehr “Nicht-Standard” sein!) Und DIV für andere.
– Nestor
5. März 2011 um 12:16 Uhr
Außerdem kann das übergeordnete Element DIV sein, nur das untergeordnete Element muss SPAN sein, damit IE6 das Inline-Block-Attribut erkennen kann.
– Nestor
5. März 2011 um 12:20 Uhr
Anstatt die .square divs zu schweben, geben Sie sie display: inline-block. Dies könnte in Firefox 3.0.x zwielichtig sein, aber ich glaube, dass Inline-Block in 3.5.x vollständig unterstützt wird.
Die eleganteste Lösung, die ich finden konnte, wenn Sie eine dynamische Anzahl von Div-Zentren verwenden möchten text-align: center; auf dem übergeordneten div und display: inline-block; auf die Kinder.
Einfach platzieren margin:auto; für alle nachfolgenden divs innerhalb Ihres Haupt-Wrappers text-align:center;. SOLLTE ich denke, alle untergeordneten Divs auf die Mitte des übergeordneten Div ausrichten?
Tangential: Verursachen Leerzeichen zwischen Klasse, Gleichheitszeichen und Wert in Anführungszeichen keine Probleme?
– RwwL
20. August 2009 um 18:46 Uhr