Mam trzy elementy bloku, które rozmieszczam z CSS Flexbox. (W moim przypadku, w którym się dwa <select>s
po obu stronach elementu <div>ider
; Buduję kontrolę List Builder.)Czy mogę wymusić zawijanie wszystkich elementów za pomocą CSS flexbox?
Co chcę jest:
- Aby środku (dzielnik) zajmują minimalną ilość miejsca.
- Aby element na dowolnym końcu (tj. Elementy sterujące wyborem) miał minimalną szerokość i rozwijał się, aby wypełnić możliwe miejsce.
- Aby mieć wszystkie trzy elementy na jednej linii, gdy nie ma wystarczająco dużo miejsca, poziomy w pojemniku (ex: szerokość przeglądarki)
- Aby wszystkie elementy owinąć pionowo, gdy nie znajduje się wystarczająco dużo miejsca poziomej do pozycji ich wszystkich poziomo.
Flexbox wykonuje wspaniałą pracę z wszystkich tych punktów, z wyjątkiem , z wyjątkiem dla ostatniego wymagania. Nie mogę wymusić, aby elementy były zawijane, jeśli jest ich mniej niż wystarczająco, aby wszystkie były w jednym wierszu.
używam dość prostą konfigurację schematu flexbox osiągnąć układ:
.container {
display: flex;
flex-wrap: wrap;
flex-direction: row;
align-items: center;
}
select {
flex-basis: 10em;
flex-grow: 1;
}
.divider {
flex-basis: 3em;
flex-grow: 0;
text-align: center;
}
Problem z tym jest to, że jeśli szerokość pojemnik jest ustawiony na dowolną kwotę, która jest na tyle szeroki, dla jednego Select Plus dzielnika , zawinie końcowy wybór, ale nie jest dzielnikiem. Dostanę selekcja plus dzielnik w jednej linii, która wygląda brzydko.
skrzypce ilustruje ten problem:
http://jsfiddle.net/5s0yf74w/1/
jest to możliwe do osiągnięcia pożądanego rezultatu przez moją szczypanie CSS zachowując ogólny układ schematu flexbox?