清除浮動的四種方式。
浮動對頁面的影響:
如果一個父盒子中有一個子盒子,並且父盒子沒有設置高,子盒子在父盒子中進行了浮動,那么將來父盒子的高度為0.由於父盒子的高度為0,
下面的元素會自動補位,所以這個時候要進行浮動的清除。
關於清除浮動的方式:
方式一:使用overflow屬性來清除浮動
.ovh{
overflow:hidden;
}
先找到浮動盒子的父元素,再在父元素中添加一個屬性:overflow:hidden,就是清除這個父元素中的子元素浮動對頁面的影響.
注意:一般情況下也不會使用這種方式,因為overflow:hidden有一個特點,離開了這個元素所在的區域以后會被隱藏(overflow:hidden會將超出的部分隱藏起來).
方式二:使用額外標簽法
.clear{
clear:both;
}
在浮動的盒子之下再放一個標簽,在這個標簽中使用clear:both,來清除浮動對頁面的影響.
a.內部標簽:會將這個浮動盒子的父盒子高度重新撐開.
b.外部標簽:會將這個浮動盒子的影響清除,但是不會撐開父盒子.
注意:一般情況下不會使用這一種方式來清除浮動。因為這種清除浮動的方式會增加頁面的標簽,造成結構的混亂.
方法三:使用偽元素來清除浮動(after意思:后來,以后)
.clearfix:after{
centent:"";//設置內容為空
height:0;//高度為0
line-height:0;//行高為0
display:block;//將文本轉為塊級元素
visibility:hidden;//將元素隱藏
clear:both//清除浮動
}
.clearfix{
zoom:1;為了兼容IE
}
方法四:使用雙偽元素清除浮動
.clearfix:before,.clearfix:after {
content: "";
display: block;
clear: both;
}
.clearfix {
zoom: 1;
}
總結:第一種方法會將超出部分隱藏在某些時候我們想清除浮動並且保留超出部分時做不到,第二種方法會增加許多不必要的標簽,
所以我們盡量使用第三種方法來清除浮動,為什么不選擇第四種方法呢?因為第四種是第三種的改良版雖然比較簡便,但是不
嚴謹!
-----------------------------------------------------------------------------------------------
接下來說父盒子沒有高度的解決方案

首先這是一個父盒子套着子盒子,瀏覽器運行結果如下

現在想要子盒子水平排列,可以設置左浮動,

瀏覽器效果如下:

此時你會發現,父盒子沒有了高,這是因為子盒子浮動了,不能夠撐開父盒子,所以父盒子沒有了高度,這就要清除一下浮動帶來的影響,
-----------------------------------------------------------------------------------------------------------------------------------------------------
解決父盒子沒有高度的三種方法:
1、給父盒子清除浮動,添加overflow=hidden,auto也可以

瀏覽器運行如下:

2、讓父盒子有高度,那就是給父盒子也添加一個float=left,
瀏覽器運行如下:

3、給父盒子添加position=absolute,父盒子也有了高度,
以上三種方法都解決了父盒子沒有高度的問題,但是float=left和position=absolute又帶來了其它的影響,
------------------------------------------------------------------------------------------------------------
下面就是他們帶來的影響
1、這個是float=left帶來的,后面的字母也是塊級元素, 跟父盒子是平級

2、Position=absolute帶來的影響是

這個是去掉了前面盒子的背景色,下面的盒子被覆蓋了。為了顯示效果去掉了背景色。
3、接下來說overfllow=hidden帶來的影響

子盒子里面又套了一個子盒子,瀏覽器運行結果如下:

在我給test盒子脫標后,設置左右上下偏移

你會發現我的test盒子變小了,這是overflow帶來的影響,溢出就被隱藏。

上面所說的幾種方法都解決了父盒子沒有高度的問題,但是都有副作用
----------------------------------------------------------------------------------------------------------------------------
又是一種新的方法


新添加的空的盒子,沒有帶來影響。但是它浪費空間,
-------------------------------------------------------------------------------------------------------------
第二種新的方法
添加一個類

清除浮動就只需要這三部。為了保證各個瀏覽器的兼容,添加height:0;visibility:hidden;
----------------------------------------------------------------------------------------------
上面的寫法有些過時,現在比較新穎的寫法如下,before解決了沒有高度的問題,after解決清除浮動。

