Lebih
Cara membuat div 100% ketinggian jendela browser
Saya memiliki tata letak dua kolom - kiri div
dan kanan div
.
Yang tepat div
memiliki abu-abu background-color
, dan saya perlu untuk memperluas secara vertikal tergantung pada ketinggian dari pengguna's jendela browser. Sekarang background-color
berakhir di bagian terakhir dari konten yang div
.
I've mencoba height:100%
, min-height:100%;
, dll.
2007
31
Ada beberapa CSS 3 unit pengukuran yang disebut:
Viewport-Persentase (atau Viewport-Relatif) Panjang
Apa Pandang-Persentase Panjang?
Dari linked W3 Calon Rekomendasi di atas:
Unit-unit ini
vh
(viewport tinggi),vw
(lebar viewport),vmin
(viewport panjang minimum) danvmax
(viewport panjang maksimum).Bagaimana hal ini dapat digunakan untuk membuat sebuah pembagi mengisi ketinggian browser?
Untuk pertanyaan ini, kita dapat menggunakan
vh
:1vh
adalah sama dengan 1% dari viewport's tinggi. Itu adalah untuk mengatakan,100vh
adalah sama dengan ketinggian dari jendela browser, terlepas dari di mana unsur yang terletak dalam DOM tree:HTML
CSS
Ini adalah benar-benar semua yang's diperlukan. Berikut ini adalah [JSFiddle contoh][2] ini di gunakan.
Apa browser mendukung unit-unit baru?
Ini adalah saat ini didukung pada semua up-to-date utama browser selain Opera Mini. Check out yang Bisa saya gunakan... untuk dukungan lebih lanjut.
Bagaimana hal ini dapat digunakan dengan beberapa kolom?
Dalam kasus pertanyaan di tangan, menampilkan kiri dan kanan pembagi, berikut adalah [JSFiddle contoh][4] menampilkan dua kolom layout yang melibatkan kedua
vh
danvw
.Bagaimana
100vh
berbeda dengan100%
?Mengambil tata letak ini misalnya:
P
tag berikut ini di set ke 100% tinggi, tetapi karena mengandungdiv
memiliki 200 piksel tinggi, 100% 200 piksel menjadi 200 piksel, tidak 100% daritubuh
tinggi. Menggunakan100vh
bukan berartip
tag akan 100% ketinggiantubuh
terlepas daridiv
tinggi. Lihatlah ini [menyertai JSFiddle][5] untuk dengan mudah melihat perbedaan!Jika anda ingin mengatur ketinggian
<div>
atau unsur apapun, anda harus mengatur ketinggian<body>
dan<html>
100% juga. Kemudian anda dapat mengatur ketinggian elemen dengan 100% :)Berikut ini sebuah contoh:
Jika anda mampu untuk benar-benar posisi elemen anda,
akan melakukannya.
Anda dapat menggunakan view-port satuan dalam CSS:
HTML:
CSS:
Anda dapat menggunakan
vh
dalam hal ini yang relatif ke 1% dari ketinggian viewport...Itu berarti jika anda ingin untuk menutupi off yang tinggi, hanya menggunakan
100vh
.Terlihat pada gambar di bawah ini saya menarik untuk anda berikut ini:
Mencoba cuplikan yang saya buat untuk anda sebagai berikut:
Semua solusi lainnya, termasuk top-sebagai salah satu dengan
vh
sub-optimal bila dibandingkan dengan flex model solusi.Dengan munculnya CSS flex model, pemecahan ketinggian 100% masalah menjadi sangat, sangat mudah: gunakan
height: 100%; display: flex
pada orang tua, danflex: 1
pada elemen anak. Mereka'akan secara otomatis mengambil semua ruang yang tersedia di wadah mereka.Perhatikan cara sederhana markup dan CSS. Tidak ada meja hacks atau apa pun.
Flex model didukung oleh semua browser utama serta IE11+.
Pelajari lebih lanjut tentang flex model berikut ini.
Anda don't menyebutkan beberapa rincian penting seperti:
Berikut ini's salah satu kemungkinan:
Ada banyak variasi ini tergantung pada kolom mana yang perlu diperbaiki dan yang cair. Anda dapat melakukan ini dengan posisi mutlak juga, tapi saya've umumnya ditemukan hasil yang lebih baik (terutama dalam hal cross-browser) menggunakan mengapung sebagai gantinya.
Ini adalah apa yang bekerja untuk saya:
Gunakan
posisi:tetap
bukanposisi:absolut
, yang cara bahkan jika anda gulir ke bawah divisi akan memperluas ke ujung layar.Berikut ini's untuk memperbaiki tinggi.
Di CSS anda gunakan:
Untuk browser yang don't dukungan
vh-unit
, menggunakan modernizr.Tambahkan script ini (untuk menambahkan deteksi untuk
vh-unit
)Akhirnya menggunakan fungsi ini untuk menambahkan tinggi viewport untuk
#anda-objek
jika browser doesn't dukunganvh-unit
:100%
bekerja dengan cara yang berbeda untuk lebar dan tinggi.Ketika anda menentukan
width: 100%
, itu berarti "mengambil 100% dari yang tersedia lebar dari elemen induk atau lebar dari jendela."Ketika anda menentukan
height: 100%
, itu hanya berarti "mengambil 100% dari tinggi tersedia dari elemen induk." Ini berarti jika anda don't menentukan ketinggian di atas tingkat elemen, ketinggian dari semua anak-anak akan menjadi baik0
atau tinggi dari orang tua, dan itulah mengapa anda perlu untuk mengatur elemen paling atas untuk memilikimin-height
dari jendela tinggi.Saya selalu menentukan tubuh untuk memiliki min-height 100vh dan itu membuat posisi dan perhitungan yang mudah,
Tambahkan
min-height: 100%
dan don't menentukan ketinggian (atau meletakkannya di auto). Itu benar-benar melakukan pekerjaan untuk saya:100vw === 100% dari lebar viewport.
100vh === 100% dari ketinggian viewport.
Jika anda ingin mengatur
div
lebar atau tinggi 100% dari browser-jendela-ukuran harus anda gunakan:Untuk lebar:
100vw
Untuk ketinggian:
100vh
Atau jika anda ingin mengatur ukuran yang lebih kecil, gunakan CSS
calc
fungsi. Contoh:Ini bekerja untuk saya:
Diambil dari halaman ini.
Ada beberapa metode yang tersedia untuk pengaturan ketinggian
<div>
100%.Metode (A):
Metode (B) menggunakan vh:
Metode (c) menggunakan flex box:
Cobalah untuk mengatur
height:100%
dihtml
&tubuh
Dan jika anda ingin 2 div ketinggian sama, menggunakan atau mengatur elemen induk
display:flex
properti.Hanya gunakan "vh" unit bukan "px", yang berarti melihat-port tinggi.
Di sini adalah sesuatu yang tidak persis seperti apa yang anda miliki dalam jawaban sebelumnya, tetapi hal ini dapat membantu untuk beberapa:
https://jsfiddle.net/newdark/qyxkk558/10/
Blok elemen mengkonsumsi lebar penuh dari orang tua mereka, secara default.
Ini adalah bagaimana mereka memenuhi persyaratan desain, yang tersusun secara vertikal.
Perilaku ini, namun, tidak meluas ke tinggi.
Secara default, kebanyakan unsur ketinggian konten mereka (
height: auto
).Tidak seperti dengan lebar, anda perlu menentukan ketinggian jika anda ingin ruang ekstra.
Oleh karena itu, menjaga dua hal dalam pikiran:
Penggunaan FlexBox CSS
Flexbox sangat cocok untuk jenis masalah ini. Sementara sebagian besar dikenal untuk meletakkan konten dalam arah horisontal, Flexbox benar-benar bekerja sama dengan baik untuk tata letak vertikal masalah. Semua yang harus anda lakukan adalah membungkus bagian vertikal dalam wadah flex dan memilih mana yang anda inginkan untuk memperluas. Mereka akan secara otomatis mengambil semua ruang yang tersedia di wadah mereka.
Salah satu pilihan adalah menggunakan CSS meja. Ini memiliki besar browser mendukung dan bahkan bekerja di Internet Explorer 8.
[JSFiddle Contoh][1]