Ini HTML-nya:
<div id="outer">
<div id="inner"></div>
Test
</div>
Dan di sini adalah CSS:
#inner {
float: left;
height: 100%;
}
Setelah diperiksa dengan alat pengembang Chrome, div bagian dalam mendapatkan ketinggian 0px.
Bagaimana saya bisa memaksanya 100% dari ketinggian div induk?
Jawaban:
Agar
#outer
ketinggian didasarkan pada kontennya, dan#inner
mendasarkan tingginya pada itu, membuat kedua elemen benar-benar diposisikan.Rincian lebih lanjut dapat ditemukan dalam spesifikasi untuk properti tinggi css , tetapi pada dasarnya,
#inner
harus mengabaikan#outer
ketinggian jika#outer
tinggiauto
, kecuali#outer
diposisikan mutlak. Maka#inner
tinggi akan menjadi 0, kecuali jika#inner
dirinya diposisikan mutlak.Namun ... Dengan memposisikan secara
#inner
mutlak,float
pengaturan akan diabaikan, jadi Anda harus memilih lebar untuk#inner
secara eksplisit, dan menambahkan padding#outer
untuk memalsukan pembungkus teks yang saya duga Anda inginkan. Misalnya, di bawah ini, bantalan#outer
adalah lebar#inner
+3. Mudah (karena intinya adalah untuk mendapatkan#inner
ketinggian hingga 100%) tidak perlu membungkus teks di bawahnya#inner
, jadi ini akan terlihat seperti#inner
melayang.Saya menghapus jawaban saya sebelumnya, karena didasarkan pada terlalu banyak asumsi yang salah tentang tujuan Anda.
sumber
HTML/CSS
:)Untuk orang tua:
Anda harus menambahkan beberapa awalan http://css-tricks.com/using-flexbox/
Sunting: Hanya kekurangannya adalah IE seperti biasa, IE9 tidak mendukung flex. http://caniuse.com/flexbox
Sunting 2: Seperti yang dicatat @toddsby, menyelaraskan item adalah untuk orang tua, dan nilai defaultnya sebenarnya adalah peregangan . Jika Anda menginginkan nilai yang berbeda untuk anak, ada properti align-self.
Sunting 3: jsFiddle: https://jsfiddle.net/bv71tms5/2/
sumber
align-items: stretch;
tidak diperlukan karena ini adalah nilai default. Juga harus didefinisikan pada orang tua bukan anak.Sebenarnya, selama elemen induk diposisikan, Anda dapat mengatur tinggi anak hingga 100%. Yaitu, jika Anda tidak ingin orang tua diposisikan benar-benar. Biarkan saya jelaskan lebih lanjut:
sumber
position:absolute
(yang dapat mengganggu gaya situs)Selama Anda tidak perlu mendukung versi Internet Explorer lebih awal dari IE8, Anda dapat menggunakannya
display: table-cell
untuk mencapai ini:HTML:
CSS:
Ini akan memaksa setiap elemen dengan
.inner
kelas untuk menempati ketinggian penuh elemen induknya.sumber
display: table-cell;
elemen tidak mengisi ketinggian wadahnya lagi? Aku pasti melewatkan sesuatu, karena itu pertanyaanmu sendiri ...?Saya membuat contoh untuk menyelesaikan masalah Anda.
Anda harus membuat pembungkus, mengapungkannya, lalu posisikan absolut div Anda dan berikan padanya 100% tinggi.
HTML
CSS:
Penjelasan: The .right div benar-benar diposisikan. Itu berarti lebar dan tinggi, dan posisi atas dan kiri akan dihitung berdasarkan div induk pertama secara absolut atau relatif diposisikan HANYA jika properti lebar atau tinggi dinyatakan secara eksplisit dalam CSS; jika tidak dinyatakan secara eksplisit, properti tersebut akan dihitung berdasarkan wadah induk (.right-wrapper).
Jadi, tinggi 100% DIV akan dihitung berdasarkan tinggi final .container, dan posisi akhir posisi .right akan dihitung berdasarkan wadah induk.
sumber
.right
konten kolom lebih pendek dari.left
konten kolom. Misalnya, jika Anda menggunakan ini pada komponen di mana.left
kolom memiliki beberapa konten berukuran bervariasi dan kolom kanan hanya menampilkan panah ke halaman detail maka solusi ini berfungsi dengan baik. +1 untuk ituIni dia cara sederhana untuk mencapai itu:
Berkat @Itu di Floated div, tinggi 100%
sumber
Jika Anda siap menggunakan sedikit jQuery, jawabannya sederhana!
Ini bekerja dengan baik untuk melayang elemen tunggal ke sisi dengan ketinggian 100% dari induknya sedangkan elemen melayang lainnya yang biasanya membungkus disimpan di satu sisi.
Semoga ini bisa membantu sesama penggemar jQuery.
sumber
Ini adalah contoh kode untuk sistem grid dengan ketinggian yang sama.
Di atas adalah CSS untuk div luar
Di atas adalah bagian dalam
Semoga ini bisa membantu Anda
sumber
Ini membantu saya.
Ubah kanan: dan kiri: untuk mengatur lebar #inner yang diinginkan.
sumber
Kasus serupa ketika Anda membutuhkan beberapa elemen anak yang memiliki tinggi yang sama dapat diselesaikan dengan flexbox:
https://css-tricks.com/using-flexbox/
Ditetapkan
display: flex;
untukflex: 1;
elemen orangtua dan anak, semuanya akan memiliki ketinggian yang sama.sumber
mencoba
perlihatkan lebih banyak opsi di: Bagaimana Anda mencegah orang tua dari elemen melayang tidak runtuh?
sumber