Próbuję skonfigurować układ Flexbox z trzema kolumnami, w których lewa i prawa kolumna mają stałą szerokość, a środkowa kolumna wygina się, aby wypełnić dostępną przestrzeń.
Pomimo ustawienia wymiarów kolumn nadal wydają się kurczyć, gdy okno się kurczy.
Czy ktoś wie, jak to osiągnąć?
Dodatkową rzeczą, którą muszę zrobić, jest ukrycie prawej kolumny na podstawie interakcji użytkownika, w którym to przypadku lewa kolumna nadal zachowałaby stałą szerokość, ale środkowa kolumna wypełniłaby resztę przestrzeni.
#container {
display: flex;
justify-content: space-around;
align-items: stretch;
max-width: 1200px;
}
.column.left {
width: 230px;
}
.column.right {
width: 230px;
border-left: 1px solid #eee;
}
.column.center {
border-left: 1px solid #eee;
}
<div id="container">
<div class="column left">
<p>Anxiety was a blog series that ran in the New York Times Opinion section from January 2012 to July 2013. It featured essays, fiction, and art by a wide range of contributors that explored anxiety from scientific, literary, and artistic perspectives.</p>
</div>
<div class="column center">
<img src="http://i.imgur.com/60PVLis.png" width="100" height="100" alt="">
</div>
<div class="column right">
Balint Zsako
<br/> Someone’s Knocking at My Door
<br/> 01.12.13
</div>
</div>
Oto JSFiddle: http://jsfiddle.net/zDd2g/185/
Odpowiedzi:
Zamiast używać
width
(co jest sugestią przy korzystaniu z Flexboksa), możesz użyćflex: 0 0 230px;
co oznacza:0
= nie rosnąć (skrót odflex-grow
)0
= nie zmniejszaj się (skrót odflex-shrink
)230px
= start o230px
(skrót odflex-basis
)co oznacza: zawsze bądź
230px
.Zobacz skrzypce , dzięki @TylerH
Aha, i nie potrzebne
justify-content
ialign-items
tutaj.źródło
flex-grow
zdefiniowana (jak powiedzmy 1). Zaktualizowano skrzypce .flex-grow: 1
jest nadal potrzebny do kolumny płynu w Chrome 53. W przeciwnym razie nie zajmowałby reszty szerokości. Przypuszczam, że odpowiedź powinna uwzględniać ten fakt.flex: 0 0 200px
działa tak samo jakwidth: 200px; flex-shrink: 0
.Początkowe ustawienie elastycznego pojemnika to
flex-shrink: 1
. Dlatego twoje kolumny się kurczą.Nie ma znaczenia, jaką szerokość określisz ( może być
width: 10000px
), przyflex-shrink
określonej szerokości można zignorować, a elementy elastyczne nie przepełnią kontenera.Musisz wyłączyć zmniejszanie. Oto kilka opcji:
LUB
LUB, zgodnie z zaleceniami specyfikacji:
Więcej informacji tutaj: Jakie są różnice między podstawą elastyczną a szerokością?
Spróbuj tego:
Umożliwi to środkowej kolumnie zajęcie dostępnego miejsca, w tym miejsca jego rodzeństwa, gdy zostaną usunięte.
Zmienione skrzypce
źródło
flex: 1;
do centrumdiv
wystarczyło.Kompatybilność ze starszymi przeglądarkami może być trudna, więc radzę.
Jeśli to nie jest problem, śmiało. Uruchom fragment kodu. Przejdź do pełnego widoku strony i zmień rozmiar. Centrum zmieni rozmiar bez żadnych zmian dla lewego lub prawego div.
Zmień lewą i prawą wartość, aby spełnić Twoje wymagania.
Dziękuję Ci.
Mam nadzieję że to pomoże.
źródło