中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS中怎么使用clearfix清除浮動

發布時間:2021-08-03 21:10:01 來源:億速云 閱讀:202 作者:chen 欄目:web開發

這篇文章主要介紹“CSS中怎么使用clearfix清除浮動”,在日常操作中,相信很多人在CSS中怎么使用clearfix清除浮動問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”CSS中怎么使用clearfix清除浮動”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

  首先在很多很多年以前我們常用的清除浮動是這樣的。
 

CSS Code復制內容到剪貼板

  1. .clear{clear:both;line-height:0;}  

  現在可能還可以在很多老的站點上可以看到這樣的代碼,相當暴力有效的解決浮動的問題。但是這個用法有一個致命傷,就是每次清除浮動的時候都需要增加一個空標簽來使用。

  這種做法如果在頁面復雜的布局要經常清楚浮動的時候就會產生很多的空標簽,增加了頁面無用標簽,不利于頁面優化。但是我發現大型網站中 居然還在使用這種清楚浮動的方法。有興趣的同學可以上他們首頁搜索一下他們的.blank0這個樣式名稱。

  因此有很多大神就研究出了 clearfix 清除浮動的方法,直接解決了上面的缺陷,不需要增加空標簽,直接在有浮動的外層加上這個樣式就可以了,這也是我們今天要討論的clearfix進化史。

  起源
 

CSS Code復制內容到剪貼板

  1. .clearfix:after {    

  2.     visibilityhidden;    

  3.     displayblock;    

  4.     font-size: 0;    

  5.     content" ";    

  6.     clearboth;    

  7.     height: 0;    

  8. }    

  9. .clearfix { displayinline-table; }    

  10.     

  11. * 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    

  12. .clearfix { displayblock; }//End hide from IE-mac  

  解釋一下以上的代碼:

    對大多數符合標準的瀏覽器應用第一個聲明塊,目的是創建一個隱形的內容為空的塊來為目標元素清除浮動。
    第二條為clearfix應用 inline-table 顯示屬性,僅僅針對IE/Mac。利用 * 對 IE/Mac 隱藏一些規則:
    height:1% 用來觸發 IE6 下的haslayout。

    重新對 IE/Mac 外的IE應用 block 顯示屬性。

    最后一行用于結束針對 IE/Mac 的hack。(是不是覺得很坑爹,Mac下還有IE)

  起源代碼可能也是很早期的時候了,再往后Mac下的IE5也發展到IE6了,各種瀏覽器開始向W3C這條標準慢慢靠齊了。所以就有了下面這個寫法出現了。
 

CSS Code復制內容到剪貼板

  1. .clearfix:after {    

  2.     visibilityhidden;    

  3.     displayblock;    

  4.     font-size: 0;    

  5.     content" ";    

  6.     clearboth;    

  7.     height: 0;    

  8. }    

  9. * <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 */  

  10. *:first-child+html .clearfix { zoom: 1; } /* IE7 */  

  IE6 和 IE7 都不支持 :after 這個偽類,因此需要后面兩條來觸發IE6/7的haslayout,以清除浮動。幸運的是IE8支持 :after 偽類。因此只需要針對IE6/7的hack了。

  在一個有float 屬性元素的外層增加一個擁有clearfix屬性的div包裹,可以保證外部div的height,即清除"浮動元素脫離了文檔流,包圍圖片和文本的 div 不占據空間"的問題。

  Jeff Starr 在這里針對IE6/7用了兩條語句來觸發haslayout。我在想作者為什么不直接用 * 來直接對 IE6/7 同時應用 zoom:1 或者直接就寫成:
 

CSS Code復制內容到剪貼板

  1. .clearfix:after {    

  2.     visibilityhidden;    

  3.     displayblock;    

  4.     font-size: 0;    

  5.     content" ";    

  6.     clearboth;    

  7.     height: 0;    

  8. }    

  9. .clearfix{*zoom:1;}  

  但是對于很多同學這種優化程度代碼還是不夠給力,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就會閉合內部元素的浮動。

  后面又有人對此進行了改良:

  終極版一:
 

CSS Code復制內容到剪貼板

  1. .clearfix:after {    

  2.     content:"\200B";    

  3.     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>;    

  4.     height:0;    

  5.     clear:both;    

  6. }    

  7. .clearfix {*zoom:1;}/*IE/7/6*/  

  解釋下:content:"\200B";這個參數,Unicode字符里有一個“零寬度空格”,即 U+200B,代替原來的“.”,可以縮減代碼量。而且不再使用visibility:hidden。

  終極版二:
 

CSS Code復制內容到剪貼板

  1. .clearfix:before,.clearfix:after{    

  2.     content:"";    

  3.     display:table;    

  4. }    

  5. .clearfix:after{clear:both;}    

  6. .clearfix{    

  7.     *zoom:1;/*IE/7/6*/  

  8. }  

到此,關于“CSS中怎么使用clearfix清除浮動”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂昌县| 岑巩县| 西乌珠穆沁旗| 抚松县| 江永县| 普宁市| 神农架林区| 阜新市| 永德县| 乌拉特后旗| 古浪县| 武清区| 横峰县| 仁化县| 南华县| 施甸县| 杭锦旗| 慈利县| 松滋市| 富川| 册亨县| 永吉县| 蕉岭县| 洛浦县| 临高县| 类乌齐县| 洛宁县| 平度市| 宜春市| 新闻| 仙桃市| 盘山县| 天水市| 宜君县| 常州市| 筠连县| 登封市| 丹巴县| 缙云县| 三门县| 牙克石市|