Mehrere Divs in einem anderen Div zentrieren?

Lesezeit: 2 Minuten

Benutzer-Avatar
julienln

Ich habe vier Divs, die in einem anderen Div enthalten sind, und ich möchte, dass die vier inneren Divs zentriert sind.

Ich habe benutzt float: left auf den vier divs so, dass sie horizontal ausgerichtet sind.

CSS:

<style>
    .square  //inner divs
    {
        float: left;
        margin:1pt;
        width:72pt;
        height:72pt;
    }
    .container //outer divs
    {
        text-align:center;
        width:450pt;
        height: 80pt;
    }
</style>

und HTML:

<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

Benutzer-Avatar
edi9999

Da Sie die Anzahl der divs, die Sie haben, nicht kennen, sollten Sie verwenden

text-align:center auf der äußeren div

display:inline-block auf dann innere div

http://jsfiddle.net/edi9999/yv2WY/

HTML

<div class = "container">
    <div class = "square">John</div>
    <div class = "square">Mary</div>
    <div class = "square">Doe</div>
    <div class = "square">Jane</div>
</div>

CSS

.square
{
    margin:1px;
    width:20%;
    text-align:left;
    border: 1px solid gray;
    display:inline-block;    
}
.container
{
    text-align:center;
    width:100%;
    height: 80pt;
    border: 1px solid black;
}

  • 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


Benutzer-Avatar
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

Benutzer-Avatar
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.

Es wird alles ausführlich erklärt hier.

Benutzer-Avatar
aefxx

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?

Geben Sie hier die Linkbeschreibung ein

Alles in einem HTML-Element in der automatischen Mitte

Dieser Code gilt für das gesamte HTML-Element in Center ohne @mediaquery.

  • Das HTML-Element auto center main css property display inline-block of the chide div and add css property text-align center of parent div

.center {
            border: 1px groove;
            width: 97px;
            border-radius: 7px;
            padding: 10px;
            width: 122px;
            margin-left: 12px;
            margin-top: 13px;
            display: inline-block;
            text-decoration: none;

            font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
            font-size: 1.2em;
            color: #000000;
            background: #dbdbdb;
        }
<div style="width: auto;text-align: center;">

            <div class="center">Div1</div>
            <div class="center">Div2</div>
            <div class="center">Div3</div>
            <div class="center">Div4</div>
            <div class="center">Div5</div>
            <div class="center">Div6</div>
            <div class="center">Div7</div>

    </div>

Sehen Sie sich dieses Beispiel an. Klicken Sie hier

1257040cookie-checkMehrere Divs in einem anderen Div zentrieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy