Saya memiliki elemen header dan elemen konten:
#header
#content
Saya ingin header memiliki tinggi tetap dan konten memenuhi semua ketinggian yang tersisa di layar, dengan overflow-y: scroll;
.
Apakah ini mungkin tanpa Javascript?
Trik untuk ini adalah menentukan tinggi 100% pada html dan elemen tubuh. Beberapa browser melihat ke elemen induk (html, body) untuk menghitung ketinggian.
<html>
<body>
<div id="Header">
</div>
<div id="Content">
</div>
</body>
</html>
html, body
{
height: 100%;
}
#Header
{
width: 960px;
height: 150px;
}
#Content
{
height: 100%;
width: 960px;
}
lupakan semua jawaban, baris CSS ini bekerja untuk saya dalam 2 detik:
1vh
= 1% dari tinggi layar browsersumber
Untuk penskalaan tata letak responsif, Anda mungkin ingin menggunakan:
[update november 2018] Seperti yang disebutkan di komentar, menggunakan min-height dapat menghindari masalah pada desain yang reponif
[update april 2018] Seperti yang disebutkan di komentar, pada tahun 2011 ketika pertanyaan diajukan, tidak semua browser mendukung unit viewport. Jawaban lainnya adalah solusi saat itu -
vmax
masih belum didukung di IE, jadi ini mungkin belum menjadi solusi terbaik untuk semua.sumber
min-height: 100vh
akan jauh lebih baik. Ini akan menyesuaikan skala untuk desain responsif juga.Sebenarnya pendekatan terbaik adalah ini:
Ini menyelesaikan segalanya untuk saya dan membantu saya mengontrol footer saya dan dapat memiliki footer tetap tidak masalah jika halaman sedang di-scroll ke bawah.
Solusi Teknis - DIEDIT
Secara historis, 'tinggi' adalah hal yang paling sulit untuk dibentuk, dibandingkan dengan 'lebar', yang paling mudah. Karena css fokus pada
<body>
styling agar bekerja. Kode di atas - kami memberi<html>
dan<body>
tinggi. Di sinilah keajaiban muncul - karena kami memiliki 'min-height' di meja bermain, kami memberi tahu browser yang<body>
lebih unggul<html>
karena<body>
memegang min-height. Ini pada gilirannya, memungkinkan<body>
untuk menimpa<html>
karena<html>
ketinggian sudah lebih awal. Dengan kata lain, kami menipu browser untuk "<html>
menggeser " tabel, sehingga kami dapat mengatur gaya sendiri.sumber
min-height
danheight
?<body>
styling agar bekerja. Kode ini: kami memberi<html>
dan<body>
tinggi. Di sinilah keajaiban muncul - karena kami memiliki 'min-height' di meja bermain, kami memberi tahu server yang<body>
lebih unggul<html>
karena<body>
memegang min-height. Ini pada gilirannya, memungkinkan<body>
untuk menimpa<html>
karena<html>
ketinggian sudah lebih awal. Dengan kata lain, kami menipu server untuk "<html>
menggeser " tabel, sehingga kami dapat mengatur gaya secara mandiri.Anda dapat menggunakan vh pada properti min-height.
Anda dapat melakukan hal berikut, tergantung bagaimana Anda menggunakan margin ...
sumber
Solusi yang diterima tidak akan benar-benar berfungsi. Anda akan melihat bahwa isinya
div
akan sama dengan tinggi induknyabody
,. Jadi mengaturbody
tinggi menjadi100%
akan mengaturnya sama dengan tinggi jendela browser. Misalkan jendela browser768px
tingginya, dengan menyeteldiv
tinggi konten menjadi100%
,div
tinggi itu pada gilirannya akan menjadi768px
. Dengan demikian, Anda akan mendapatkan div header150px
dan div konten768px
. Pada akhirnya Anda akan memiliki konten di150px
bawah bagian bawah halaman. Untuk solusi lain, lihat tautan ini.sumber
Dengan HTML5 Anda dapat melakukan ini:
CSS:
HTML:
sumber
Bagi saya, selanjutnya bekerja dengan baik:
Saya membungkus header dan konten pada div
Saya menggunakan referensi ini untuk mengisi ketinggian dengan flexbox. CSS berjalan seperti ini:
Untuk info lebih lanjut tentang teknik flexbox, kunjungi referensinya
sumber
Anda juga dapat mengatur orang tua ke
display: inline
. Lihat http://codepen.io/tommymarshall/pen/cECyHPastikan juga untuk mengatur tinggi html dan body ke 100% juga.
sumber
Jawaban yang diterima tidak berhasil. Dan jawaban pilihan tertinggi tidak menjawab pertanyaan sebenarnya. Dengan header tinggi piksel tetap, dan pengisi di sisa tampilan browser, dan gulir untuk owerflow. Berikut adalah solusi yang benar-benar berfungsi, menggunakan pemosisian absolut. Saya juga berasumsi bahwa tinggi header diketahui, dengan suara "header tetap" dalam pertanyaan. Saya menggunakan 150px sebagai contoh di sini:
HTML:
CSS: (menambahkan warna latar belakang untuk efek visual saja)
Untuk melihat lebih detail bagaimana ini bekerja, dengan konten aktual di dalam
#Content
, lihat jsfiddle ini , menggunakan baris dan kolom bootstrap.sumber
bottom
properti memastikan bahwa#Content
tetap terjebak di akhir halaman. Saya menghargai Anda meluangkan waktu untuk menjelaskannya.Dalam contoh ini saya ingin div konten utama saya menjadi tinggi cair sehingga seluruh halaman menempati 100% dari tinggi browser.
height: 100vh;
sumber
Izinkan saya menambahkan 5 sen saya di sini dan menawarkan solusi klasik:
Ini akan bekerja di semua browser, tanpa skrip, tanpa flex. Buka cuplikan dalam mode halaman penuh dan ubah ukuran browser: proporsi yang diinginkan dipertahankan bahkan dalam mode layar penuh.
catatan:
idHeader.height
danidContent.top
disesuaikan untuk menyertakan border, dan harus memiliki nilai yang sama jika border tidak digunakan. Jika tidak, elemen akan ditarik keluar dari viewport, karena lebar yang dihitung tidak menyertakan batas, margin, dan / atau padding.left:0; right:0;
dapat diganti denganwidth:100%
alasan yang sama, jika tidak ada batas yang digunakan.padding-top
dan / ataupadding-bottom
atribut ke#idOuter
elemen.Untuk melengkapi jawaban saya, berikut adalah tata letak footer:
Dan inilah tata letak dengan header dan footer:
sumber
Kecuali Anda perlu mendukung IE 9 dan di bawahnya, saya akan menggunakan flexbox
Anda juga perlu membuat badan mengisi seluruh halaman
sumber
PLaY CSS | header / footer / tata letak kolom tunggal terpusat lintas browser
Bingkai CSS, versi 2: Contoh 2, lebar yang ditentukan | 456 Berea Street
Satu hal penting adalah bahwa meskipun ini terdengar mudah, akan ada cukup banyak kode jelek yang masuk ke file CSS Anda untuk mendapatkan efek seperti ini. Sayangnya, ini adalah satu-satunya pilihan.
sumber
sumber
Solusi terbaik yang saya temukan sejauh ini adalah mengatur elemen footer di bagian bawah halaman dan kemudian mengevaluasi perbedaan offset footer dan elemen yang perlu kami perluas. misalnya
File html
File css
File js (menggunakan jquery)
Anda mungkin juga ingin memperbarui tinggi elemen konten pada setiap perubahan ukuran jendela, jadi ...
sumber
Sangat sederhana:
sumber
Sudahkah Anda mencoba sesuatu seperti ini?
CSS:
HTML:
sumber