Div penampung CSS tidak mendapatkan tinggi


116

Saya ingin div kontainer saya mendapatkan tinggi maksimal dari tinggi anak-anaknya. tanpa mengetahui tinggi badan apa divyang akan dimiliki anak tersebut. Saya mencoba JSFiddle . Wadahnya divberwarna merah. yang tidak muncul. Mengapa?

Jawaban:


282

Tambahkan properti berikut:

.c{
    ...
    overflow: hidden;
}

Ini akan memaksa wadah untuk menghormati ketinggian semua elemen di dalamnya, terlepas dari elemen mengambang.
http://jsfiddle.net/gtdfY/3/

MEMPERBARUI

Baru-baru ini, saya sedang mengerjakan sebuah proyek yang membutuhkan trik ini, tetapi perlu memungkinkan overflow untuk ditampilkan, jadi sebagai gantinya, Anda dapat menggunakan elemen semu untuk membersihkan float Anda, secara efektif mencapai efek yang sama sambil membiarkan overflow pada semua elemen.

.c:after{
    clear: both;
    content: "";
    display: block;
}

http://jsfiddle.net/gtdfY/368/


8
Pada dasarnya, menambahkan properti ini memaksa kotak luar untuk mengabaikan aturan yang dimiliki wadah terapung, di mana mereka tidak dihitung tingginya untuk wadah, dan menerapkannya untuk gambar latar belakang penuh.
Nightfirecat

4
Wow, saya seperti, "Apa? Itu tidak akan berhasil." Tapi aku akan terkutuk. Saya benar-benar berpikir itu tidak akan berperilaku baik. Terima kasih
fie

1
Bukankah ini benar-benar hacky? Bagi saya, itu mengalahkan tujuan melimpah. Saya tidak mengerti mengapa ini adalah jawaban yang benar dan paling disukai.
Andrew Weir

3
@AndrewWeir Saya akui, sampai sekarang, saya belum sepenuhnya yakin mengapa metode perluasan wadah ini untuk mempertimbangkan pelampung dalam ukurannya dengan benar berhasil. Menurut ke beberapa sumber , tampaknya bahwa ini menyebabkan unsur untuk mengubah mode rendering, dari memungkinkan meluap terlihat tidak melakukannya, dan dengan berbuat demikian, pasukan elemen ini untuk melarang melimpah itu.
Nightfirecat

2
Cara pertama, menggunakan overflow, bekerja untuk saya. Cara kedua JUGA bekerja dan tampaknya tidak terlalu berisiko jika saya mengalami overflow di masa mendatang. Saya hanya berharap saya bisa memberi suara positif dua kali.
Tyler Collier

28

Anda mengapung anak-anak yang artinya mereka "mengapung" di depan wadah. Untuk mengambil ketinggian yang benar, Anda harus "membersihkan" pelampung

The div style = "clear: both" membersihkan mengambang dan memberikan ketinggian yang benar ke wadah. lihat http://css.maxdesign.com.au/floatutorial/clear.htm untuk info lebih lanjut tentang float.

misalnya.

<div class="c">
    <div class="l">

    </div>
    <div class="m">
        World
    </div>
    <div style="clear: both" />
</div>

Ini jelas: keduanya; Hal tampaknya menjadi solusi yang tepat untuk ketinggian wadah, karena masalahnya adalah anak-anak mengambang. Jadi pendekatan ini tampaknya lebih baik daripada overflow: hidden; satu di atas.
Ronnie Depp

Terima kasih @Yoeri telah membagikan solusi sederhana ini. Jempol! Saya sedang mencari solusi yang sama untuk desain baru saya karena sudah hampir 6 tahun sejak terakhir kali saya merancang tata letak web setelah saya hanya fokus pada perspektif pengembangan PHP daripada sisi desain.
Ronnie Depp


4

Coba masukkan div kliring ini sebelum yang terakhir </div>

<div style="clear: both; line-height: 0;">&nbsp;</div>


3

Solusi terbaik dan paling antipeluru adalah menambahkan ::beforedan ::afterpseudoelements ke wadah. Jadi jika Anda memiliki misalnya daftar seperti:

<ul class="clearfix">
    <li></li>
    <li></li>
    <li></li>
</ul>

Dan setiap elemen dalam daftar memiliki float:leftproperti, maka Anda harus menambahkan css Anda:

.clearfix::after, .clearfix::before {
     content: '';
     clear: both;
     display: table;
}

Atau Anda dapat mencoba display:inline-block;properti, maka Anda tidak perlu menambahkan perbaikan apa pun.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.