Katakanlah Anda memiliki div
, berikan yang pasti width
dan letakkan elemen di dalamnya, dalam kasus saya img
dan lainnya div
.
Idenya adalah bahwa konten wadah div
akan menyebabkan wadah div
untuk meregang, dan menjadi latar belakang untuk konten tersebut. Tetapi ketika saya melakukan ini, isi div
menyusut agar sesuai dengan benda-benda yang tidak mengambang, dan benda-benda mengambang akan baik semua jalan keluar, atau setengah keluar, setengah masuk, dan tidak memiliki bantalan pada ukuran besar div
.
Kenapa ini? Apakah ada sesuatu yang saya hilang, dan bagaimana saya bisa item untuk meregangkan melayang height
dari mengandung div
?
overflow:hidden
Kekuatan browser yang terbaik untuk mengandung elemen anak dari orang tua. Itulah mengapa ia memperbaikinya.overflow: hidden
ada di sini: tautan . Dan terima kasih banyak, itu berhasil untuk sayaoverflow: hidden
itu hanya akan menyembunyikan bagian mana pun dari elemen yang mengalir keluar dari wadah induk. Bagi saya, ini menyebabkan potongan teks tertentu menjadi tidak dapat dibaca.Alasan
Masalahnya adalah bahwa elemen apung tidak mengalir :
Oleh karena itu, mereka tidak mempengaruhi elemen sekitarnya seperti elemen in-flow .
Ini dijelaskan dalam 9.5 Floats :
Tampilkan cuplikan kode
Ini juga ditentukan dalam 10.6 Menghitung ketinggian dan margin . Untuk blok "normal" ,
Tampilkan cuplikan kode
Solusi peretasan: pembersihan
Cara untuk mengatasi masalah ini adalah dengan memaksa beberapa elemen dalam-aliran ditempatkan di bawah semua pelampung. Kemudian, ketinggian induk akan tumbuh untuk membungkus elemen itu (dan dengan demikian mengapung juga).
Hal ini dapat dicapai dengan menggunakan satu
clear
properti :Tampilkan cuplikan kode
Jadi solusinya adalah menambahkan elemen kosong dengan
clear: both
sebagai saudara terakhir dari pelampungNamun, itu bukan semantik. Jadi lebih baik menghasilkan elemen pseudo di akhir induk:
Ada beberapa varian dari pendekatan ini, misalnya menggunakan sintaks kolon tunggal yang sudah tidak digunakan lagi
:after
untuk mendukung browser lama, atau menggunakan tampilan level blok lainnya sepertidisplay: table
.Solusi: BFC root
Ada pengecualian untuk perilaku bermasalah yang didefinisikan di awal: jika elemen blok membentuk a Konteks Pemformatan Blok (adalah root BFC), maka ia juga akan membungkus konten apungnya.
Berdasarkan ketinggian 10.6.7 'Otomatis' untuk akar konteks pemformatan blok ,
Tampilkan cuplikan kode
Selain itu, seperti yang dijelaskan 9.5 Mengapung , akar BFC juga berguna karena hal berikut:
Tampilkan cuplikan kode
Konteks pemformatan blok ditetapkan oleh
Memblokir kotak dengan
overflow
selainvisible
, misalnyahidden
Memblokir kontainer yang bukan kotak blok: kapan
display
diatur keinline-block
,table-cell
atautable-caption
.Elemen mengambang: kapan
float
diatur keleft
atauright
.Elemen yang benar-benar diposisikan: kapan
position
diatur keabsolute
ataufixed
.Perhatikan itu mungkin memiliki efek jaminan yang tidak diinginkan, seperti kliping konten yang meluap, menghitung lebar otomatis dengan algoritma shrink-to-fit , atau menjadi out-of-flow. Jadi masalahnya adalah tidak mungkin untuk memiliki elemen level blok in-flow dengan overflow yang terlihat yang membentuk BFC.
Tampilan L3 mengatasi masalah ini:
Sayangnya, belum ada dukungan browser. Akhirnya kita bisa menggunakan
sumber
Letakkan apung Anda
div(s)
di dalamdiv
dan di CSS berikanoverflow:hidden;
itu akan berfungsi dengan baik.
sumber
Rekomendasi W3Schools:
memakai
overflow: auto
elemen induk dan itu akan "warna" seluruh latar belakang termasuk elemen margin. Juga elemen mengambang akan tetap berada di dalam perbatasan.http://www.w3schools.com/css/tryit.asp?filename=trycss_layout_clearfix
sumber
Tidak ada yang hilang. Float dirancang untuk case di mana Anda ingin gambar (misalnya) untuk duduk di samping beberapa paragraf teks, sehingga teks mengalir di sekitar gambar. Itu tidak akan terjadi jika teks "meregangkan" wadah. Paragraf pertama Anda akan berakhir, dan kemudian paragraf berikutnya akan dimulai di bawah gambar (mungkin beberapa ratus piksel di bawah).
Dan itulah mengapa Anda mendapatkan hasilnya.
sumber
Dalam beberapa kasus, yaitu ketika (jika) Anda hanya menggunakan
float
agar elemen mengalir pada "baris" yang sama, Anda mungkin menggunakandari pada
Jika tidak, menggunakan
clear
elemen pada akhirnya berfungsi, bahkan jika itu bertentangan dengan kebutuhan elemen untuk melakukan apa yang seharusnya menjadi pekerjaan CSS.sumber
Berikut ini pendekatan yang lebih modern:
Tidak ada lagi perbaikan yang jelas.
ps Menggunakan overflow: disembunyikan; menyembunyikan bayangan kotak jadi ...
sumber
Terima kasih, LSerni Anda telah memecahkannya untuk saya.
Untuk mencapai ini:
Anda harus melakukan ini:
sumber
Seperti kata Lucas, apa yang Anda gambarkan adalah perilaku yang dimaksudkan untuk properti pelampung. Yang membingungkan banyak orang adalah bahwa float telah didorong jauh melampaui penggunaan aslinya yang dimaksudkan untuk menebus kekurangan dalam model tata letak CSS.
Lihatlah Floatutorial jika Anda ingin mendapatkan pemahaman yang lebih baik tentang cara kerja properti ini.
sumber
Anda dapat dengan mudah melakukannya dengan terlebih dahulu Anda dapat membuat div fleksibel dan menerapkan konten yang benar atau kiri dan masalah Anda terpecahkan.
sumber