So zentrieren Sie div mithilfe der Flexbox horizontal und vertikal innerhalb des Containers. Im folgenden Beispiel möchte ich jede Zahl untereinander (in Zeilen), die horizontal zentriert sind.
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
align-items: center;
justify-content: center;
}
row {
width: 100%;
}
.flex-item {
background: tomato;
padding: 5px;
width: 200px;
height: 150px;
margin: 10px;
line-height: 150px;
color: white;
font-weight: bold;
font-size: 3em;
text-align: center;
}
<div class="flex-container">
<div class="row">
<span class="flex-item">1</span>
</div>
<div class="row">
<span class="flex-item">2</span>
</div>
<div class="row">
<span class="flex-item">3</span>
</div>
<div class="row">
<span class="flex-item">4</span>
</div>
</div>
row{
was keine Auswirkung auf Zeilen hat. Wenn Sie es in.row{
das Ergebnis ändern, wäre das völlig anders.Antworten:
Ich denke, Sie wollen so etwas wie das Folgende.
Siehe Demo unter: http://jsfiddle.net/audetwebdesign/tFscL/
Ihre
.flex-item
Elemente sollten auf Blockebene (div
stattspan
) sein, wenn die Höhe und die obere / untere Polsterung ordnungsgemäß funktionieren sollen.Stellen Sie außerdem
.row
die Breite aufauto
anstelle von ein100%
.Ihre
.flex-container
Eigenschaften sind in Ordnung.Wenn Sie möchten
.row
, dass das Bild vertikal im Ansichtsfenster zentriert wird, weisen Siehtml
und eine Höhe von 100% zu und setzen Siebody
diebody
Ränder auf Null .Beachten Sie, dass
.flex-container
eine Höhe erforderlich ist, um den vertikalen Ausrichtungseffekt zu sehen. Andernfalls berechnet der Container die Mindesthöhe, die zum Einschließen des Inhalts erforderlich ist und in diesem Beispiel geringer ist als die Höhe des Ansichtsfensters.Fußnote:
Die
flex-flow
,flex-direction
,flex-wrap
Eigenschaften haben könnten diese Konstruktion leichter gemacht zu implementieren. Ich denke, dass der.row
Container nicht benötigt wird, es sei denn, Sie möchten den Elementen (Hintergrundbild, Rahmen usw.) ein Styling hinzufügen.Eine nützliche Ressource ist: http://demo.agektmr.com/flexbox/
quelle
So zentrieren Sie Elemente vertikal und horizontal in Flexbox
Nachfolgend finden Sie zwei allgemeine Zentrierlösungen.
Eine für vertikal ausgerichtete Flex-Elemente (
flex-direction: column
) und die andere für horizontal ausgerichtete Flex-Elemente (flex-direction: row
).In beiden Fällen kann die Höhe der zentrierten Divs variabel, undefiniert, unbekannt sein, was auch immer. Die Höhe der zentrierten Divs spielt keine Rolle.
Hier ist der HTML-Code für beide:
CSS (ohne dekorative Stile)
Wenn flexible Elemente vertikal gestapelt werden:
DEMO
Wenn flexible Elemente horizontal gestapelt werden:
Passen Sie die
flex-direction
Regel anhand des obigen Codes an.DEMO
Zentrieren des Inhalts der Flex-Elemente
Der Umfang eines Flex-Formatierungskontexts ist auf eine Eltern-Kind-Beziehung beschränkt. Nachkommen eines Flex-Containers außerhalb der Kinder nehmen nicht am Flex-Layout teil und ignorieren die Flex-Eigenschaften. Im Wesentlichen sind Flex-Eigenschaften nicht über die Kinder hinaus vererbbar.
Daher müssen Sie immer
display: flex
oderdisplay: inline-flex
auf ein übergeordnetes Element anwenden, um Flex-Eigenschaften auf das untergeordnete Element anzuwenden.Um Text oder anderen Inhalt eines Flex-Elements vertikal und / oder horizontal zu zentrieren, machen Sie das Element zu einem (verschachtelten) Flex-Container und wiederholen Sie die Zentrierungsregeln.
Weitere Details hier: Wie kann ich Text in einer Flexbox vertikal ausrichten?
Alternativ können Sie
margin: auto
das Inhaltselement des Flex-Elements anwenden .Weitere Informationen zu Flex-
auto
Rändern finden Sie hier: Methoden zum Ausrichten von Flex-Elementen (siehe Kasten Nr. 56).Zentrieren mehrerer Zeilen flexibler Elemente
Wenn ein Flex-Container mehrere Linien hat (aufgrund des Umbruchs), ist die
align-content
Eigenschaft für die Ausrichtung über die Achse erforderlich.Aus der Spezifikation:
Weitere Details hier: Wie funktioniert Flex-Wrap mit Align-Self, Align-Items und Align-Content?
Browser-Unterstützung
Flexbox wird von allen gängigen Browsern außer IE <10 unterstützt . Einige neuere Browserversionen wie Safari 8 und IE10 erfordern Herstellerpräfixe . Verwenden Sie Autoprefixer , um schnell Präfixe hinzuzufügen . Weitere Details in dieser Antwort .
Zentrierlösung für ältere Browser
Eine alternative Zentrierungslösung mit CSS-Tabelle und Positionierungseigenschaften finden Sie in dieser Antwort: https://stackoverflow.com/a/31977476/3597276
quelle
Hinzufügen
auf das Containerelement von allem, was Sie zentrieren möchten. Dokumentation: Inhalt begründen und Elemente ausrichten .
quelle
display: inline-flex
in meinem Fall, aber das war eine einfache Bearbeitung.)Vergessen Sie nicht, wichtige Browser-spezifische Attribute zu verwenden:
Ausrichtungselemente: Mitte; ->
Rechtfertigungsinhalt: Mitte; ->
Sie können diese beiden Links lesen, um flex besser zu verstehen: http://css-tricks.com/almanac/properties/j/justify-content/ und http://ptb2.me/flexbox/
Viel Glück.
quelle
1 - Setzen Sie CSS für übergeordnetes Div auf
display: flex;
2 - Setzen Sie CSS für das übergeordnete Div auf
flex-direction: column;
Beachten Sie, dass dadurch der gesamte Inhalt innerhalb dieser Div-Zeile von oben nach unten verschoben wird. Dies funktioniert am besten, wenn das übergeordnete div nur das untergeordnete und nichts anderes enthält.
3 - Setzen Sie CSS für übergeordnetes Div auf
justify-content: center;
Hier ist ein Beispiel dafür, wie das CSS aussehen wird:
quelle
Sie können nutzen
display: flex; align-items: center; justify-content: center;
auf Ihrer übergeordneten Komponente
https://repl.it/repls/TomatoImaginaryInitialization
quelle
diplay: flex;
denn sein Behälter undmargin:auto;
sein Gegenstand funktionieren perfekt.HINWEIS: Sie müssen das
width
und einrichtenheight
, um den Effekt zu sehen.quelle
Wenn Sie einen Text in einem Link zentrieren müssen, reicht dies aus:
quelle
margin: auto
funktioniert perfekt mit flexbox. Es wird vertikal und horizontal zentralisiert.quelle
ERGEBNIS:
CODE
HTML:
CSS:
Dabei wird
flex-container
div verwendet, um Ihrrows
div vertikal und horizontal zu zentrieren, undrows
div wird verwendet, um Ihre "Elemente" zu gruppieren und sie in einer spaltenbasierten zu ordnen.quelle
quelle
Verwenden von CSS +
Schauen Sie HIER
quelle