Bagaimana cara mengetahui baris tata letak flexbox mengonsumsi ruang vertikal yang tersisa di jendela browser?
Saya memiliki tata letak flexbox 3 baris. Dua baris pertama memiliki tinggi tetap, tetapi baris ketiga dinamis dan saya ingin membuatnya setinggi browser.
Saya memiliki flexbox lain di baris-3 yang membuat satu set kolom. Untuk menyesuaikan elemen dengan benar dalam kolom ini, saya membutuhkannya untuk memahami ketinggian penuh browser - untuk hal-hal seperti warna latar belakang dan perataan item di pangkalan. Tata letak utama pada akhirnya akan menyerupai ini:
.vwrapper {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: stretch;
align-content: stretch;
//height: 1000px;
}
.vwrapper #row1 {
background-color: red;
}
.vwrapper #row2 {
background-color: blue;
}
.vwrapper #row3 {
background-color: green;
flex 1 1 auto;
display: flex;
}
.vwrapper #row3 #col1 {
background-color: yellow;
flex 0 0 240px;
}
.vwrapper #row3 #col2 {
background-color: orange;
flex 1 1;
}
.vwrapper #row3 #col3 {
background-color: purple;
flex 0 0 240px;
}
<body>
<div class="vwrapper">
<div id="row1">
this is the header
</div>
<div id="row2">
this is the second line
</div>
<div id="row3">
<div id="col1">
col1
</div>
<div id="col2">
col2
</div>
<div id="col3">
col3
</div>
</div>
</div>
</body>
Saya sudah mencoba menambahkan height
atribut, yang berfungsi saat saya menyetelnya ke angka pasti tetapi tidak saat saya menyetelnya 100%
. Saya mengerti height: 100%
tidak berfungsi, karena konten tidak mengisi jendela browser, tetapi dapatkah saya mereplikasi ide tersebut menggunakan tata letak flexbox?
Jawaban:
Anda harus menetapkan
height
darihtml, body, .wrapper
ke100%
(untuk tinggi penuh mewarisi) dan kemudian hanya menetapkanflex
lebih besar nilai dari1
untuk.row3
dan bukan pada orang lain.DEMO
sumber
atur pembungkus ke tinggi 100%
dan atur baris ke-3 menjadi flex-grow
demo
sumber
Mari saya tunjukkan cara lain yang berhasil 100%. Saya juga akan menambahkan beberapa padding sebagai contoh.
Seperti yang Anda lihat, kami dapat mencapai ini dengan beberapa pembungkus untuk kontrol sambil menggunakan atribut flex-grow & flex-direction.
1: Ketika induk "flex-direction" adalah "row", anaknya "flex-grow" bekerja secara horizontal. 2: Jika induk "flex-direction" adalah "kolom", anaknya "flex-grow" bekerja secara vertikal.
Semoga ini membantu
Daniel
sumber
div
berlebihan.flex-pad-y
:) Anda