Rumah hujung hadapan web Tutorial H5 深入解析clearfix清除浮动

深入解析clearfix清除浮动

Mar 17, 2017 pm 04:27 PM
terapung jelas

深入解析clearfix清除浮动

深入解析clearfix清除浮动

我想大家在写CSS的时候应该都对清除浮动的用法深有体会,今天我们就还讨论下clearfix的进化史吧。

.clear{clear:both;line-height:0;}
Salin selepas log masuk

clearfix清除浮动

首先在很多很多年以前我们常用的清除浮动是这样的。
现在可能还可以在很多老的站点上可以看到这样的代码,相当暴力有效的解决浮动的问题。但是这个用法有一个致命伤,就是每次清除浮动的时候都需要增加一个空标签来使用。
这种做法如果在页面复杂的布局要经常清除浮动的时候就会产生很多的空标签,增加了页面无用标签,不利于页面优化。但是我发现大型网站中 居然还在使用这种清除浮动的方法。有兴趣的同学可以上他们首页搜索一下他们的.blank0这个样式名称。
因此有很多大神就研究出了 clearfix 清除浮动的方法,直接解决了上面的缺陷,不需要增加空标签,直接在有浮动的外层加上这个样式就可以了,这也是我们今天要讨论的clearfix进化史。
起源

.clearfix:after { 
    visibility: hidden; 
    display: block; 
    font-size: 0; 
    content: " "; 
    clear: both; 
    height: 0; 
} 
.clearfix { display: inline-table; } 
* html .clearfix { height: 1%; }//Hides from IE-mac 
.clearfix { display: block; }//End hide from IE-mac
Salin selepas log masuk

解释一下以上的代码:
对大多数符合标准的浏览器应用第一个声明块,目的是创建一个隐形的内容为空的块来为目标元素清除浮动。
第二条为clearfix应用 inline-table 显示属性,仅仅针对IE/Mac。利用 * 对 IE/Mac 隐藏一些规则:
height:1% 用来触发 IE6 下的haslayout。
重新对 IE/Mac 外的IE应用 block 显示属性。
最后一行用于结束针对 IE/Mac 的hack。(是不是觉得很坑爹,Mac下还有IE)
起源代码可能也是很早期的时候了,再往后Mac下的IE5也发展到IE6了,各种浏览器开始向W3C这条标准慢慢靠齐了。所以就有了下面这个写法出现了。

.clearfix:after { 
    visibility: hidden; 
    display: block; 
    font-size: 0; 
    content: " "; 
    clear: both; 
    height: 0; 
} 
* html .clearfix { zoom: 1; } /* IE6 */
Salin selepas log masuk

IE6 和 IE7 都不支持 :after 这个伪类,因此需要后面两条来触发IE6/7的haslayout,以清除浮动。幸运的是IE8支持 :after 伪类。因此只需要针对IE6/7的hack了。
在一个有float 属性元素的外层增加一个拥有clearfix属性的p包裹,可以保证外部p的height,即清除"浮动元素脱离了文档流,包围图片和文本的 p 不占据空间"的问题。
Jeff Starr 在这里针对IE6/7用了两条语句来触发haslayout。我在想作者为什么不直接用 * 来直接对 IE6/7 同时应用 zoom:1 或者直接就写成:

.clearfix:after { 
    visibility: hidden; 
    display: block; 
    font-size: 0; 
    content: " "; 
    clear: both; 
    height: 0; 
} 
.clearfix{*zoom:1;}
Salin selepas log masuk

但是对于很多同学这种优化程度代码还是不够给力,clearfix 发展到现在的两个终极版。
重构clearfix浮动
构成Block Formatting Context的方法有下面几种:
float的值不为none。
overflow的值不为visible。
display的值为table-cell, table-caption, inline-block中的任何一个。
position的值不为relative和static。
很明显,float和position不合适我们的需求。那只能从overflow或者display中选取一个。
因为是应用了.clearfix和.menu的菜单极有可能是多级的,所以overflow: hidden或overflow: auto也不满足需求(会把下拉的菜单隐藏掉或者出滚动条),那么只能从display下手。
我们可以将.clearfix的display值设为table-cell, table-caption, inline-block中的任何一个,但是display: inline-block会产生多余空白,所以也排除掉。
剩下的只有table-cell, table-caption,为了保证兼容可以用display: table来使.clearfix形成一个Block Formatting Context。
因为display: table会产生一些匿名盒子,这些匿名盒子的其中一个(display值为table-cell)会形成Block Formatting Context。
这样我们新的.clearfix就会闭合内部元素的浮动。
后面又有人对此进行了改良:
终极版一:

.clearfix:after { 
    content:"\200B"; 
    display:block; 
    height:0; 
    clear:both; 
} 
.clearfix {*zoom:1;}/*IE/7/6*/
Salin selepas log masuk

解释下:content:"\200B";这个参数,Unicode字符里有一个“零宽度空格”,即 U+200B,代替原来的“.”,可以缩减代码量。而且不再使用visibility:hidden。
终极版二:

.clearfix:before,.clearfix:after{ 
    content:""; 
    display:table; 
} 
.clearfix:after{clear:both;} 
.clearfix{ 
    *zoom:1;/*IE/7/6*/
}
Salin selepas log masuk

这两个终极版代码都很简洁,终极版一和二都可以使用,以上代码都经过测试,大家赶紧用一下吧,如果有什么问题请及时跟我反馈,如果你还停留在clearfix的老代码的时候就赶紧更新一下代码吧。

以上就是clearfix清除浮动进化史的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关文章:

css之clearfix的用法深入理解

浅谈css清除浮动clearfix和clear的用法介绍

CSS之关于clearfix清除浮动方法

整理的最全的css clearfix清除浮动的方法

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelaraskan kotak input dalam html Bagaimana untuk menyelaraskan kotak input dalam html Apr 05, 2024 am 10:18 AM

Kaedah menggunakan HTML untuk menjajarkan kotak input termasuk: menggunakan atribut penjajaran teks untuk menentukan kiri, kanan atau tengah untuk menjajarkan teks kotak input. Gunakan sifat apungan untuk mengapungkan kotak input ke sebelah kiri atau kanan halaman untuk mempengaruhi penjajaran relatifnya.

Apakah 5 cara untuk membersihkan terapung? Apakah 5 cara untuk membersihkan terapung? Nov 20, 2023 pm 04:27 PM

Lima cara untuk mengosongkan apungan ialah: 1. Gunakan atribut jelas 2. Gunakan atribut limpahan 3. Gunakan pseudo clearfix 4. Gunakan susun atur grid; Pengenalan terperinci: 1. Gunakan atribut jelas, yang merupakan kaedah yang paling biasa digunakan untuk mengosongkan apungan Anda boleh menambah elemen selepas elemen terapung dan menambah "jelas: kedua-duanya;" menggunakan atribut limpahan tetapkan elemen induk Tetapkan "overflow: auto;" dan seterusnya.

Adakah terdapat sebarang cara untuk membersihkan terapung? Adakah terdapat sebarang cara untuk membersihkan terapung? Feb 22, 2024 pm 04:00 PM

Adakah terdapat sebarang kaedah untuk mengosongkan apungan? Contoh kod khusus diperlukan Dalam reka letak halaman web, apungan ialah kaedah susun atur biasa yang membolehkan elemen memisahkan diri daripada aliran dokumen dan diposisikan secara relatif kepada elemen lain. Walau bagaimanapun, masalah yang sering dihadapi apabila menggunakan reka letak terapung ialah elemen induk tidak dapat membalut elemen terapung dengan betul, menyebabkan halaman mempunyai reka letak yang tidak teratur. Oleh itu, kita perlu mengambil langkah untuk membersihkan terapung supaya elemen induk dapat membalut elemen terapung dengan betul. Terdapat banyak cara untuk mengosongkan terapung Berikut akan memperkenalkan beberapa kaedah yang biasa digunakan dan memberikan contoh kod tertentu.

Apakah susun atur susun atur? Apakah susun atur susun atur? Feb 24, 2024 pm 03:03 PM

Susun atur merujuk kepada kaedah penetapan taip yang diguna pakai dalam reka bentuk web untuk menyusun dan memaparkan elemen halaman web mengikut peraturan dan struktur tertentu. Melalui reka letak yang munasabah, halaman web boleh dibuat lebih cantik dan kemas, dan mencapai pengalaman pengguna yang baik. Dalam pembangunan bahagian hadapan, terdapat banyak kaedah susun atur untuk dipilih, seperti susun atur meja tradisional, susun atur terapung, susun atur kedudukan, dll. Walau bagaimanapun, dengan promosi HTML5 dan CSS3, teknologi susun atur responsif moden, seperti susun atur Flexbox dan susun atur Grid, telah menjadi

Mengapa unsur terapung tidak boleh dibersihkan oleh harta limpahan Mengapa unsur terapung tidak boleh dibersihkan oleh harta limpahan Jan 27, 2024 am 08:08 AM

Untuk menganalisis sebab terapung tidak boleh dikosongkan menggunakan atribut limpahan, contoh kod khusus diperlukan Pengenalan: Dalam reka letak halaman web, masalah dengan elemen terapung sering dihadapi. Untuk menyelesaikan kesan unsur terapung, kami biasanya menggunakan kaedah membersihkan terapung. Walau bagaimanapun, kadangkala kami mendapati bahawa apungan tidak boleh dikosongkan dengan baik menggunakan atribut limpahan Artikel ini akan menyelidiki isu ini dan memberikan contoh kod khusus. 1. Mengapakah kita perlu mengosongkan pelampung? Elemen terapung bermaksud mengeluarkan elemen daripada aliran dokumen dengan menetapkan atribut apungan.

Peranan apungan dalam css Peranan apungan dalam css Apr 28, 2024 pm 01:51 PM

Sifat apungan dalam CSS membenarkan elemen keluar daripada aliran dokumen dan berbaris di sepanjang tepi elemen induknya, dan digunakan untuk mencipta dan menjajarkan imej teks, bar sisi menu terapung dan elemen bertindih. Nilai atribut unsur terapung termasuk kiri (apung kiri), kanan (apung kanan), tiada (apung jelas), dan mewarisi (warisan). Untuk mengelakkan elemen terapung daripada menyebabkan elemen induk melimpah, anda boleh menggunakan teknik clearfix untuk menambah elemen kosong dan mengosongkan float.

Apakah cara untuk membersihkan terapung dalam css Apakah cara untuk membersihkan terapung dalam css Oct 30, 2023 am 11:57 AM

Cara untuk mengosongkan terapung dalam CSS termasuk atribut jelas, atribut limpahan, kelas pembaikan jelas, kelas pembaikan jelas bagi elemen induk, elemen pseudo untuk mengosongkan apungan, atribut limpahan elemen induk dan gabungan atribut jelas dan BFC. Pengenalan terperinci: 1. Gunakan atribut jelas, kaedah mudah dan biasa digunakan untuk mengosongkan terapung Dengan menambahkan elemen peringkat blok kosong selepas elemen terapung dan menetapkan atribut jelas untuknya, anda boleh mengosongkan kesan terapung sebelumnya dan menjadikannya. Unsur-unsur di bawah dibentangkan secara normal dan sebagainya.

Mengapa apungan jernih limpahan tidak mempunyai kesan? Mengapa apungan jernih limpahan tidak mempunyai kesan? Oct 17, 2023 pm 02:29 PM

Sebab mengapa apungan pembersihan limpahan tidak sah mungkin kerana ketinggian elemen terapung tidak ditetapkan, elemen terapung dikosongkan, elemen penjelasan adalah sebelum elemen terapung, ketinggian elemen jelas tidak ditetapkan, atau elemen jelas adalah selepas unsur terapung, dsb. Pengenalan terperinci: 1. Ketinggian unsur terapung tidak ditetapkan Apabila ketinggian unsur terapung tidak ditetapkan, ia mungkin tidak dibersihkan Ketinggian unsur terapung ditentukan oleh kandungannya, jadi jika kandungannya tidak ketinggian, elemen terapung juga tidak mempunyai ketinggian; 2. Terapung Elemen dibersihkan, apabila elemen terapung dibersihkan, sifat limpahan mungkin tidak jelas dan sebagainya.

See all articles