閉合浮動(清除浮動)

2021-07-25 05:15:50 字數 2184 閱讀 1328

什麼是css清除浮動?

網路上流行的說法是:在非ie瀏覽器(如firefox)下,當容器的高度(height) 為auto,且容器的內容中有浮動(float為left或right)的元素,在這種情況下,容器的高度不能自動伸長以適應內容的高度,使得內容溢位到 容器外面而影響(甚至破壞)布局的現象。這個現象叫浮動溢位,為了防止這個現象的出現而進行的css處理,就叫css清除浮動。」

對於這種因為內部擁有浮動元素而導致parent容器在高度自適應時,只能根據無浮動的元素進行高度的自適應(類似於下種情況):

html部分:

class

="parent"

>

class

="child1"

>

class

="child2"

>

css部分:

.parent

.child1

.child2

針對以上這種情況,我使用的方法大致為四種:

「第一種,在parent容器中,在子元素的最後(以例子為參考在child2後)加入乙個空的塊級元素,並給它乙個擁有clear:both屬性的clear的類選擇器。」

html**:

class

="parent"

>

class

="child1"

>

class

="child2"

>

class

="clear"

>

css**:

.parent

.child1

.child2

.clear

/*新增空元素用於清除浮動*/

執行效果:

優點:簡單,**少,瀏覽器支援好

缺點:如果頁面浮動布局多,則需要很多空標籤

「第二種,在parent容器中新增overflow:auto的屬性,並針對於ie6增加zoom:1的屬性。」

html部分:

class

="parent"

>

class

="child1"

>

class

="child2"

>

css部分(只有parent的部分發生變化,其餘參照最先):

.parent

執行效果:與第一種方法相同。

優點:不存在結構和語義化問題,**量極少

缺點:多個巢狀後,firefox某些情況會造成內容全選;ie中 mouseover 造成寬度改變時會出現最外層模組有滾動條等,firefox早期版本會無故產生focus等

原理:必須定義width或zoom:1,同時不能定義height,使用overflow:hidden時,瀏覽器會自動檢查浮動區域的高度.

「第三種,在parent容器新增乙個:after偽元素,並使用content:"."或者為" "在元素的後面生成了內容為乙個點的塊級元素,並使用一切方法使這個塊級元素隱藏並清除浮動clear:both。」

html部分不變。

css部分(新增.parent:after偽物件,其餘不變):

.parent

:after

(資質代辦)

複製**

執行效果不變。

「第四種,讓parent容器也浮動。」

只需給parent容器新增 float:left,也可閉合浮動。

優點:**少

缺點:會導致整個頁面大部分都處於浮動狀態,容易出現問題

針對於這4種方法我更常用第一種和第三種,個人覺得這2種方法結果清晰,而且不會發生的大的錯誤,推薦使用。

清除浮動 or 閉合浮動?

在網頁布局中我們會經常用到浮動,有了它我們可以更容易地實現我們想要的效果,但浮動過後往往會留下一些隱患。這時,我們通常會做一件事清除浮動,但清除浮動也會經常留下隱患,如下 效果圖如下 雖然foot中使用clear both清除浮動,但是main的高度無法自適應子元素的高度,導致塌陷 箭頭所指 下面介...

關於清除浮動與閉合浮動

在給html新增樣式的構成中,css是必不可少的的,然而css中有一些功能的實現可以通過不同的方法實現,通過效果檢視好像並沒有什麼不同,那它們之間到底有什麼本質區別呢,又有哪些概念被我們無意的忽略或者無視了呢,突然想總結總結這一類的問題,本篇隨筆算是本人對於 清除浮動 的歸納吧.在布局的時候我們經常...

CSS中常用的清除浮動(閉合浮動)的方法

1.使用空標籤清除浮動。即 這種方法在大部分環境下可以使用,但是在有些情況下會出現相容問題 ie6瀏覽器當中,div即使是空的,也會存在預設行高。解決辦法 設定其高度為0,並設定overflow hidden。它的主要弊端在於在頁面中增加了乙個無意義的元素 2.使用overflow hidden 此...