Saya mencoba untuk menetapkan <div>
tinggi persentase tertentu di CSS, tetapi ukurannya tetap sama dengan konten di dalamnya. Namun ketika saya menghapus HTML 5 <!DOCTYTPE html>
, ia berfungsi, <div>
mengambil seluruh halaman seperti yang diinginkan. Saya ingin halaman divalidasi, jadi apa yang harus saya lakukan?
Saya memiliki CSS ini di <div>
, yang memiliki ID dari page
:
#page {
padding: 10px;
background-color: white;
height: 90% !important;
}
height
properti CSS dengan nilai persentase: stackoverflow.com/a/31728799/3597276Jawaban:
Persentase dari apa?
Untuk mengatur persentase tinggi, elemen induknya (*) harus memiliki tinggi eksplisit. Ini cukup jelas, karena jika Anda membiarkan tinggi
auto
, blok akan mengambil tinggi isinya ... tetapi jika konten itu sendiri memiliki ketinggian yang dinyatakan dalam persentase orang tua Anda membuat sendiri sedikit Tangkap 22. Browser menyerah dan hanya menggunakan tinggi konten.Jadi induk div harus memiliki
height
properti eksplisit . Sementara tinggi itu juga bisa menjadi persentase jika Anda mau, itu hanya memindahkan masalah ke tingkat berikutnya.Jika Anda ingin menjadikan tinggi div persentase dari tinggi viewport, setiap leluhur div, termasuk
<html>
dan<body>
, harus memilikiheight: 100%
, sehingga ada rantai persentase eksplisit ketinggian hingga div.(*: atau, jika div diposisikan, 'blok berisi', yang merupakan leluhur terdekat juga diposisikan.)
Atau, semua browser modern dan IE> = 9 mendukung unit CSS baru relatif terhadap tinggi viewport (
vh
) dan lebar viewport (vw
):Lihat di sini untuk info lebih lanjut .
sumber
Anda perlu mengatur ketinggian pada
<html>
dan<body>
elemen juga; jika tidak, mereka hanya akan cukup besar untuk disesuaikan dengan konten. Sebagai contoh :sumber
jawaban bobince akan memberi tahu Anda dalam hal apa "tinggi: XX%;" akan atau tidak akan berhasil.
Jika Anda ingin membuat elemen dengan rasio yang ditetapkan (tinggi:% dari lebar sendiri), cara terbaik untuk melakukannya adalah dengan mengatur ketinggian menggunakan secara efektif
padding-bottom
. Contoh untuk persegi:Wadah persegi hanya akan terbuat dari padding, dan konten akan diperluas untuk mengisi wadah. Artikel panjang dari 2009 tentang hal ini: http://alistapart.com/article/creating-intrinsic-ratios-for-video
sumber
Anda bisa menggunakannya
100vw / 100vh
. CSS3 memberi kita unit relatif-viewport. 100vw berarti 100% dari lebar viewport. 100vh; 100% tinggi.sumber
Dalam kasus lain untuk menyingkirkan persentase orang tua yang dapat Anda gunakan
tubuh {tinggi: 100vh}
vh adalah singkatan dari viewport height
Saya pikir itu membantu
sumber
Terkadang, Anda mungkin ingin mengatur ketinggian div secara bersyarat, seperti ketika seluruh konten kurang dari ketinggian layar. Mengatur semua elemen induk ke 100% akan memotong konten ketika lebih panjang dari ukuran layar.
Jadi, cara untuk mengatasi ini adalah dengan mengatur ketinggian min:
Terus biarkan elemen induk secara otomatis menyesuaikan ketinggiannya. Kemudian di div utama Anda, kurangi ukuran piksel header dan footer div dari 100vh (unit viewport). Dalam css, sesuatu seperti:
min-height: calc (100vh - 246px);
100vh adalah panjang penuh layar, minus div sekitarnya. Dengan mengatur tinggi minimum dan bukan tinggi, konten yang lebih panjang dari layar akan terus mengalir, bukannya terputus.
sumber