display: inline-flex
macht nicht flex Produkte inline angezeigt werden soll . Dadurch wird die Anzeige des Flex-Containers inline angezeigt. Das ist der einzige Unterschied zwischen display: inline-flex
und display: flex
. Ein ähnlicher Vergleich kann zwischen display: inline-block
und display: block
und so ziemlich jedem anderen Anzeigetyp mit einem Inline-Gegenstück durchgeführt werden . 1
Es gibt absolut keinen Unterschied in der Wirkung auf flexible Gegenstände; Das Flex-Layout ist identisch, unabhängig davon, ob der Flex-Container auf Block- oder Inline-Ebene ausgeführt wird. Insbesondere verhalten sich die Flex-Elemente selbst immer wie Boxen auf Blockebene (obwohl sie einige Eigenschaften von Inline-Blöcken aufweisen). Sie können Flex-Elemente nicht inline anzeigen. Andernfalls haben Sie kein flexibles Layout.
Es ist nicht klar, was genau Sie unter "vertikal ausrichten" verstehen oder warum genau Sie den Inhalt inline anzeigen möchten, aber ich vermute, dass Flexbox nicht das richtige Werkzeug für alles ist, was Sie erreichen möchten. Möglicherweise suchen Sie nur nach einem alten Inline-Layout ( display: inline
und / oder display: inline-block
), für das die Flexbox kein Ersatz ist. Flexbox ist nicht die universelle Layoutlösung , von der jeder behauptet, dass sie es ist (ich sage dies, weil das Missverständnis wahrscheinlich der Grund ist, warum Sie Flexbox überhaupt in Betracht ziehen).
1 Die Unterschiede zwischen Blocklayout und Inline-Layout liegen außerhalb des Rahmens dieser Frage. Am auffälligsten ist jedoch die automatische Breite: Felder auf Blockebene werden horizontal gestreckt, um den enthaltenen Block zu füllen, während Felder auf Inline-Ebene verkleinert werden, um sie anzupassen Inhalt. Nur aus diesem Grund werden Sie es fast nie verwenden, es display: inline-flex
sei denn, Sie haben einen sehr guten Grund, Ihren Flex-Container inline anzuzeigen.
inline-flex
undflex
: jsfiddle.net/mgr0en3q/1 Original-Geige von @ fish-graphics und @astridxOK, ich weiß zunächst, dass es vielleicht etwas verwirrend ist, aber
display
ich spreche über das übergeordnete Element. Das heißt, wenn wir sagen :display: flex;
, geht es um das Element und wenn wir sagendisplay:inline-flex;
, macht es auch das Element selbstinline
...Es ist, als würde man eine
div
Inline oder einen Block erstellen, das folgende Snippet ausführen und sehen, wiedisplay flex
die nächste Zeile abbricht:Erstellen Sie auch schnell das folgende Bild, um den Unterschied auf einen Blick zu zeigen:
quelle
flex
undinline-flex
beide wenden ein flexibles Layout auf untergeordnete Elemente des Containers an. Container mitdisplay:flex
verhält sich wie ein Element auf Blockebene, während sichdisplay:inline-flex
der Container wie ein Inline-Element verhält.quelle
Der Unterschied zwischen "Flex" und "Inline-Flex"
Kurze Antwort:
Einer ist inline und der andere reagiert im Grunde wie ein Blockelement (hat aber einige seiner eigenen Unterschiede).
Längere Antwort:
Inline-Flex - Die Inline-Version von Flex ermöglicht es dem Element und seinen untergeordneten Elementen, Flex-Eigenschaften zu haben, während es weiterhin im regulären Fluss des Dokuments / der Webseite verbleibt. Grundsätzlich können Sie zwei Inline-Flex-Container in derselben Reihe platzieren, wenn die Breiten klein genug sind, ohne dass ein übermäßiges Styling erforderlich ist, damit sie in derselben Reihe vorhanden sind. Dies ist ziemlich ähnlich zu "Inline-Block".
Flex - Der Container und seine untergeordneten Elemente haben Flex-Eigenschaften, aber der Container reserviert die Zeile, da sie aus dem normalen Fluss des Dokuments entfernt wird. Es reagiert in Bezug auf den Dokumentenfluss wie ein Blockelement. Zwei Flexbox-Container könnten ohne übermäßiges Styling nicht in derselben Reihe vorhanden sein.
Das Problem, das Sie möglicherweise haben
Aufgrund der Elemente, die Sie in Ihrem Beispiel aufgelistet haben, möchten Sie, obwohl ich vermute, Flex verwenden, um die aufgelisteten Elemente gleichmäßig zeilenweise anzuzeigen, aber die Elemente weiterhin nebeneinander anzeigen.
Der Grund, warum Sie wahrscheinlich Probleme haben, ist, dass für Flex und Inline-Flex die Standardeigenschaft "Flex-Richtung" auf "Zeile" festgelegt ist. Dadurch werden die Kinder nebeneinander angezeigt. Wenn Sie diese Eigenschaft in "Spalte" ändern, können Ihre Elemente Platz (Breite) stapeln und reservieren, der der Breite des übergeordneten Elements entspricht.
Im Folgenden finden Sie einige Beispiele, die zeigen, wie Flex vs Inline-Flex funktioniert, sowie eine kurze Demo, wie Inline vs Block-Elemente funktionieren ...
Geige
Geige
Geige
Geige
Geige
Geige
Außerdem ein großartiges Referenzdokument: Eine vollständige Anleitung zu Flexbox - CSS - Tricks
quelle
Anzeige: Flex Wendet das Flex-Layout nur auf die Flex-Elemente oder untergeordneten Elemente des Containers an. Der Container selbst bleibt also ein Element auf Blockebene und nimmt somit die gesamte Breite des Bildschirms ein.
Dadurch wird jeder Flex-Container in eine neue Zeile auf dem Bildschirm verschoben.
Anzeige: Inline-Flex wendet das Flex-Layout auf die Flex-Elemente oder untergeordneten Elemente sowie auf den Container selbst an. Infolgedessen verhält sich der Container wie die untergeordneten Elemente wie ein Inline-Flex-Element und nimmt somit die Breite ein, die nur für seine Elemente / untergeordneten Elemente erforderlich ist, und nicht die gesamte Breite des Bildschirms.
Dies führt dazu, dass zwei oder mehr Flex-Container nacheinander, die als Inline-Flex angezeigt werden, nebeneinander auf dem Bildschirm ausgerichtet werden, bis die gesamte Breite des Bildschirms erfasst ist.
quelle
Sie benötigen etwas mehr Informationen, damit der Browser weiß, was Sie wollen. Zum Beispiel muss den Kindern des Containers gesagt werden, wie sie sich beugen sollen.
Geige aktualisiert
Ich habe hinzugefügt ,
#wrapper > * { flex: 1; margin: auto; }
um Ihre CSS und geändertinline-flex
zuflex
, und Sie können sehen , wie die Elemente nun selbst Raum heraus gleichmäßig auf der Seite.quelle
Zum besseren Verständnis auf der ganzen Seite öffnen
quelle