Wie vertikal ausrichten text innerhalb einer flexbox?
Möchte ich nutzen, flex-box, um vertikal ausrichten manche Inhalte innerhalb eines <li>
aber nicht mit großem Erfolg.
Habe ich online geprüft und viele der tutorials eigentlich eine wrapper-div, das bekommt der align-items:center
von der flex-Einstellungen auf der übergeordneten, aber ich Frage mich, ist es möglich, schneiden Sie das zusätzliche element?
Ich habe entschieden, mit flex-box in diesem Fall als das Listenelement Höhe wird ein dynamisches %.
CSS:
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
}
ul {
height: 100%;
}
li {
display: flex;
justify-content: center;
align-self: center;
background: silver;
width: 100%;
height: 20%;
}
HTML:
<ul>
<li>This is the text</li>
</ul>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit: Bitte verwenden Sie Die Antwort von Michael_B anstelle von mir.
Ich würde löschen Sie diese Antwort, wenn ich könnte, aber akzeptierte Antworten können nicht gelöscht werden.
Wenn Sie die
flex-direction
vertikal (mitcolumn
) dannjustify-content: center
Zentren vertikal. Dann können Sie einfachtext-align: center
zu Mitte horizontal als auch.Hier ein arbeiten demo auf codepen.
a
strong
em
.height: 100%;
fürdiv
machen, damit es funktioniert.align-items: center
)Anstatt
align-self: center
verwendenalign-items: center
.Es gibt keine Notwendigkeit zu ändern
flex-direction
oder verwenden Sietext-align
(wie vorgeschlagen in eine andere Antwort).Hier ist Ihr code, der mit einer Anpassung, damit es alle arbeiten:
Den
align-self
Eigenschaft gilt für flex-Elemente. Außer Ihrli
ist nicht ein flex-Element, weil seine Eltern – dieul
– nichtdisplay: flex
oderdisplay: inline-flex
angewendet.Daher, die
ul
ist nicht ein flex-container, dieli
ist nicht ein flex-Element, undalign-self
hat keine Wirkung.Den
align-items
Eigenschaft ähneltalign-self
, außer es gilt zu flex-Container.Da die
li
ist ein flex-container,align-items
verwendet werden können, um vertikal zentrieren Sie die untergeordneten Elemente.CSS:
HTML:
codepen-demo
Technisch, hier ist, wie
align-items
undalign-self
Arbeit...Den
align-items
Eigenschaft (auf den container) setzt den default-Wert vonalign-self
(auf den items). Daheralign-items: center
bedeutet, dass alle flex items werden aufalign-self: center
.Aber Sie können diesen Standardwert überschreiben, indem Sie die Anpassung der
align-self
auf einzelne Elemente.Zum Beispiel, möchten Sie vielleicht gleich Höhe Spalten, so wird der container ist festgelegt
align-items: stretch
. Jedoch, ein Element muss fixiert werden, an der Spitze, so ist es festgelegtalign-self: flex-start
.Beispiel
Wie ist der text ein flex-Element?
Einige Leute Wundern sich vielleicht, wie ein run-of-text...
ist ein Kind-element von der
li
.Der Grund ist, dass text, der nicht explizit gewickelt, die durch ein inline-level element ist algorithmisch eingewickelt durch eine inline-box. Dies macht es zu einem anonyme inline-element und Kind der Eltern.
Aus der CSS-spec:
Des flexbox-Spezifikation bietet ein ähnliches Verhalten.
Daher, den text in der
li
ist ein flex-Element.align-items: baseline
. Gut für die unterschiedlichen Höhen kommen aus verschiedenen unicode-chars etc.Für zukünftige Googler,
Den meisten Stimmen beantworten und den zweiten am meisten zu, sind für die Lösung dieses spezielle problem gepostet von OP, wobei der Inhalt(text) wurde als "algorithmic-ally" wird verpackt in inline-block-element. ABER Ihr Fall könnte in etwa zentrieren einer normalen element vertikal in einem container, der, die auch in meinem Fall, also für das, dass alles, was Sie brauchen, ist
Nur darum, dies hier, da dies das top-Ergebnis für die oben erwähnten Abfrage und auch ich war ziemlich verwirrt seit geraumer Zeit * Derp *
Der beste Zug ist, um nur nest einer flexbox innerhalb einer flexbox. Alles, was Sie tun müssen ist, geben das Kind
align-items: center
. Diese wird vertikal ausrichten text innerhalb des übergeordneten Elements ein.CSS:
HTML:
Könnte man ändern die
ul
undli
zeigttable
undtable-cell
. Dannvertical-align
für Sie arbeiten würde:http://codepen.io/anon/pen/pckvK
display:table
/display:table-cell
Technik ist nützlich für die meisten element-Hierarchie... Also, ich Stimme zu, es ist nicht gewählt zu werden, als die korrekte Antwort, aber ich hoffe, es hilft jemand.