Saya memiliki elemen div pada halaman saya dengan ketinggian diatur ke 100%. Ketinggian tubuh juga diatur ke 100%. Bagian dalam div memiliki latar belakang dan semua itu dan berbeda dari latar belakang tubuh. Ini berfungsi untuk membuat ketinggian div 100% dari tinggi layar browser, tetapi masalahnya adalah saya memiliki konten di dalam div itu yang meluas secara vertikal melampaui ketinggian layar browser. Ketika saya gulir ke bawah, div berakhir pada titik di mana Anda harus mulai menggulir halaman, tetapi konten meluap melebihi itu. Bagaimana cara membuat div selalu berjalan jauh ke bawah agar sesuai dengan konten batin?
Berikut penyederhanaan CSS saya:
body {
height:100%;
background:red;
}
#some_div {
height:100%;
background:black;
}
Setelah saya menggulir halaman, kegelapan berakhir dan konten mengalir ke latar belakang merah. Tampaknya tidak masalah apakah saya mengatur posisi ke relatif atau absolut pada #some_div, masalah terjadi dengan cara apa pun. Konten di dalam #some_div sebagian besar benar-benar diposisikan, dan secara dinamis dihasilkan dari database sehingga tingginya tidak dapat diketahui sebelumnya.
Sunting: Ini adalah tangkapan layar masalah:
overflow: hidden;
,overflow: scroll;
, dll).Jawaban:
Inilah yang harus Anda lakukan dalam gaya CSS
div
Dan jangan disentuh
height
sumber
height: 100%
kehtml, body
dan div kontainer untuk membuatnya mengisi tinggi ketika tidak ada cukup konten sekalipun.display: block;
dibutuhkan? Div sudah menjadi elemen tingkat blok.
, hapus mereka. Coba juga untuk menyesuaikan ketinggian garis. Sebagai contoh saya sudah meletakkanline-height: 0
, karena saya tidak perlu teks, hanya untuk menunjukkan gambar.Atur
height
toauto
danmin-height
to100%
. Ini harus menyelesaikannya untuk sebagian besar browser.sumber
height
adalah100%
danmin-height
adalahauto
- saya harapkan ini bisa saling dalam hal ini, tapi terlihat seperti mereka tidak.Biasanya masalah ini muncul ketika elemen Anak dari Div Induk mengambang. Inilah Solusi Terbaru dari masalah:
Dalam file CSS Anda, tulis kelas berikut bernama .clearfix bersama dengan pemilih semu : setelah
Kemudian, di HTML Anda, tambahkan kelas .clearfix ke Div orang tua Anda. Sebagai contoh:
Itu harus selalu berhasil. Anda dapat memanggil nama kelas sebagai .group daripada .clearfix , karena akan membuat kode lebih semantik. Perhatikan bahwa, Tidak perlu menambahkan titik atau bahkan spasi dalam nilai Konten di antara kutip ganda "". Juga, overflow: otomatis; mungkin menyelesaikan masalah tetapi menyebabkan masalah lain seperti menampilkan bilah gulir dan tidak disarankan.
Sumber: Blog Lisa Catalano dan Chris Coyier
sumber
Jika Anda hanya meninggalkan
height: 100%
dan menggunakandisplay:block;
yangdiv
akan mengambil ruang sebanyak isi di dalamdiv
. Dengan cara ini semua teks akan tetap berada di latar belakang hitam.sumber
display: block
? Saya tidak melihat itu dalam pertanyaan Anda.float: none;
, gunakanclear:both;
. Itu melakukan hal yang sama tetapi lebih lintas-browser, @RonnieVDPoelPertanyaan ini mungkin sudah lama, tetapi perlu diperbarui. Berikut cara lain untuk melakukannya:
sumber
Coba ini:
IE6 dan versi sebelumnya tidak mendukung properti min-height.
Saya pikir masalahnya adalah ketika Anda memberi tahu tubuh untuk memiliki tinggi 100%, latar belakangnya hanya setinggi hieght dari satu "viewport" browser (area tampilan yang tidak termasuk bilah alat peramban & statusbars & menubar dan tepi jendela). Jika konten lebih tinggi dari satu viewport, itu akan meluap ketinggian yang dikhususkan untuk latar belakang.
Properti min-height pada bodi ini harus membuat latar belakang FORCE setidaknya setinggi satu viewport jika konten Anda tidak mengisi satu halaman penuh ke bawah, namun juga membiarkannya tumbuh ke bawah untuk mencakup lebih banyak konten interior.
sumber
Pertanyaan lama, tetapi dalam kasus saya saya menemukan menggunakan
position:fixed
menyelesaikannya untuk saya. Situasi saya mungkin sedikit berbeda. Saya memiliki semi transparan overlaydiv
dengan animasi memuat di dalamnya yang saya perlu ditampilkan saat halaman sedang memuat. Jadi menggunakanheight:auto / 100%
ataumin-height: 100%
keduanya mengisi jendela tetapi bukan area di luar layar. Menggunakanposition:fixed
overlay ini membuat gulir dengan pengguna, sehingga selalu menutupi area yang terlihat dan membuat animasi preloading saya terpusat di layar.sumber
Cukup tambahkan dua baris ini di id css Anda #some_div
Setelah itu Anda akan mendapatkan apa yang Anda cari!
sumber
Saya tidak sepenuhnya yakin bahwa saya telah memahami pertanyaan itu karena ini adalah jawaban yang cukup mudah, tetapi begini ... :)
Sudahkah Anda mencoba mengatur properti overflow wadah agar terlihat atau otomatis?
Menambahkan yang seharusnya mendorong wadah hitam ke ukuran apa pun yang dibutuhkan wadah dinamis Anda. Saya lebih suka terlihat otomatis karena tampaknya otomatis datang dengan scroll bar ...
sumber
Browser modern mendukung unit "tinggi viewport". Ini akan memperluas div ke ketinggian viewport yang tersedia. Saya merasa lebih dapat diandalkan daripada pendekatan lain.
sumber
Bahkan kamu bisa melakukan seperti ini
Ini akan mencakup setiap div dinamis Anda sesuai konten. Misalkan jika Anda memiliki div umum dengan kelas, maka akan menambah tinggi setiap div dinamis sesuai dengan kontennya
sumber
Anda juga bisa menggunakan
punyaku bekerja dengan ini
sumber
OVERLAY TANPA POSISI: TETAP
Cara yang sangat keren. Saya telah menemukan ini untuk menu baru-baru ini adalah mengatur tubuh untuk:
dan atur kelas pembungkus Anda seperti ini:
Ini berarti Anda tidak perlu mengatur posisi tetap dan masih dapat memungkinkan untuk menggulir. Saya telah menggunakan ini untuk overlay menu yang BENAR-BENAR besar.
sumber
gunakan flex
sumber
Ok, saya mencoba sesuatu seperti ini:
tubuh (normal)
Ini bukan cara yang tepat untuk menulisnya, tetapi jika Anda membuat tampilan div utama sebagai sebuah tabel, itu akan mengembang dan kemudian saya menerapkan scroll bar.
sumber