這篇文章主要介紹“CSS中怎么使用clearfix清除浮動”,在日常操作中,相信很多人在CSS中怎么使用clearfix清除浮動問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”CSS中怎么使用clearfix清除浮動”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站制作、彭陽網(wǎng)絡(luò)推廣、重慶小程序開發(fā)公司、彭陽網(wǎng)絡(luò)營銷、彭陽企業(yè)策劃、彭陽品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供彭陽建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:aaarwkj.com
首先在很多很多年以前我們常用的清除浮動是這樣的。
CSS Code復(fù)制內(nèi)容到剪貼板
.clear{clear:both;line-height:0;}
現(xiàn)在可能還可以在很多老的站點上可以看到這樣的代碼,相當(dāng)暴力有效的解決浮動的問題。但是這個用法有一個致命傷,就是每次清除浮動的時候都需要增加一個空標(biāo)簽來使用。
這種做法如果在頁面復(fù)雜的布局要經(jīng)常清楚浮動的時候就會產(chǎn)生很多的空標(biāo)簽,增加了頁面無用標(biāo)簽,不利于頁面優(yōu)化。但是我發(fā)現(xiàn)大型網(wǎng)站中 居然還在使用這種清楚浮動的方法。有興趣的同學(xué)可以上他們首頁搜索一下他們的.blank0這個樣式名稱。
因此有很多大神就研究出了 clearfix 清除浮動的方法,直接解決了上面的缺陷,不需要增加空標(biāo)簽,直接在有浮動的外層加上這個樣式就可以了,這也是我們今天要討論的clearfix進(jìn)化史。
起源
CSS Code復(fù)制內(nèi)容到剪貼板
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.clearfix { display: inline-table; }
* html .clearfix { height: 1%; }//Hides <span style="width: auto; height: auto; float: none;" id="5_nwp"><a style="text-decoration: none;" mpid="5" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=3fdf214c8ec2a5ea&k=from&k0=from&kdi0=0&luki=1&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=eaa5c28e4c21df3f&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F6259%2Ehtml&urlid=0" id="5_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">from</span></a></span> IE-mac
.clearfix { display: block; }//End hide from IE-mac
解釋一下以上的代碼:
對大多數(shù)符合標(biāo)準(zhǔn)的瀏覽器應(yīng)用第一個聲明塊,目的是創(chuàng)建一個隱形的內(nèi)容為空的塊來為目標(biāo)元素清除浮動。
第二條為clearfix應(yīng)用 inline-table 顯示屬性,僅僅針對IE/Mac。利用 * 對 IE/Mac 隱藏一些規(guī)則:
height:1% 用來觸發(fā) IE6 下的haslayout。
重新對 IE/Mac 外的IE應(yīng)用 block 顯示屬性。
最后一行用于結(jié)束針對 IE/Mac 的hack。(是不是覺得很坑爹,Mac下還有IE)
起源代碼可能也是很早期的時候了,再往后Mac下的IE5也發(fā)展到IE6了,各種瀏覽器開始向W3C這條標(biāo)準(zhǔn)慢慢靠齊了。所以就有了下面這個寫法出現(xiàn)了。
CSS Code復(fù)制內(nèi)容到剪貼板
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
* <span style="width: auto; height: auto; float: none;" id="4_nwp"><a style="text-decoration: none;" mpid="4" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=3fdf214c8ec2a5ea&k=html&k0=html&kdi0=0&luki=5&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=eaa5c28e4c21df3f&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F6259%2Ehtml&urlid=0" id="4_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">html</span></a></span> .clearfix { zoom: 1; } /* IE6 */
*:first-child+html .clearfix { zoom: 1; } /* IE7 */
IE6 和 IE7 都不支持 :after 這個偽類,因此需要后面兩條來觸發(fā)IE6/7的haslayout,以清除浮動。幸運的是IE8支持 :after 偽類。因此只需要針對IE6/7的hack了。
在一個有float 屬性元素的外層增加一個擁有clearfix屬性的div包裹,可以保證外部div的height,即清除"浮動元素脫離了文檔流,包圍圖片和文本的 div 不占據(jù)空間"的問題。
Jeff Starr 在這里針對IE6/7用了兩條語句來觸發(fā)haslayout。我在想作者為什么不直接用 * 來直接對 IE6/7 同時應(yīng)用 zoom:1 或者直接就寫成:
CSS Code復(fù)制內(nèi)容到剪貼板
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.clearfix{*zoom:1;}
但是對于很多同學(xué)這種優(yōu)化程度代碼還是不夠給力,clearfix 發(fā)展到現(xiàn)在的兩個終極版。
重構(gòu)clearfix浮動
構(gòu)成Block Formatting Context的方法有下面幾種:
float的值不為none。
overflow的值不為visible。
display的值為table-cell, table-caption, inline-block中的任何一個。
position的值不為relative和static。
很明顯,float和position不合適我們的需求。那只能從overflow或者display中選取一個。
因為是應(yīng)用了.clearfix和.menu的菜單極有可能是多級的,所以overflow: hidden或overflow: auto也不滿足需求
(會把下拉的菜單隱藏掉或者出滾動條),那么只能從display下手。
我們可以將.clearfix的display值設(shè)為table-cell, table-caption, inline-block中的任何一個
但是display: inline-block會產(chǎn)生多余空白,所以也排除掉。
剩下的只有table-cell, table-caption,為了保證兼容可以用display: table來使.clearfix形成一個Block Formatting Context
因為display: table會產(chǎn)生一些匿名盒子,這些匿名盒子的其中一個(display值為table-cell)會形成Block Formatting Context。
這樣我們新的.clearfix就會閉合內(nèi)部元素的浮動。
后面又有人對此進(jìn)行了改良:
終極版一:
CSS Code復(fù)制內(nèi)容到剪貼板
.clearfix:after {
content:"\200B";
display:<span style="width: auto; height: auto; float: none;" id="2_nwp"><a style="text-decoration: none;" mpid="2" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=3fdf214c8ec2a5ea&k=block&k0=block&kdi0=0&luki=6&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=eaa5c28e4c21df3f&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F6259%2Ehtml&urlid=0" id="2_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">block</span></a></span>;
height:0;
clear:both;
}
.clearfix {*zoom:1;}/*IE/7/6*/
解釋下:content:"\200B";這個參數(shù),Unicode字符里有一個“零寬度空格”,即 U+200B,代替原來的“.”,可以縮減代碼量。而且不再使用visibility:hidden。
終極版二:
CSS Code復(fù)制內(nèi)容到剪貼板
.clearfix:before,.clearfix:after{
content:"";
display:table;
}
.clearfix:after{clear:both;}
.clearfix{
*zoom:1;/*IE/7/6*/
}
到此,關(guān)于“CSS中怎么使用clearfix清除浮動”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)頁名稱:CSS中怎么使用clearfix清除浮動
標(biāo)題URL:http://aaarwkj.com/article40/ggphho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、網(wǎng)站制作、域名注冊、外貿(mào)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)