Berikut kode yang saya gunakan untuk mencapai tata letak di atas:
.header {
height: 50px;
}
.body {
position: absolute;
top: 50px;
right: 0;
bottom: 0;
left: 0;
display: flex;
}
.sidebar {
width: 140px;
}
.main {
flex: 1;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
display: flex;
}
.column {
padding: 20px;
border-right: 1px solid #999;
}
<div class="header">Main header</div>
<div class="body">
<div class="sidebar">Sidebar</div>
<div class="main">
<div class="page-header">Page Header. Content columns are below.</div>
<div class="content">
<div class="column">Column 1</div>
<div class="column">Column 1</div>
<div class="column">Column 1</div>
</div>
</div>
</div>
Saya menghilangkan kode yang digunakan untuk styling. Anda dapat melihat semuanya di pena .
Di atas berfungsi, tetapi ketika content
konten daerah meluap, itu membuat seluruh halaman gulir. Saya hanya ingin area konten itu sendiri bergulir, jadi saya menambahkannya overflow: auto
ke content
div .
Masalah dengan ini sekarang adalah bahwa kolom itu sendiri tidak melampaui ketinggian orang tua mereka, sehingga perbatasan terputus di sana juga.
Inilah pena yang menunjukkan masalah pengguliran .
Bagaimana saya bisa mengatur content
area untuk menggulir secara mandiri, sementara anak-anaknya masih melampaui content
ketinggian kotak?
sumber
Saya baru saja menyelesaikan masalah ini dengan sangat elegan setelah banyak mencoba-coba.
Lihat posting blog saya: http://geon.github.io/programming/2016/02/24/flexbox-full-page-web-app-layout
Pada dasarnya, untuk membuat sel flexbox dapat digulir, Anda harus membuat semua orang tuanya
overflow: hidden;
, atau hanya akan mengabaikan pengaturan overflow Anda dan membuat orang tua lebih besar.sumber
Bekerja
position:absolute;
bersama denganflex
:Posisikan item fleksibel dengan
position: relative
. Lalu di dalamnya, tambahkan<div>
elemen lain dengan:Ini memperluas elemen ke batas-batas induknya yang diposisikan relatif, tetapi tidak memungkinkan untuk memperpanjangnya. Di dalam,
overflow: auto;
maka akan berfungsi seperti yang diharapkan.Semoga berhasil...
sumber
box-sizing: border-box
tetapi itu bisa lebih rumit untuk kontrol pihak ketiga tertentu).Agak terlambat tetapi ini bisa membantu: http://webdesign.tutsplus.com/tutorials/how-to-make-respon-scrollable-panels-with-flexbox--cms-23269
Pada dasarnya Anda perlu memasukkan
html
,body
ke ,height: 100%;
dan membungkus semua konten Anda menjadi a<div class="wrap"> <!-- content --> </div>
CSS:
Bekerja untukku. Semoga ini bisa membantu
sumber
Tambahkan ini:
ke aturan untuk
.content {}
. Itu memperbaikinya di pena Anda untuk saya, setidaknya (di kedua Firefox & Chrome).Secara default,
.content
hasalign-items: stretch
, yang membuatnya mengukur semua anak dengan tinggi otomatis agar sesuai dengan tinggi badannya sendiri, per http://dev.w3.org/csswg/css-flexbox/#algo-stretch . Sebaliknya, nilaiflex-start
memungkinkan anak-anak menghitung ketinggian mereka sendiri, dan menyelaraskan diri mereka sendiri pada ujung awalnya (dan meluap, dan memicu bilah gulir).sumber
Salah satu masalah yang saya temui adalah bahwa untuk memiliki scrollbar elemen perlu ketinggian yang ditentukan (dan bukan sebagai%).
Caranya adalah dengan menumpuk satu set div lain di dalam setiap kolom, dan mengatur tampilan induk kolom untuk melentur dengan arah-fleksibel: kolom.
Dan inilah htmlnya:
https://jsfiddle.net/LiamFlavelle/czpjdfr4/
sumber
Solusi untuk masalah ini adalah dengan menambahkan
overflow: auto;
.content untuk membuat pembungkus konten dapat digulir.Selain itu, ada keadaan yang terjadi bersama dengan pembungkus Flexbox dan
overflowed
konten yang dapat digulir seperti codepen ini .Solusinya adalah menambahkan
overflow: hidden (or auto);
induk dari pembungkus (diatur dengan overflow: otomatis;) di sekitar konten besar.sumber