Próbuję utworzyć niektóre arkusze stylów CSS dla listy prostokątów, z zawijaniem, która jest responsywna. Prostokąty mogą zawierać zmienną ilość tekstu. Prostokąty powinny mieć minimalną szerokość 300 pikseli, ale mogą rosnąć, jeśli jest więcej miejsca. Powinno działać bez względu na liczbę prostokątów.Jak uzyskać samotny element w ostatniej linii układu flexbox, aby wyglądał tak samo?
Jest to obraz tego, co chcę, żeby wyglądać, w szerokim ekranie pulpitu normalny pulpit i telefon, z grubsza:
(zdaję sobie sprawę, że większość telefonów i komputerów stacjonarnych są szersze niż w pikselach, ale te numery są łatwiejsze do pracy, jeśli chodzi o kod fragmentów So)
Próbuję trzy techniki, a żaden z nich robić, co chcę.
1. Flexbox nie działa:
Flexbox wydaje się idealny do tego zadania. Problem z implementacją Flexboksa polega na tym, że nie mogę znaleźć sposobu, aby upewnić się, że ostatni prostokąt pozostaje taki sam jak reszta, a jednocześnie pozwala, aby prostokąty rosły na bardzo szerokich ekranach. Oto obraz najlepszy wynik schematu flexbox że mogę wymyślić, który ma problem z ostatniej linii:
Oto kod realizacji schematu flexbox:
.container {
display: flex;
flex-wrap: wrap;
}
.rect {
flex: 1 0 300px;
height: 150px;
}
<div class="container">
<div class="rect" style="background-color: #2F80ED"></div>
<div class="rect" style="background-color: #2D9CDB"></div>
<div class="rect" style="background-color: #56CCF2"></div>
<div class="rect" style="background-color: #A6E2F5"></div>
<div class="rect" style="background-color: #D6EBF2"></div>
</div>
2. float: left
technika nie działa:
Inną responsywną techniką jest używanie pływaków, ale nie mogę znaleźć sposobu na utrzymanie prostokąta o tej samej szerokości (z różną zawartością tekstu), jednocześnie pozwalając im na rozwijanie się na najszerszych ekranach. Oto obraz tego, co skończyło się z:
Oto kod realizacji float: left
:
.container:after {
content: "";
clear: both;
}
.rect {
float: left;
min-width: 300px;
height: 150px;
overflow-y: hidden;
}
<div class="container">
<div class="rect" style="background-color: #2F80ED">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod</div>
<div class="rect" style="background-color: #2D9CDB"></div>
<div class="rect" style="background-color: #56CCF2">Lorem ipsum dolor sit amet, consectetur</div>
<div class="rect" style="background-color: #A6E2F5">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed</div>
<div class="rect" style="background-color: #D6EBF2"></div>
</div>
3. Dlaczego nie zapytań o media?
Szukam rozwiązania, które nie obejmuje zapytań o media, ponieważ zapytania o media pozwalają tylko ustawić warunki na szerokość ekranu, a nie na szerokości .container
.
Typowy problem z układem flex. Wiele podobnych pytań. Oto kilka: [** post 1 **] (http://stackoverflow.com/q/34928565/3597276), [** post 2 **] (http://stackoverflow.com/q/39747988/ 3597276) i [** post 3 **] (http://stackoverflow.com/q/40936543/3597276). –
Dodanie 'max-width: 50%;' do elementu flex może być rozwiązaniem problemu _same size_. Czy skrypt, który zajmie się przełączaniem pulpitu/układu mobilnego, będzie opcjonalny? – LGSon
P.S. Dzięki za bardzo dobrze przygotowane pytanie. –