Dlaczego w CSS Flexbox nie ma właściwości „justify-items” i „justify-self”?

676

Rozważ główną oś i oś poprzeczną elastycznego pojemnika:

wprowadź opis zdjęcia tutaj                                                                                                                                                    Źródło: W3C

Aby wyrównać elementy elastyczne wzdłuż głównej osi, istnieje jedna właściwość:

Aby wyrównać elementy elastyczne wzdłuż osi poprzecznej, istnieją trzy właściwości:

Na powyższym zdjęciu główna oś jest pozioma, a oś poprzeczna pionowa. Są to domyślne kierunki elastycznego kontenera.

Jednak te kierunki można łatwo zamieniać z flex-directionwłaściwością.

/* main axis is horizontal, cross axis is vertical */
flex-direction: row;
flex-direction: row-reverse;

/* main axis is vertical, cross axis is horizontal */    
flex-direction: column;
flex-direction: column-reverse;

(Oś poprzeczna jest zawsze prostopadła do osi głównej.)

Chodzi mi o to, żeby opisać, jak działają osie, że wydaje się, że w żadnym kierunku nie ma nic specjalnego. Oś główna, oś poprzeczna, oba są równe pod względem ważności iflex-direction ułatwiają przełączanie w przód iw tył.

Dlaczego więc oś poprzeczna ma dwie dodatkowe właściwości wyrównania?

Dlaczego align-contenti są align-itemsskonsolidowane w jedną właściwość dla głównej osi?

Dlaczego oś główna nie otrzymuje justify-selfwłaściwości?


Scenariusze, w których te właściwości byłyby przydatne:

  • umieszczenie elementu elastycznego w rogu pojemnika elastycznego
    #box3 { align-self: flex-end; justify-self: flex-end; }

  • tworzenie grupy elementów elastycznych wyrównywanie do prawej ( justify-content: flex-end), ale pierwszy element wyrównywanie do lewej ( justify-self: flex-start)

    Rozważ sekcję nagłówka z grupą elementów nawigacyjnych i logo. Dzięki justify-selflogo można wyrównać w lewo, podczas gdy elementy nawigacyjne pozostają daleko w prawo, a całość płynnie dostosowuje się („wygina”) do różnych rozmiarów ekranu.

  • w rzędzie trzech elastycznych elementów przymocuj środkowy element do środka pojemnika ( justify-content: center) i wyrównaj sąsiednie przedmioty do krawędzi pojemnika ( justify-self: flex-starti justify-self: flex-end).

    Należy zauważyć, że wartości space-aroundi space-betweenna justify-contentnieruchomości nie będzie utrzymywać pozycję środkową skupia około pojemnika jeśli sąsiednie elementy mają różne szerokości.

wersja jsFiddle


W tym piśmie nie ma wzmianki o specyfikacji Flexboxjustify-self ani justify-itemso niej .

Jednak w CSS Box Alignment Module , który jest niedokończoną propozycją W3C dotyczącą ustanowienia wspólnego zestawu właściwości wyrównania do użytku we wszystkich modelach pudełek, jest to:

wprowadź opis zdjęcia tutaj                                                                                                                                                    Źródło: W3C

Zauważysz to justify-selfi justify-itemsrozważasz ... ale nie dla Flexboksa .


Na koniec powtórzę główne pytanie:

Dlaczego nie ma właściwości „justify-items” i „justify-self”?

Michael Benjamin
źródło
4
Jak spodziewałbyś justify-selfsię pracować dla elementu elastycznego? Załóżmy, że masz przedmioty a, b, c, d z dodatkową przestrzenią do rozmieszczenia wokół nich, a elastyczny pojemnik ma justify-content: space-between, więc kończą jak | abcd |. Co oznaczałoby dodanie np. justify-self: center„Justify-self: flex-end” tylko do pozycji „b”? Gdzie byś się spodziewał? (Widzę kilka wersji demonstracyjnych w jednej z odpowiedzi tutaj, ale nie widzę jasnego sposobu, aby to w ogóle działało.)
dholbert
(Alternatywnie: załóżmy, że mamy justify-content: flex-start, więc elementy są na początku zatłoczone, jak | abcd |. Czego byś się spodziewał, gdybyś włożył tam justify-self: [anything]przedmiot „b”?)
dholbert
1
@dholbert, napisałeś: Jak miałbyś justify-selfpracować dla elementu elastycznego? Powiedziałbym, że nie inaczej niż automarginesy, które już działają na elementach elastycznych. W drugim przykładzie justify-self: flex-endelement d przesunąłby go na drugą stronę. To samo w sobie byłoby świetną funkcją, której automarże mogą już zrobić. Odpowiedziałem z demonstracją.
Michael Benjamin
2
Przede wszystkim jestem coraz więcej przypadków użycia tutaj, i przypadków użycia są świetne - ale trudne bit jest jak łyżka do butów to do rzeczywistej sposób, że justify-contenti justify-selfsą określone tak, że przypadki konfliktów (jak scenariuszach Pytałem o) są jasno i rozsądnie zdefiniowane. Jak zauważyłem w mojej odpowiedzi tutaj, {justify|align}-selfchodzi o wyrównywanie elementów w większym pudełku, który ma wymiary niezależnie od {justify|align}-selfwartości - i nie ma takiego pudełka, w głównej osi, do którego mógłby zostać dopasowany element elastyczny.
dholbert,
1
RE „nie różni się od auto marginesów” - właściwie pytałem o to, jak sobie wyobrażasz justify-selfi jak byś wchodził w justify-contentinterakcje, w przypadkach, gdy są one sprzeczne (np. Scenariusze, które przedstawiłem). Automatyczne marginesy po prostu w ogóle nie wchodzą w interakcje justify-content- kradną całą przestrzeń pakowania, zanim justify-contentmają szansę z niej skorzystać. Automatyczne marginesy nie są tak naprawdę dobrym analogiem do tego, jak to by działało.
dholbert,

Odpowiedzi:

1251

Metody wyrównywania elementów Flex wzdłuż głównej osi

Jak stwierdzono w pytaniu:

Aby wyrównać elementy elastyczne wzdłuż głównej osi, istnieje jedna właściwość: justify-content

Aby wyrównać Flex elementów wzdłuż osi przekroju istnieją trzy właściwości: align-content, align-itemsialign-self .

Pytanie brzmi:

Dlaczego nie ma justify-itemsi justify-selfwłaściwości?

Jedna odpowiedź może brzmieć: ponieważ nie są one konieczne.

Specyfikacja Flexbox zapewnia dwie metody wyrównywania elementów elastycznych wzdłuż głównej osi:

  1. Właściwość justify-contentsłowa kluczowego oraz
  2. auto marginesy

justify-content

W justify-contentwyrównuje własności wyginają przedmiotów wzdłuż głównej osi elastycznego pojemnika.

Jest nakładany na elastyczny pojemnik, ale wpływa tylko na elastyczne przedmioty.

Istnieje pięć opcji wyrównania:

  • flex-start ~ Przedmioty Flex są pakowane na początku linii.

    wprowadź opis zdjęcia tutaj

  • flex-end ~ Przedmioty Flex są pakowane pod koniec linii.

    wprowadź opis zdjęcia tutaj

  • center ~ Przedmioty Flex są pakowane w kierunku środka linii.

    wprowadź opis zdjęcia tutaj

  • space-between~ Elementy elastyczne są równomiernie rozmieszczone, przy czym pierwszy element jest wyrównany do jednej krawędzi pojemnika, a ostatni element do przeciwległej krawędzi. Krawędzie używane przez pierwszych i ostatnich pozycji zależy flex-directioni trybu zapisu ( ltrlub rtl).

    wprowadź opis zdjęcia tutaj

  • space-around~ To samo, co space-betweenz wyjątkiem pół-wielkości spacji na obu końcach.

    wprowadź opis zdjęcia tutaj


Automatyczne marginesy

Dzięki automarginesom elementy elastyczne mogą być wyśrodkowane, oddalone lub spakowane w podgrupy.

W przeciwieństwie do tego justify-content, który jest stosowany do kontenera elastycznego, automarginesy idą na elementach elastycznych.

Działają, zużywając całą wolną przestrzeń w określonym kierunku.


Dopasuj grupę elementów elastycznych do prawej, a pierwszą pozycję do lewej

Scenariusz z pytania:

  • tworzenie grupy elementów elastycznych wyrównywanie do prawej ( justify-content: flex-end), ale pierwszy element wyrównywanie do lewej ( justify-self: flex-start)

    Rozważ sekcję nagłówka z grupą elementów nawigacyjnych i logo. Dzięki justify-selflogo można wyrównać w lewo, podczas gdy elementy nawigacyjne pozostają daleko w prawo, a całość płynnie dostosowuje się („wygina”) do różnych rozmiarów ekranu.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj


Inne przydatne scenariusze:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj


Umieść element elastyczny w rogu

Scenariusz z pytania:

  • umieszczenie elementu elastycznego w rogu .box { align-self: flex-end; justify-self: flex-end; }

wprowadź opis zdjęcia tutaj


Wyśrodkuj element flex w pionie i poziomie

wprowadź opis zdjęcia tutaj

margin: autojest alternatywą dla justify-content: centeri align-items: center.

Zamiast tego kodu na kontenerze Flex:

.container {
    justify-content: center;
    align-items: center;
}

Możesz użyć tego na elemencie flex:

.box56 {
    margin: auto;
}

Ta alternatywa jest przydatna podczas centrowania elementu elastycznego, który przepełnia pojemnik .


Wyśrodkuj element flex i wyśrodkuj drugi element flex między pierwszym a krawędzią

Elastyczny pojemnik wyrównuje elastyczne przedmioty, rozdzielając wolne miejsce.

Dlatego, aby uzyskać równą równowagę , aby środkowy element mógł być wyśrodkowany w pojemniku z jednym elementem obok, należy wprowadzić przeciwwagę.

W poniższych przykładach wprowadzono niewidoczne trzecie elementy elastyczne (pola 61 i 68) w celu zrównoważenia „rzeczywistych” przedmiotów (pola 63 i 66).

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Oczywiście ta metoda nie jest świetna pod względem semantyki.

Alternatywnie możesz użyć pseudoelementu zamiast rzeczywistego elementu DOM. Lub możesz użyć pozycjonowania bezwzględnego. Omówiono tutaj wszystkie trzy metody: elementy Flex wyśrodkowane i wyrównane do dołu

UWAGA: Powyższe przykłady będą działać - pod względem prawdziwego centrowania - tylko wtedy, gdy najbardziej zewnętrzne elementy mają równą wysokość / szerokość. Gdy elementy elastyczne mają różne długości, zobacz następny przykład.


Wyśrodkuj element elastyczny, gdy sąsiednie elementy różnią się rozmiarem

Scenariusz z pytania:

  • w rzędzie trzech elastycznych elementów przymocuj środkowy element do środka pojemnika ( justify-content: center) i wyrównaj sąsiednie przedmioty do krawędzi pojemnika ( justify-self: flex-starti justify-self: flex-end).

    Uwaga: wartości space-around i space-betweenna justify-contentnieruchomości nie będzie utrzymywać pozycję środkową centralnie w stosunku do pojemnika, jeśli sąsiednie elementy mają różne szerokości ( patrz demo ).

Jak wspomniano, chyba że wszystkie elementy Flex mają równą szerokość lub wysokość (w zależności od flex-direction), środkowy element nie może być naprawdę wyśrodkowany. Ten problem jest silnym argumentem za justify-selfwłaściwością (oczywiście zaprojektowaną do obsługi zadania).

Oto dwie metody rozwiązania tego problemu:

Rozwiązanie nr 1: Absolutne pozycjonowanie

Specyfikacja Flexbox pozwala na absolutne pozycjonowanie elementów flex . Dzięki temu środkowy element może być idealnie wyśrodkowany, niezależnie od wielkości rodzeństwa.

Pamiętaj tylko, że podobnie jak wszystkie absolutnie ustawione elementy, elementy są usuwane z dokumentów . Oznacza to, że nie zajmują miejsca w pojemniku i mogą zachodzić na swoje rodzeństwo.

W poniższych przykładach środkowy element jest wyśrodkowany z absolutnym pozycjonowaniem, a elementy zewnętrzne pozostają w ruchu. Ale ten sam układ można osiągnąć odwrotnie: Wyśrodkuj środkowy element justify-content: centeri absolutnie ustaw zewnętrzne elementy.

wprowadź opis zdjęcia tutaj

Rozwiązanie nr 2: Zagnieżdżone kontenery Flex (bez absolutnego pozycjonowania)

.container {
  display: flex;
}
.box {
  flex: 1;
  display: flex;
  justify-content: center;
}
.box71 > span { margin-right: auto; }
.box73 > span { margin-left: auto;  }

/* non-essential */
.box {
  align-items: center;
  border: 1px solid #ccc;
  background-color: lightgreen;
  height: 40px;
}
<div class="container">
  <div class="box box71"><span>71 short</span></div>
  <div class="box box72"><span>72 centered</span></div>
  <div class="box box73"><span>73 loooooooooooooooong</span></div>
</div>

Oto jak to działa:

  • Div najwyższego poziomu (.container ) to elastyczny kontener.
  • Każde dziecko div (.box ) jest teraz elementem elastycznym.
  • Każdy .boxprzedmiot jest podanyflex: 1 w celu równego podziału miejsca w pojemniku.
  • Teraz przedmioty zajmują całe miejsce w rzędzie i mają równą szerokość.
  • Ustaw każdy element jako (zagnieżdżony) elastyczny pojemnik i dodaj justify-content: center .
  • Teraz każdy span element jest wyśrodkowanym elementem elastycznym.
  • Użyj automarginesów elastycznych, aby przesunąć zewnętrzne spanlewe i prawe.

Możesz także zrezygnować justify-contenti użyćauto wyłącznie marginesów.

Ale justify-contentmoże tu działać, ponieważ automarginesy zawsze mają priorytet. Ze specyfikacji:

8.1 Wyrównanie do auto marginesów

Przed wyrównaniem za pomocą justify-contenti align-self, dowolna dodatnia wolna przestrzeń jest rozdzielana na automatyczne marginesy w tym wymiarze.


justify-content: space-same (koncepcja)

Wracając do justify-contentminuty, oto pomysł na jeszcze jedną opcję.

  • space-same~ Hybryda space-betweeni space-around. Elementy elastyczne są równomiernie rozmieszczone (jak space-between), z tym wyjątkiem, że na obu końcach (jak space-around) zamiast pół-wielkości znajdują się spacje na obu końcach.

Układ ten można osiągnąć ::beforei ::afterpseudo-elementów na giętkim opakowaniu.

wprowadź opis zdjęcia tutaj

(kredyt: @oriol dla kodu i @crl dla etykiety)

AKTUALIZACJA: Przeglądarki rozpoczęły wdrażanie space-evenly, które spełnia powyższe wymagania. Zobacz ten post, aby uzyskać szczegółowe informacje: Równa przestrzeń między elementami elastycznymi


PLAC ZABAW (zawiera kod dla wszystkich powyższych przykładów)

Michael Benjamin
źródło
1
Odpowiedź powyżej stronach pokryw main-osiowych , justify-contenta automarże. Na drugiej stronie monety - poprzeczna , align-items, align-selfi align-content- patrz ten post: stackoverflow.com/q/42613359/3597276
Michael Benjamin
4
@ MarkW, uzasadniasz justify-selfwłaściwość ... automarginesy są pomocne, ale justify-self: centerbyłyby idealne. Sposób rozwiązania przedstawionego problemu polegałby na utworzeniu niewidocznych duplikatów po przeciwnej stronie. Zobacz moją odpowiedź tutaj: stackoverflow.com/q/38948102/3597276
Michael Benjamin
5
Twoja space-samekoncepcja jest teraz prawdziwa. Nazywa się space-evenly, ale w tej chwili jest obsługiwany tylko przez Firefox: developer.mozilla.org/en-US/docs/Web/CSS/justify-content
benface
1
@benface, Tak, masz rację. Dzięki za zwrócenie na to uwagi. Właściwie pisałem space-evenlyw innych odpowiedziach: stackoverflow.com/q/45134400/3597276
Michael Benjamin
1
W rzeczywistości space-evenly był obsługiwany w Chrome 57-60, ale tylko dla układu siatki. To był błąd, który został naprawiony, a od Chrome 61 jest tam obsługiwany również dla Flexbox. Ponadto, nie jest droga do naśladowania go bez pseudo-elementy: .item { margin-right: auto } .item:first-child { margin-left: auto }.
Ilya Streltsyn
154

Wiem, że to nie jest odpowiedź, ale chciałbym przyczynić się do tej sprawy za to, co jest warte. Byłoby wspaniale, gdyby mogli wypuścić justify-selfFlexbox, aby uczynić go naprawdę elastycznym.

Uważam, że gdy na osi znajduje się wiele elementów, najbardziej logicznym sposobem justify-selfzachowania jest wyrównanie się do najbliższych sąsiadów (lub krawędzi), jak pokazano poniżej.

Mam nadzieję, że W3C to zauważy i przynajmniej to rozważy. =)

wprowadź opis zdjęcia tutaj

W ten sposób możesz mieć przedmiot, który jest naprawdę wyśrodkowany, niezależnie od wielkości lewego i prawego pudełka. Kiedy jedno z pudeł dotrze do punktu środkowego pudełka, po prostu je popchnie, aż nie będzie już miejsca do rozdzielenia.

wprowadź opis zdjęcia tutaj

Łatwość tworzenia niesamowitych układów jest nieograniczona, spójrz na ten „złożony” przykład.

wprowadź opis zdjęcia tutaj

znak
źródło
12
@ Zaznacz, że to niesamowite! Dziękujemy za poświęcenie czasu na przygotowanie tego. Mam nadzieję, że nie masz nic przeciwko, ale przesłałem go tutaj: discourse.wicg.io/t/flexbox-justify-self-property/1146
Zaqx
1
@Zaqx na pewno, im więcej ekspozycji, tym lepiej. Poważnie mam nadzieję, że znajdą sposób, aby urzeczywistnić tę rzeczywistość, chętnie zabrudzą mi to ręce.
Mark
1
Cześć Mark, @Zaqx, zamieściłem odpowiedź, która może obejmować niektóre przypadki użycia wymienione w tej odpowiedzi. Odkryłem, że nadal można wiele zrobić w głównej osi bez potrzeby justify-selfi justify-items.
Michael Benjamin,
3
@Michael_B Cieszę się, że uczysz się więcej o Flexbox i doceniasz fakt, że poświęciłeś czas na sformatowanie notatek w odpowiedź. Margines: auto jest naprawdę fajne (chociaż przekonasz się, że przeglądarki, które zaimplementowały wersje Flexbox 2009 i 2012, nie mają równoważnej funkcji, która drastycznie ogranicza możliwość korzystania z niego na stronie produkcyjnej). Jednak nawet w przeglądarkach, które obsługują margines: auto, główny przypadek użycia przedmiotu, który jest wyśrodkowany względem swojego kontenera, gdy jest miejsce, jest nadal niemożliwy bez właściwości justify-just lub podobnej.
Zaqx,
1
@Zaqx, dzięki za opinie. I tak, zgadzam się z tobą, automarże nie są kompletnym substytutem justify-self. Starałem się sformułować mój poprzedni komentarz, mówiąc, że automarginesy będą obejmować niektóre przypadki użycia . Jak zauważyłeś, nie może wyśrodkować przedmiotu na miejscu, gdy sąsiednie przedmioty mają różne rozmiary. Zapewnia jednak więcej opcji wyrównywania elementów elastycznych. Kiedy zacząłem uczyć się o flexboksie, pomyślałem, justify-contentże jedynym sposobem są niewidoczne elementy dystansowe.
Michael Benjamin
20

Zapytano o to na liście w stylu www, a Tab Atkins (edytor specyfikacji) udzielił odpowiedzi wyjaśniającej dlaczego . Opowiem o tym trochę tutaj.

Na początek załóżmy, że nasz elastyczny pojemnik jest jednokreskowy (flex-wrap: nowrap ). W tym przypadku istnieje wyraźna różnica w wyrównaniu między osią główną i osią poprzeczną - na osi głównej znajduje się wiele elementów, ale tylko jeden element jest ułożony na osi poprzecznej. Dlatego sensowne jest posiadanie „align-self” z możliwością dostosowywania dla każdego elementu w osi poprzecznej (ponieważ każdy element jest wyrównywany osobno), podczas gdy nie ma to sensu w głównej osi (ponieważ tam elementy są wyrównywane zbiorowo).

W przypadku wieloliniowego flexboksa ta sama logika ma zastosowanie do każdej „linii flex”. W danym wierszu elementy są wyrównywane indywidualnie w osi poprzecznej (ponieważ jest tylko jeden element w wierszu, w osi poprzecznej), a kolektywnie w osi głównej.


Oto kolejny sposób frazowania go: tak, wszystko z *-selfi *-contentwłaściwości są o tym, jak rozpowszechniać dodatkową przestrzeń wokół rzeczy. Ale kluczową różnicą jest to, że *-selfwersje są przeznaczone dla przypadków, w których na tej osi jest tylko jedna rzecz , a *-contentwersje są, gdy istnieje potencjalnie wiele rzeczy na tej osi . Scenariusze „jedna rzecz kontra wiele rzeczy” to różne rodzaje problemów, więc mają różne rodzaje dostępnych opcji - na przykład wartości space-around/ space-betweenmają sens *-content, ale nie dla*-self .

SO: W głównej osi Flexboksa istnieje wiele rzeczy do rozłożenia wokół. Więc *-contentwłasności sens tam, ale nie*-self właściwość.

Natomiast w osi poprzecznej mamy zarówno właściwość *-selfa, jak i *-contentwłaściwość. Jeden określa, w jaki sposób rozdzielimy przestrzeń wokół wielu linii elastycznych ( align-content), a drugi ( align-self) określa, jak rozmieścić przestrzeń wokół poszczególnych osób elementów wygięcia w osi poprzecznej, w obrębie danej linii wygięcia.

(Ignoruję *-itemstutaj właściwości, ponieważ po prostu ustalają wartości domyślne *-self).

dholbert
źródło
1
Rozumiem, jak justify-selfmoże być problem na osi z wieloma przedmiotami, a nie z jednym przedmiotem. Jednak naprawdę mam nadzieję, że przyjrzą się temu dalej, w sytuacji wielu przedmiotów, jak się justify-selfzachowają, ponieważ są sytuacje, w których może to być naprawdę przydatne. Na przykład ( stackoverflow.com/questions/32378953/... ).
Mark
Niezłe znalezisko na tej liście mailingowej. Próbuję owinąć głowę, ponieważ wciąż widzę dobre możliwości użycia justify-self.
Michael Benjamin
Dodałem nieco więcej wyjaśnień, wyjaśniając, w jaki sposób *-selfchodzi o przypadki, w których mamy tylko jedną rzecz do wyrównania, podczas gdy *-contentchodzi o przypadki, w których mamy wiele rzeczy do wyrównania. Czy to czyni to nieco jaśniejszym?
dholbert
Tak, jest bardziej jasne. Doceniam wyjaśnienie. Ale wszystko wydaje się sprowadzać do prostej preferencji autorów specyfikacji, a nie do szczególnej potrzeby opartej na logice. Z listy adresowej, do której się odwołujesz : Właściwości * -self działają tylko wtedy, gdy dziecko jest całkowicie osamotnione w tej osi.Dlaczego? Wydaje się, że nie ma takiej potrzeby. To arbitralna decyzja. Preferencja. W rzeczywistości automarginesy, również będące częścią specyfikacji, umożliwiają wyrównanie * -self z wieloma elementami w wierszu. Nie ma też wyraźnego powodu, dla którego właściwości słów kluczowych również nie mogą.
Michael Benjamin
1

Wiem, że nie używa Flexboksa, ale w przypadku prostego przypadku użycia trzech elementów (jeden po lewej, jeden w środku, jeden po prawej), można to łatwo zrobić display: gridna rodzicu, grid-area: 1/1/1/1;na dzieciach i justify-selfdo pozycjonowania tych dzieci.

<div style="border: 1px solid red; display: grid; width: 100px; height: 25px;">
  <div style="border: 1px solid blue; width: 25px; grid-area: 1/1/1/1; justify-self: left;"></div>
  <div style="border: 1px solid blue; width: 25px; grid-area: 1/1/1/1; justify-self: center;"></div>
  <div style="border: 1px solid blue; width: 25px; grid-area: 1/1/1/1; justify-self: right;"></div>
</div>

Venryx
źródło
Dzięki za odpowiedź, ale tak naprawdę nie odpowiada na pytanie. Istnieje również prostszy sposób na osiągnięcie układu: jsfiddle.net/fga89m2o
Michael Benjamin
0

Właśnie znalazłem własne rozwiązanie tego problemu, a przynajmniej mojego problemu.
Użyłem justify-content: space-aroundzamiastjustify-content: space-between; .

W ten sposób elementy końcowe zostaną przyklejone do góry i dołu, a Ty możesz mieć niestandardowe marginesy, jeśli chcesz.

Leif Messinger LOAF
źródło