Wie man die letzte Zeile in einem Flex-Container mit align-items nicht überstreckt: stretch

8

Ich habe einen Flex-Container mit flex-wrap: wrap und align-items: stretch , so dass Kinder gedehnt werden, wenn die Größe des Containers angepasst wird, bis das nächste Kind passt.

Das Problem ist normalerweise, dass die letzte Zeile weniger Elemente als vorherige Zeilen hat und Kinder zu sehr gestreckt werden (alle Kästchen sollten in jeder Situation gleich aussehen). Wie kann ich das verhindern, abgesehen davon, dass am Ende des Containers eine Reihe leerer Boxen erstellt wird?

Der vollständige Code ist hier: Ссылка

Es ist im Grunde:

%Vor%

Dabei enthält body eine Menge Elemente mit einer Klasse child .

    
mgol 14.08.2013, 17:26
quelle

3 Antworten

3

Die einzige Lösung, die ich bis jetzt gefunden habe, besteht darin, programmatisch einige leere Kindelemente hinzuzufügen, um eine komplette Zeile zu bilden - es ist in Ordnung, mehr als die Zeile hinzuzufügen, damit sie überlaufen (da sie leer sind). p>     

Dominic Tobias 21.01.2016 11:05
quelle
2

Der einfachste Weg ist, den Flex vom letzten Gegenstand zu entfernen:

%Vor%

Oder geben Sie ihm einen kleinen Bruchteil des Wachstums, damit es auch nicht zu wenig aussieht (besonders wenn alles andere etwas gewachsen ist)

%Vor%

Wenn keiner von beiden funktioniert, füge ein leeres Div als dein letztes Item hinzu und gib ihm ein viel größeres Wachstum - verberge auch irgendwelche Grenzen und Hintergründe und gib ihm eine Höhe von Null, damit es keine andere Linie aufnimmt

%Vor%     
Simo 22.08.2016 03:13
quelle
0

Ich denke, Sie müssten uns JS überprüfen, um zu überprüfen, ob die Breite der letzten n Kindelemente mit der Breite des ersten Elements übereinstimmt. Für jedes Element, das nicht übereinstimmt, unflex es ( flex: none ), dann legen Sie die Breite so fest, dass sie der Breite des ersten Elements entspricht.

Ich habe ein kleines Skript dafür zusammengestellt. Leider müssen Sie die Klasse smoothFlex zu dem Eltern hinzufügen, damit es funktioniert; oder Sie können einen anderen Selektor verwenden.

Ich kenne keine schnelle Möglichkeit, alle Elemente mit einem Stil display: flex auszuwählen.

Ansonsten funktioniert das folgende Skript genau so, wie ich es erwarte.

%Vor%

IMO, der Flexbox-Standard sollte eine native Option dafür haben - sollte standardmäßig sein, wenn der Elternteil eingepackt ist.

Quellen:

MjrKusanagi 21.03.2014 19:54
quelle

Tags und Links