2017-02-11 13 views
8

Moim problemem jest to, że chcę flexbox o zmiennej szerokości zakresu i wszystko działa dobrze, ale nie w ostatnim rzędzie. Chcę tego samego wymiaru dla wszystkich dzieci, nawet jeśli rząd nie jest pełen dzieci (ostatni rząd).Kierowanie elementów flex w ostatnim wierszu

#products-list { 
    position:relative; 
    display: flex; 
    flex-flow: row wrap; 
    width:100%; 
} 

#products-list .product { 
    min-width:150px; 
    max-width:250px; 
    margin:10px 10px 20px 10px; 
    flex:1; 
} 

Moi Flex DIV może kurczyć aż 150 pikseli i dorastają do 250 pikseli, ale wszystkie muszą być tego samego rozmiaru (i oczywiście chcę rozwiązanie CSS, z JS Znam drogę).

Odpowiedz

14

Niestety, w obecnej iteracji flexbox (poziom 1) nie ma prostego sposobu na rozwiązanie problemu z wyrównaniem ostatniego rzędu. To powszechny problem.

Dobrze byłoby mieć właściwości elastycznego wzdłuż linii:

  • last-row
  • last-column
  • only-child-in-a-row
  • alone-in-a-column

Problem ten wydaje się być wysoki priorytet dla Flexbox Level 2:

Mimo to zachowanie jest trudne do osiągnięcia w schematu flexbox, to proste i łatwe w CSS Siatka Układ:

W przypadku siatki nie jest opcją, oto lista podobnych pytań zawierających różne hacki schematu flexbox:

+2

Fajna recopilation! Powiedziałbym, że to jest odpowiedź ** meta ** ... – vals

+3

Ta odpowiedź ma ten sam problem co książki w dzisiejszych czasach: zbyt wiele informacji => nikt go nie czyta. Byłoby miło mieć TL; DR; sekcja (szybka naprawa). –

+0

@AndreiGheorghiu, Nie wiem, jak szybko rozwiązać ten problem. W rzeczywistości sam problem jest różny. Jeśli masz uniwersalne rozwiązanie, powinieneś opublikować odpowiedź. –

0

Jako szybkie i brudne rozwiązanie można użyć:

.my-flex-child:last-child/*.product:last-child*/ { 
    flex-grow: 100;/*Or any number big enough*/ 
}