Wie kann ich eine horizontale Zentrierung einer <div>
in einem anderen <div>
CSS verwenden?
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Wie kann ich eine horizontale Zentrierung einer <div>
in einem anderen <div>
CSS verwenden?
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Diese Methode funktioniert ebenfalls sehr gut:
div.container {
display: flex;
justify-content: center; /* For horizontal alignment */
align-items: center; /* For vertical alignment */
}
Für die innere <div>
ist die einzige Bedingung, dass seine height
et width
darf nicht größer sein als die seines Behälters.
display: flex
verhält sich wie ein Blockelement und ordnet seinen Inhalt nach dem Flexbox-Modell an. Es funktioniert mit justify-content: center
.
Bitte beachten: Flexbox ist mit allen Browsern außer dem Internet Explorer kompatibel. Siehe Anzeige: Flex funktioniert nicht im Internet Explorer für eine vollständige und aktuelle Liste der Browserkompatibilität.
#inner {
display: inline-block;
}
#outer {
display: flex;
justify-content: center;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Die Anwendung text-align: center
wird der Inline-Inhalt innerhalb des Zeilenrahmens zentriert. Da das innere div jedoch standardmäßig width: 100%
müssen Sie eine bestimmte Breite festlegen oder eine der folgenden Möglichkeiten nutzen:
display: block
display: inline
display: inline-block; }
text-align: center; }
<div id="outer"> <div id="inner">Foo foo</div> </div>
使用方法 margin: 0 auto
ist eine weitere Option, die für die Kompatibilität mit älteren Browsern besser geeignet ist. Es funktioniert zusammen mit display: table
.
#inner {
display: table;
margin: 0 auto;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
transform: translate
können Sie den Koordinatenraum des visuellen CSS-Formatierungsmodells ändern. Damit können Elemente verschoben, gedreht, skaliert und verzerrt werden. Für die horizontale Zentrierung benötigen Sie position: absolute
et left: 50%
.
#inner {
position: absolute;
left: 50%;
transform: translate(-50%, 0%);
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
<center>
(Veraltet)Der Tag <center>
ist die HTML-Alternative zu text-align: center
. Sie funktioniert in älteren und den meisten neuen Browsern, wird aber nicht als gute Praxis angesehen, da diese Funktion veraltet und wurde aus den Webstandards entfernt.
#inner {
display: inline-block;
}
<div id="outer">
<center>
<div id="inner">Foo foo</div>
</center>
</div>
Wenn die Breite des Inhalts nicht bekannt ist, können Sie die folgende Methode verwenden . Nehmen wir an, wir haben diese beiden Elemente:
.outer
-- volle Breite.inner
-- keine Breite festgelegt (aber eine maximale Breite könnte angegeben werden)Angenommen, die berechnete Breite der Elemente beträgt 1000 Pixel bzw. 300 Pixel. Gehen Sie wie folgt vor:
.inner
innerhalb .center-helper
.center-helper
ein Inline-Block; er erhält die gleiche Größe wie .inner
so dass es 300 Pixel breit ist..center-helper
50 % rechts im Verhältnis zum übergeordneten Element; dies platziert das linke Element auf 500 Pixel im Verhältnis zum äußeren Element..inner
50% links relativ zu seinem Elternteil; dies platziert seine linke Seite auf -150 Pixel in Bezug auf den mittleren Helfer, was bedeutet, dass seine linke Seite auf 500 - 150 = 350 Pixel in Bezug auf die äußere Seite liegt..outer
auf ausgeblendet setzen, um eine horizontale Bildlaufleiste zu verhindern.Demo:
body {
font: medium sans-serif;
}
.outer {
overflow: hidden;
background-color: papayawhip;
}
.center-helper {
display: inline-block;
position: relative;
left: 50%;
background-color: burlywood;
}
.inner {
display: inline-block;
position: relative;
left: -50%;
background-color: wheat;
}
<div class="outer">
<div class="center-helper">
<div class="inner">
<h1>A div with no defined width</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br>
Duis condimentum sem non turpis consectetur blandit.<br>
Donec dictum risus id orci ornare tempor.<br>
Proin pharetra augue a lorem elementum molestie.<br>
Nunc nec justo sit amet nisi tempor viverra sit amet a ipsum.</p>
</div>
</div>
</div>
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
37 Stimmen
Von diesen großartigen Antworten möchte ich nur hervorheben, dass Sie "#inner" eine "Breite" geben müssen, oder es wird "100%" sein, und Sie können nicht sagen, ob es bereits zentriert ist.
1 Stimmen
display:flex;
ist am einfachsten zu merken (Chrome gibt Ihnen Anleitungen in DevTools) und unterstützt die Zentrierung auf beiden Achsen.