1. 程式人生 > >常用的幾種清除float浮動的方法 一、浮動產生原因 簡單地說,浮動是因為使用了float:left或float:right或兩者都有而產生的浮動,導致樣式缺失或者不正確顯示等問題; 二、浮動產生

常用的幾種清除float浮動的方法 一、浮動產生原因 簡單地說,浮動是因為使用了float:left或float:right或兩者都有而產生的浮動,導致樣式缺失或者不正確顯示等問題; 二、浮動產生

一、浮動產生原因

 簡單地說,浮動是因為使用了float:leftfloat:right或兩者都有而產生的浮動,導致樣式缺失或者不正確顯示等問題;

二、浮動產生負作用

1、背景不能顯示
由於浮動產生,如果對父級設定了(CSS background背景CSS背景顏色CSS背景圖片,而父級不能被撐開,所以導致CSS背景不能顯示。

2、邊框不能撐開
如果父級設定了CSS邊框屬性(css border),由於子級裡使用了float屬性,產生浮動,父級不能被撐開,導致邊框不能隨內容而被撐開。

3、margin padding設定值不能正確顯示
由於浮動導致父級子級之間設定了css padding、css margin

屬性的值不能正確表達。特別是上下邊的padding和margin不能正確顯示。

三、css解決浮動,清除浮動方法 

首先列舉一個小案例:

<style>
.box{margin: 50px auto;border:1px solid #ccc;background: #fc9;color:#fff;}
.red{width: 80px;height: 100px;background: red;float:left;}
.sienna{width: 80px;height: 100px;background: sienna;float:left;}
.blue{width: 80px;height: 100px;background: blue;float:left;}

</style>
<body>
<div class="box">
<div class="red">1</div>
<div class="sienna">2</div>
<div class="blue">3</div>
</div>
</body>
子元素都設定了float屬性,父元素div高度不能撐開,樣式margin屬性顯示有問題;
方法一:新增新的元素 、應用 clear:both;
在浮動的盒子之下再放一個標籤,在這個標籤中使用clear:both,來清除浮動對頁面的影響.
注意:一般情況下不會使用這一種方式來清除浮動。因為這種清除浮動的方式會增加頁面的標籤,造成結構的混亂.
.clear{clear: both;}
<div class="box">
<div class="red">1</div>
<div class="sienna">2</div>
<div class="blue">3</div>
<div class="clear"></div>
</div>
方法二:父級div定義 overflow: auto(注意:是父級div也就是這裡的  div.outer)
原理:使用overflow屬性來清除浮動有一點需要注意,overflow屬性共有三個屬性值:hidden,auto,visible。我們可以使用hiddent和auto值來清除浮動,但切記不能使用visible值。
.over-flow{ overflow: auto; zoom: 1;}/*zoom1; 是在處理相容性問題*/
<body>
<div class="box over-flow">
<div class="red">1</div>
<div class="sienna">2</div>
<div class="blue">3</div>
</div>
</body>
方法三: 使用偽元素來清除浮動(:after,注意:作用於浮動元素的父親)
主要推薦使用這種方法清除浮動
.clearfix:after{
content:"";/*設定內容為空*/
height:0;/*高度為0*/
line-height:0;/*行高為0*/
display:block;/*將文字轉為塊級元素*/
visibility:hidden;/*將元素隱藏*/
clear:both;/*清除浮動*/
}
.clearfix{
zoom:1;/*為了相容IE*/
}
<body>
<div class="box clearfix">
<div class="red">1</div>
<div class="sienna">2</div>
<div class="blue">3</div>
</div>
</body>
方法四:使用雙偽元素清除浮動
.clearfix:before,.clearfix:after {
content: "";
display: block;
clear: both;
}
.clearfix {
zoom: 1;
}