Saya mencoba mengatur tata letak flexbox dengan tiga kolom di mana kolom kiri dan kanan memiliki lebar tetap, dan kolom tengah tertekuk untuk mengisi ruang yang tersedia.
Meskipun mengatur dimensi untuk kolom, mereka masih tampak menyusut karena jendela menyusut.
Adakah yang tahu bagaimana mencapainya?
Hal tambahan yang perlu saya lakukan adalah menyembunyikan kolom kanan berdasarkan interaksi pengguna, dalam hal ini kolom kiri masih akan tetap memiliki lebar tetap, tetapi kolom tengah akan mengisi sisa ruang.
#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>
Inilah JSFiddle: http://jsfiddle.net/zDd2g/185/
Jawaban:
Alih-alih menggunakan
width
(yang merupakan saran saat menggunakan flexbox), Anda bisa menggunakanflex: 0 0 230px;
yang berarti:0
= jangan tumbuh (kependekan dariflex-grow
)0
= jangan menyusut (singkatan untukflex-shrink
)230px
= mulai pada230px
(singkatan untukflex-basis
)yang berarti: selalu menjadi
230px
.Lihat biola , terima kasih @TylerH
Oh, dan kamu tidak perlu
justify-content
dan dialign-items
sini.sumber
flex-grow
ditentukan (seperti yang dikatakan 1). Biola diperbarui .flex-grow: 1
masih diperlukan untuk kolom cairan di Chrome 53. Jika tidak, tidak akan memakan sisa lebar. Saya kira jawabannya harus mempertimbangkan fakta ini.flex: 0 0 200px
bertingkah sama sepertiwidth: 200px; flex-shrink: 0
.Pengaturan awal wadah fleksibel adalah
flex-shrink: 1
. Itu sebabnya kolom Anda menyusut.Tidak masalah berapa lebar yang Anda tentukan ( bisa jadi
width: 10000px
), denganflex-shrink
lebar yang ditentukan dapat diabaikan dan item fleksibel dicegah agar tidak melebihi wadah.Anda harus menonaktifkan penyusutan. Berikut ini beberapa opsi:
ATAU
ATAU, seperti yang direkomendasikan oleh spesifikasi:
Lebih detail di sini: Apa perbedaan antara basis-fleksibel dan lebar?
Coba ini:
Ini akan memungkinkan kolom tengah untuk mengkonsumsi ruang yang tersedia, termasuk ruang saudara kandungnya ketika mereka dihapus.
Reiddle Fiddle
sumber
flex: 1;
ke tengahdiv
sudah cukup, terima kasih.Kompatibilitas dengan browser yang lebih lama dapat menjadi hambatan, jadi disarankan.
Jika itu bukan masalah, silakan saja. Jalankan cuplikan. Buka tampilan halaman penuh dan ubah ukuran. Center akan mengubah ukurannya sendiri tanpa perubahan ke divs kiri atau kanan.
Ubah nilai kiri dan kanan untuk memenuhi kebutuhan Anda.
Terima kasih.
Semoga ini membantu.
sumber