Dimensionierung von flexiblen Artikeln in der letzten Reihe
Lesezeit: 7 Minuten
Baro
Mein Problem ist, dass ich die Flexbox mit variabler Bereichsbreite haben möchte, und alles funktioniert gut, aber nicht in der letzten Reihe. Ich möchte die gleiche Dimension für alle Kinder, auch wenn die Reihe nicht voll von Kindern ist (die letzte Reihe).
Meine Flex-Divs können bis 150px schrumpfen und bis 250px wachsen, aber alle müssen die gleiche Größe haben (und natürlich will ich eine CSS-Lösung, mit JS kenne ich mich aus).
Michael Benjamin
Leider gibt es in der aktuellen Iteration von Flexbox (Level 1) keine saubere Möglichkeit, das Ausrichtungsproblem der letzten Zeile zu lösen. Es ist ein allgemeines Problem.
Es wäre nützlich, eine Flex-Eigenschaft wie folgt zu haben:
last-row
last-column
only-child-in-a-row
alone-in-a-column
Dieses Problem scheint für Flexbox Level 2 eine hohe Priorität zu haben:
Obwohl dieses Verhalten in Flexbox schwer zu erreichen ist, ist es einfach und leicht in CSS-Grid-Layout:
Flexartikel mit gleicher Breite auch nach dem Wickeln
Falls Grid keine Option ist, finden Sie hier eine Liste ähnlicher Fragen mit verschiedenen Flexbox-Hacks:
Korrekte Dimensionierung und Ausrichtung der Flex-Elemente in der letzten Reihe
Flexbox: Letzte Reihe am Raster ausrichten
Flexbox Wrap – andere Ausrichtung für die letzte Reihe
Wie kann ein flexibles Element die gleichen Abmessungen behalten, wenn es in eine neue Reihe gezwungen wird?
Selektor für ein Element allein in einer Reihe?
Ausrichten von Elementen in der letzten Flexbox-Reihe
Wie kann ich zulassen, dass Flex-Elemente wachsen, während sie dieselbe Größe behalten?
Richten Sie die letzte Zeile der Flexbox mit Abstand zwischen und Rändern linksbündig aus
Inkonsistenter Rand zwischen Flex-Elementen in der letzten Reihe
Wie hält man umwickelte Flex-Elemente auf der gleichen Breite wie die Elemente in der vorherigen Reihe?
So richten Sie die linke letzte Zeile/Zeile in einer mehrzeiligen Flexbox aus
Die letzten Kinder des Grids bekommen eine riesige Rinne, weil zwischen den Flexboxen Platz ist
Verwalten von justify-content: space-between in der letzten Zeile
Flexbox-Abstand zwischen Verhalten kombiniert mit Umbruch
Ist es möglich, CSS Flexbox zu verwenden, um Elemente in jeder Zeile zu dehnen und dabei konsistente Breiten beizubehalten?
Verhindern Sie, dass sich der letzte Artikel ausdehnt, um den Behälter zu füllen
Diese Antwort hat das gleiche Problem wie Bücher heutzutage: zu viele Informationen => niemand liest sie. Wäre schön gewesen, ein TL; DR zu haben; Abschnitt (schnelle Lösung).
– tao
28. April 2017 um 10:05 Uhr
@AndreiGheorghiu, ich kenne keine schnelle Lösung für dieses Problem. Tatsächlich ist das Problem selbst unterschiedlicher Natur. Wenn Sie eine universelle Lösung haben, sollten Sie eine Antwort posten.
– Michael Benjamin
28. April 2017 um 12:09 Uhr
Auch für jemanden, der diese Antwort nur zu Bildungszwecken liest, denke ich, dass Sie Recht haben. Nur wenige, wenn überhaupt, werden die gesamte Linkliste durchgehen.
– Michael Benjamin
28. April 2017 um 12:10 Uhr
Aber für jemanden, der diese Seite besucht, der braucht dringend eine Lösung, würde ich argumentieren, dass sie jeden einzelnen Link durchgehen werden, in der Hoffnung, eine Methode zu finden, die funktioniert. Basierend auf den Upvotes zu dieser Antwort und Dieses hier Und Dieses hier (siehe “Randbemerkung” unten), würde ich sagen, dass zumindest einige Leute die Referenzen nützlich finden.
– Michael Benjamin
28. April 2017 um 12:11 Uhr
@Michael_B, ich hatte nicht die Geduld, alle Links durchzugehen und zu prüfen, ob jemand einen js-Fix dafür gefunden hat, also habe ich meinen eigenen gemacht, für den Sonderfall, wenn es kein bestimmtes Raster (oder bekannte Kindbreite) gibt. . Nur Kinder mit variabler Breite, die letzte Zeile sollte linksbündig ausgerichtet sein, während die vorherigen Zeilen gestreckt werden sollten, um die volle Größe auszufüllen.
– tao
28. Juni 2017 um 14:59 Uhr
Boris D. Teoharov
Als schnelle und schmutzige Lösung kann man verwenden:
.my-flex-child:last-child/*.product:last-child*/ {
flex-grow: 100;/*Or any number big enough*/
}
Sollte das nicht sein flex-grow: 0? OP will „dasselbe Maß für alle Kinder, auch wenn die Reihe nicht voller Kinder ist“. flex-grow: 100 würde möglicherweise dazu führen, dass das Element die Breite seines übergeordneten Elements ausfüllt.
– fullStackChris
22. April 2020 um 10:40 Uhr
Selbst wenn flex-grow: 0 ist, würde dies immer noch dazu führen, dass das vorletzte Element wächst, um diese Breite anzunehmen.
– Matt Eland
8. Juli 2020 um 21:33 Uhr
Sie könnten hier versuchen, Grid anstelle von Flexbox zu verwenden:
Wenn alle Ihre Zeilen die gleiche Anzahl von Elementen haben, können Sie verwenden :nth-last-child. Wenn beispielsweise alle Zeilen 3 Elemente enthalten, können Sie so etwas tun, um den Rand der letzten 3 Elemente zu entfernen:
Hier Ich habe ein Beispiel auf erstellt Codestift die auch Marge implementiert.
Die zweite und die dritte Bedingung können jeweils vermieden werden, indem Sie CSS-Variablen verwenden (wenn Sie sich entschieden haben, dies zu unterstützen) und das obige scss-Snippet kompilieren.
Stimmt, wir könnten es auch vor Flexbox machen, aber display: flex kann für ein responsives Design dennoch unerlässlich sein.
simi
Es gibt eine großartige Lösung, die immer funktioniert. fügen Sie ein div mit dem Klassenprodukt hinzu (dieselbe Klasse für andere Elemente, die unter Flex sind) und fügen Sie einen Stil für dieses div:height:0px hinzu; Sie müssen so viele Tauchgänge wie möglich in einer Reihe hinzufügen.
<div class="product" style="height:0px">
so viele, wie in einer Reihe sein können. Das ist alles. Funktioniert immer.
Ich würde sagen, es ist eher ein Hack als eine großartige Lösung, besonders in Situationen, in denen Sie die Anzahl nicht im Voraus kennen.
– Crollywood
11. Oktober 2021 um 11:47 Uhr
Es ist eine großartige Lösung, denn wenn Sie die Anzahl nicht im Voraus kennen und möchten, dass die letzte Reihe immer bleibt !!! perfekt, dann ist es ein sehr einfacher Weg. Arbeite immer großartig. funktioniert auf allen Größen. Nichts kann besser sein als diese Lösung.
– ähnlich
12. Oktober 2021 um 13:48 Uhr
14492900cookie-checkDimensionierung von flexiblen Artikeln in der letzten Reiheyes