html/css:清楚浮動的作用是什么???一般什么情況下要清楚浮動???要知道原因,不能只知道用!??!

? ?一般情況下是要清除浮動的,不然會影響下面標(biāo)簽的排版。浮動就是,打個比方說,你想一行放上兩個div,但是若是不加浮動,那么一行只能放一個div,加上浮動就可以放2個。另一方面就是若是標(biāo)簽加了浮動,在ie6里,margin的值會變成雙倍。若是要解決則需要加上display:inline

很多前端都是用.clearfix:after{ .....} ?和 .clearit{....}的組合 來清除浮動, 下面我來講解下這倆種的用法:

首先大家切頁面經(jīng)常用到浮動 float:left; float:right; 有浮動就需要清除他們,

after偽類由于受到ie6 7的不支持所以大多數(shù)時候,一般都需要定義一個固定的class名設(shè)置屬性clear的值both的div 兩者配合使用.

? ? ? ?*{ margin: 0; padding: 0}

? ? ? ?.left{ float: left;}

? ? ? ?.clearfix:after { content:"."; display:block; height:0; visibility:hidden; clear:both; } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //偽類清除

? ? ? ?.clearfix { zoom:1; }

.clearit { clear:both; height:0; font-size:0; overflow:hidden; } ?//設(shè)置class名清除

.main{ width: 1000px;}

.myRight,.myLeft{ width: 200px; height: 200px; background: #ddd;}

.myRight{ background: red}

///////////////////////////////////////////////第一種結(jié)構(gòu)

? ?

左側(cè)

? ?

右側(cè)

? ?

我是底部

1 ?此時不清除浮動 標(biāo)準瀏覽器 和ie8+ ?p標(biāo)簽會跑到 右側(cè)浮動div的旁邊 如圖:

IE6 IE7下

我們可以看出,標(biāo)準和ie8下 class名為main的div 沒被撐開,IE6 IE7下卻被浮動元素撐開了。

我們只需要解決 標(biāo)準 和 IE8+的浮動 就可以;現(xiàn)在我們給main 追加個class名如下:

? ?// 此處追加

? ?

左側(cè)

? ?

右側(cè)

? ?

我是底部

因為我們在css中設(shè)置了 .clearfix:after{..}所以浮動就不會繼承下去 此時給 .main加上背景{ background:blue };

我們發(fā)現(xiàn) ?標(biāo)準和 IE6+ ? 的 main 都已被撐開如下圖:

IE6下

標(biāo)準下:


//////////////////////////////////////////第二種結(jié)構(gòu) 此時需要用到 ?.clearit{ ...}

*{ margin: 0; padding: 0}

.left{ float: left;}

.clearfix:after { content:"."; display:block; height:0; visibility:hidden; clear:both; } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //偽類清除

.clearfix { zoom:1; }

.clearit { clear:both; height:0; font-size:0; overflow:hidden; } ?//設(shè)置class名清除

.main{ width: 1000px;}

.myLast,.myRight,.myLeft{ width: 200px; height: 200px; background: #ddd;}

.myRight{ background: red}

.myLast{ background:purple; height:140px}

////////此時浮動 元素 和 不需要浮動的元素 被包在同一個 父親下

? ?

左側(cè)

? ?

右側(cè)

? ?

最后一個

IE6 下

元素繼承浮動跑到 浮動元素旁邊 而且 有自己的背景

IE8+ 和標(biāo)準

最后一個DIV沒繼承浮動 但是 元素內(nèi)的 內(nèi)容 被擋在浮動DIV后面,背景消失,鉆入浮動元素底下。

此時 給右側(cè)DIV加clearfix ?class名;如下圖:

? ?

左側(cè)

? ?

右側(cè)

? ?

最后一個

標(biāo)準下和ie6+ 下 效果不變;

? ?

左側(cè)

? ?

右側(cè)

? ?

? //換種方法加上class為clearit的div

? ?

最后一個

ie6+ 和標(biāo)準下 如下圖:

此時 ie6+和標(biāo)準下 顯示效果一致 ?浮動被清除;

這種簡單結(jié)構(gòu)的時候 也可給 最后一個div 設(shè)置 clear:both 這個屬性和值;也能得到此效果,

在結(jié)構(gòu)比較復(fù)雜 清除頻繁的時候 不如 在浮動元素后面 加一個

更方便, ? ?當(dāng)然 能用after偽類清除浮動的時候盡量用 偽類清除,這要 既減少冗余代碼,用能便于以后修改和維護!??!

? ? ?

? ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J的外補...
    _Yfling閱讀 14,126評論 1 92
  • 當(dāng)在這一個頁面上實現(xiàn)布局和定位有幾種不同的技術(shù)。使用哪種技術(shù),很大程序上取決于內(nèi)容和目標(biāo)頁面,因為有很多技術(shù)比別人...
    lulu_c閱讀 1,216評論 0 5
  • 1、垂直對齊 如果你用CSS,則你會有困惑:我該怎么垂直對齊容器中的元素?現(xiàn)在,利用CSS3的Transform,...
    kiddings閱讀 3,297評論 0 11
  • @轉(zhuǎn)自GitHub 介紹一下標(biāo)準的CSS的盒子模型?低版本IE的盒子模型有什么不同的?(1)有兩種, IE 盒子模...
    YT_Zou閱讀 1,383評論 0 1
  • 轉(zhuǎn)載自:Swift中的閉包(Closure) 概念 閉包在Swift中非常有用。通俗的解釋就是一個Int類型里存儲...
    李華光閱讀 2,728評論 0 3

友情鏈接更多精彩內(nèi)容