Baru-baru ini saya melihat-lihat kode beberapa situs web, dan melihat bahwa setiap orang <div>
memiliki kelas clearfix
.
Setelah pencarian Google cepat, saya belajar bahwa itu untuk IE6 kadang-kadang, tetapi apa yang sebenarnya merupakan perbaikan jelas?
Bisakah Anda memberikan beberapa contoh tata letak dengan perbaikan yang jelas, dibandingkan dengan tata letak tanpa perbaikan yang jelas?
div
akan sepenuhnya berkembang ke ketinggian yang tepat untuk melampirkan anak-anak yang mengambang. webtoolkit.info/css-clearfix.htmlJawaban:
Jika Anda tidak perlu mendukung IE9 atau lebih rendah, Anda dapat menggunakan flexbox secara bebas, dan tidak perlu menggunakan tata letak melayang.
Perlu dicatat bahwa hari ini, penggunaan elemen melayang untuk tata letak semakin berkecil dengan penggunaan alternatif yang lebih baik.
display: inline-block
- Lebih baikFlexbox didukung dari Firefox 18, Chrome 21, Opera 12.10, dan Internet Explorer 10, Safari 6.1 (termasuk Mobile Safari) dan browser default Android 4.4.
Untuk daftar peramban terperinci, lihat: https://caniuse.com/flexbox .
(Mungkin begitu posisinya benar-benar ditetapkan, itu mungkin cara yang benar-benar direkomendasikan untuk meletakkan elemen.)
Clearfix adalah cara bagi suatu elemen untuk secara otomatis menghapus elemen turunannya , sehingga Anda tidak perlu menambahkan markup tambahan. Ini umumnya digunakan dalam tata letak apung di mana elemen melayang untuk ditumpuk secara horizontal.
Clearfix adalah cara untuk memerangi masalah kontainer ketinggian nol untuk elemen melayang
Perbaikan yang dilakukan sebagai berikut:
Atau, jika Anda tidak memerlukan dukungan IE <8, berikut ini juga baik-baik saja:
Biasanya Anda perlu melakukan sesuatu sebagai berikut:
Dengan clearfix, Anda hanya perlu yang berikut ini:
Baca tentang itu di artikel ini - oleh Chris Coyer @ CSS-Tricks
sumber
content: "\00A0";
\ 00A0 mewakili ruang putih, ruang putih sederhana tidak berfungsi dengan baik :) maaf. :)display: inline-block
lebih baik daripada mengapung untuk tata letak berbasis blok. Inline-blok, sesuai namanya, diletakkan inline - sebagian besar layout berbasis blok dan memiliki blok ini diletakkan dalam konteks format inline tidak masuk akal. Anda juga harus berurusan dengan berbagai masalah yang terkait dengan pemformatan sebaris, seperti spasi putih antar-elemen, elemen sebaris lainnya, ukuran, penyelarasan, dan sebagainya seperti yang banyak ditunjukkan orang lain. Memang, tata letak float juga tidak masuk akal, tetapi setidaknya float memiliki keuntungan sebagai berbasis blok.Jawaban lainnya benar. Tapi saya ingin menambahkan bahwa itu adalah peninggalan saat orang pertama kali belajar CSS, dan disalahgunakan
float
untuk melakukan semua tata letak mereka.float
dimaksudkan untuk melakukan hal-hal seperti gambar mengambang di sebelah teks yang berjalan lama, tetapi banyak orang menggunakannya sebagai mekanisme tata letak utama mereka. Karena itu tidak dimaksudkan untuk itu, Anda perlu peretasan seperti "clearfix" untuk membuatnya bekerja.Hari-hari
display: inline-block
ini adalah alternatif yang solid ( kecuali untuk IE6 dan IE7 ), meskipun browser yang lebih modern datang dengan mekanisme tata letak yang bahkan lebih berguna di bawah nama-nama seperti flexbox, tata letak kotak, dll.sumber
inline-block
bukan peningkatan ketat atas float karena masalah jarak antar-blok , di mana spasi putih dalam HTML diterjemahkan menjadi karakter spasi yang memisahkan blok.inline-block
membutuhkan solusi sendiri , sama sepertifloat
membutuhkan clearfix.Ini
clearfix
memungkinkan wadah untuk membungkus anak-anak yang melayang. Tanpa gayaclearfix
atau setara, sebuah wadah tidak membungkus anak-anak melayang dan runtuh, sama seperti anak-anak melayang itu diposisikan secara mutlak.Ada beberapa versi dari perbaikan yang jelas, dengan Nicolas Gallagher dan Thierry Koblentz sebagai penulis utama.
Jika Anda ingin dukungan untuk peramban yang lebih lama, yang terbaik adalah menggunakan clearfix ini:
Di SCSS, Anda dapat menggunakan teknik berikut:
Jika Anda tidak peduli tentang dukungan browser lama, ada versi yang lebih pendek:
sumber
div
bungkus elemen melayang? Bisakah Anda membantu saya memvisualisasikannya?Untuk menawarkan pembaruan tentang situasi pada Q2 2017.
Properti tampilan CSS3 baru tersedia di Firefox 53, Chrome 58 dan Opera 45.
Periksa ketersediaan browser apa pun di sini: http://caniuse.com/#feat=flow-root
Elemen (dengan properti tampilan diatur ke flow-root) menghasilkan kotak kontainer blok, dan menjabarkan isinya menggunakan tata letak aliran. Itu selalu membuat konteks pemformatan blok baru untuk isinya.
Berarti bahwa jika Anda menggunakan div induk yang berisi satu atau beberapa anak mengambang, properti ini akan memastikan orangtua melampirkan semua anaknya. Tanpa perlu melakukan peretasan clearfix. Pada anak-anak, atau bahkan elemen dummy terakhir (jika Anda menggunakan varian clearfix dengan: sebelum pada anak-anak terakhir).
sumber
flow-root
adalah solusi nyata.Sederhananya, clearfix adalah hack .
Ini adalah salah satu dari hal-hal buruk yang harus kita semua jalani karena ini adalah satu-satunya cara yang masuk akal untuk memastikan unsur-unsur anak yang melayang tidak membanjiri orang tua mereka. Ada skema tata letak lain di luar sana tetapi mengambang terlalu umum dalam desain / pengembangan web saat ini untuk mengabaikan nilai peretasan clearfix.
Saya pribadi bersandar ke solusi Micro Clearfix (Nicolas Gallagher)
referensi
sumber
Sebuah teknik yang biasa digunakan dalam tata letak berbasis float CSS adalah menetapkan beberapa properti CSS ke elemen yang Anda tahu akan mengandung elemen mengambang. Teknik, yang biasanya diimplementasikan menggunakan definisi kelas yang disebut
clearfix
, (biasanya) mengimplementasikan perilaku CSS berikut:Tujuan dari perilaku gabungan ini adalah untuk membuat wadah
:after
elemen aktif yang mengandung satu '.' ditandai sebagai tersembunyi yang akan menghapus semua pelampung yang sudah ada sebelumnya dan secara efektif mengatur ulang halaman untuk bagian konten berikutnya.sumber
Opsi lain (dan mungkin paling sederhana) untuk mencapai clearfix adalah untuk digunakan
overflow:hidden;
pada elemen yang mengandung. Sebagai contohTentu saja ini hanya dapat digunakan dalam kasus di mana Anda tidak pernah ingin kontennya meluap.
sumber
Saya mencoba jawaban yang diterima tetapi saya masih memiliki masalah dengan penyelarasan konten. Menambahkan pemilih ": sebelum" seperti yang ditunjukkan di bawah ini memperbaiki masalah:
KURANG di atas akan dikompilasi ke CSS di bawah ini:
sumber
Berikut adalah metode yang berbeda, hal yang sama tetapi sedikit berbeda
perbedaannya adalah titik konten yang diganti dengan
\00A0
==whitespace
Lebih lanjut tentang ini http://www.jqui.net/tips-tricks/css-clearfix/
Ini adalah versi ringkasnya ...
sumber
.clearfix {...}
,html[xmlns] .clearfix {...}
,* html .clearfix {...}
, Dan.clearfix {...}
semua pilih hal yang sama dan saling menimpa. Ini sedikit hacky dan tidak terlalu dibutuhkan.\00A0
, saya pikir itu karena kompatibilitas browser lintas dan pengetahuan waktu.