浮動的影響及清除浮動的方法

2021-10-08 22:20:22 字數 2359 閱讀 2542

要清除浮動首先要清楚使用浮動後產生的影響

一般來說,網頁頁面元素都是按照文件流來流動,即從上到下;當然行元素是從左到右。使用浮動後,元素會改變原有的流動方式,即會浮動起來。但浮動之後,後面的元素會感知不到其存在。

eg:css樣式:

div

div:nth-of-type(1)

div:nth-of-type(2)

這裡我們設定了三個div,第乙個div浮動後第二個div(背景色為藍色)是在第乙個div上面的。因為第二個div沒有設定浮動,所以第三個div按照文件流。

這是其一,其二當父元素沒有設定寬高時,若子元素浮動,父元素是感知不到子元素高度的

css樣式:

main

main div

html:

12

3

結果圖:

可以看到子元素1,2,3,三個div元素設定了高度,但是main並沒有因為子元素而被撐開,這是因為三個子div設定了浮動,父元素並不能感知到子元素的存在。

清除浮動

父元素新增overflow,通過overflow(hidden、auto/scroll)觸發bfc清除浮動影響(不推薦使用

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

document

main

divdiv:nth-of-type(1)

div:nth-of-type(2)

額外標籤清除浮動:即在父元素中的最後乙個浮動元素後面新增乙個標籤,設定clear:both(不推薦)

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

document

main

div.red

.green

/* 這是通過額外新增標籤, */

.blue

"red"

>

"green"

>

"blue"

>

這裡只是為了方便觀察,所以給額外的div新增了顏色和大小。具體使用時,不必新增樣式,只需要clear:both。這種方式缺點很明顯,新增無意義標籤。語義化差。

::after偽元素清除浮動(推薦使用)

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

document

main

/* 追加內容 */

main::after

.clearfix

divdiv:nth-of-type(1)

div:nth-of-type(2)

"clearfix"

>

缺點:ie6-7不支援偽元素::after,需要使用zoom:1觸發haslayout.

使用::before和::after雙偽元素清除浮動(推薦使用)

"fahter clearfix"

>

"big"

>big

"small"

>small

"footer"

>

分析浮動及清除浮動影響

浮動,顧名思義,就是使文字內容浮起來和動起來,浮指的是 脫離文件流,動指的是 向設定的方向移動。脫離文件流將會導致文件內容高度等不會被常規計算,會造成常見的文字覆蓋 高度塌陷等問題影響布局效果,例如 常規的有以下幾種 1 設定clear both 不允許兩邊有浮動現象,在浮動元素後的非浮動元素中設定...

浮動及清除浮動的方法

浮動元素脫離文件流,不佔據空間。浮動元素直到它的外邊緣碰到包含框或另乙個浮動框的邊框為止。1 使用空標籤清除浮動 在所有浮動標籤後面新增乙個空標籤定義cssclear both.弊端就是增加了無意義標籤,影響文件結構美觀性。1 div style clear both div 2 使用overflo...

浮動的影響與清除浮動

影響1 div1 div2 div3,要實現dev1 div2 在第一排顯示,div3另起一行?方法 給div1 div2加浮動,1和2會脫離正常流,因為div3屬於正常流會上到第一排,並且被1和2覆蓋 就是為什麼要清除浮動,消除浮動影響 方法1 加乙個空div,clearfix 在div3前加乙個...