1. 程式人生 > >關於浮動與清除浮動

關於浮動與清除浮動

上推 lock zoom 瀏覽器 需要 清除 睡覺 註意 自動

  • time: 2016-02-23 21:00
  • tags: css

在css布局中常用的一個屬性就是float,它可以讓div塊脫離原本的文檔流向左或向右浮動,但是...這個浮動有時候很煩,需要清除浮動,下面詳細整理一下關於浮動,為什麽要清除浮動和怎樣清除浮動。

一. float

float浮動樣式沒有靠中(浮動居中)的樣式,在css布局中如果需要讓標簽對象居中需要margin等其它方法(先偷懶下次整理(●°u°●)? ),這裏記住浮動靠右使用float:right,浮動靠左使用float:left樣式即可。例子到下面一起舉。

二.為什麽要清除浮動?

div嵌套式子元素浮動而父元素未浮動

後果:因為float會脫離文檔流,這樣就導致了父元素的height為0.

技術分享圖片

此時父元素div的height變為0,只顯示了3px的邊框:

技術分享圖片

三.如何清除浮動?

(第一類):在元素末尾添加一個內容帶有clear:both屬性的空元素

1.方法一:使用帶clear屬性的空元素

技術分享圖片

在在浮動元素的下面加了一個clear:both;的屬性,然後浮動被清除,父元素的高度被自動填充了:

技術分享圖片

2.方法二:使用CSS的:after偽元素

技術分享圖片

給浮動元素的容器添加一個clearfix的class,然後給這個class添加一個:after偽元素實現元素末尾添加一個看不見的塊元素(Block element)清理浮動。需要註意的是為了IE6和IE7瀏覽器,要添加一條zoom:1;觸發haslayout。

技術分享圖片

(第二類):觸發浮動元素父元素的 BFC (Block Formatting Contexts, 塊級格式化上下文),使到該父元素可以包含浮動元素

3.方法三:使用CSS的overflow屬性

技術分享圖片

給浮動元素的容器添加overflow:hidden;或overflow:auto;可以清除浮動,另外在 IE6 中還需要觸發 hasLayout ,例如為父元素設置容器寬高或設置 zoom:1。

技術分享圖片

4.方法四:給浮動的元素的容器添加浮動(但是這樣會使其整體浮動,影響布局,不推薦使用. )

技術分享圖片

顯示結果與方法三相同就不再列出。

四.後記

網上推薦說在網頁主要布局時使用:after偽元素方法並作為主要清理浮動方式;在小模塊如ul裏使用overflow:hidden;如果本身就是浮動元素則可自動清除內部浮動,無需格外處理;正文中使用鄰接元素清理之前的浮動。回顧一下洗洗睡覺(●°u°●)? 」

關於浮動與清除浮動