CSS3 清除浮動

2021-09-11 12:51:21 字數 2229 閱讀 1405

一、 目的

通過本文,讓大家可以明白清除浮動的原理和幾種方法,最後得出一種本文認為最好用的方法。 本文也會同步到我的個人**。

二、 內容簡介

1、 引入,還原浮動本來的意義

2、 說明,實際開發中常用浮動來做什麼

3、 提問,為什麼要清除浮動

4、 回答,如何清除浮動以及常用的幾種方法

5、 結論,得出本文認為最好用的方法

複製**

三、 正文

1、 浮動本來的意義浮動的意義原本僅是用來讓文字環繞在周圍而已。

通過上圖可以看到,設定左浮動可以將從正常文件流中抽取出來,後面的元素會忽略浮動元素原來的位置,所以可以看到以塊元素顯示的span標籤插入到了下面,但是,我們發現文字卻不會嵌入到下面,因為這就是浮動最純粹的意義--讓文字環繞在周圍(關於為什麼文字不會插入浮動元素下面在網上也有一些討論,大家可以去搜尋一下,本文在此就不做更詳細的解釋了)。

ps: 如果想讓文字也插入到浮動元素下面,可以通過設定絕對定位來實現。

// html**

"origin1">

![img](

想象我是一大段文字

"float1">

![img](

想象我是一大段文字

複製**

// css**

.origin1 span

.float1 img

.float1 span

複製**

2、 浮動經常被用來做什麼因為浮動可以讓塊狀元素併排顯示,所以經常用來做導航欄,內容分塊欄等布局。

// html**

"section2">

複製**

// css**

.section2 li

.section2 li a

複製**

3、 為什麼要清除浮動

通過上圖可以看到,當三個板塊左浮動以後,因為它們脫離了正常文件流,所以它們的父元素ul在不設定高度的情況下,無法被子元素撐開(能夠看到背景色是因為我設定了ul的padding為10px),所以當你在後邊新增元素的時候,自然會排在ul後邊,也就是插入到了3個浮動的板塊下面。這並不是我們想要的,這就是要清除浮動的原因。

// html**

"new">我是跟在ul後面的新div

複製**

// css**

ul ul li

.new

複製**

4、 如何清除浮動(1) 在最後乙個浮動的 li 元素後邊新增乙個空的塊狀元素div,並設定clear:both以清除所有浮動。

// html**

"new">我是跟在ul後面的新div

複製**

效果: ul後邊的div元素確實可以在浮動元素下邊排列,並且設定margin、padding等也是針對浮動元素的下邊框。缺點: 多出了乙個冗餘標籤,並沒有任何結構意義。

(2) 設定父元素ul的overflow: hidden或者overflow: auto。

// css**

ul 複製**

效果: 對於ul後面的元素來說,它們可以在浮動元素下邊依次排列了。缺點: 採用這種overflow方法時可能會對採用定位position的元素產生影響,因為在ul的範圍內,超出的部分將會被隱藏,所以如果定位元素處在ul超出的範圍內,那麼會被隱藏。

(3) 採用偽類方法,在最後乙個浮動元素的後邊,新增clear:both。

// css**

ul:after

複製**

效果: 很好的清除了浮動帶來的影響,並且沒有附加作用,也沒有新增無語義的標籤。缺點: 暫時還沒發現。

css3 清除浮動

eg 三個div,父級div下面有兩個div分別float left和float right 1 style 2.container 3.fl 4.fr 5style 6 body 7 div class container 8 div class fl 向左浮動 div 9 div class f...

CSS3浮動與清除浮動

浮動的設計初衷 實現文字環繞效果。浮動的特徵 脫離標準文件流,導致父元素高度塌陷,向左或者向右浮動直到遇到其他的浮動元素。浮動產生的原因 盒子裡的子元素使用了浮動屬性,脫離了文件流,導致父元素無法被撐開。浮動造成的 父級的背景無法顯示,父級的邊框無法被撐開,以及父級與子級之間的margin和padd...

CSS3清除浮動3種方法

浮動這裡要好好琢磨一下,挺麻煩,但是不難。問題 如果乙個父容器,兩個子容器div,兩個子容器為了顯示,乙個左浮動,乙個右浮動,兩個子容器都脫離了文件流,造成父容器沒有元素,這種情況下該怎麼做?問題如下圖 兩種方法 1,在兩個div後再設定乙個div,並且不設定寬高 寬高為0 然後清除上面兩個div浮...