after before清除浮動原理

2021-09-07 06:18:58 字數 1112 閱讀 5775

先來看一段**

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>document

title

>

<

style

>

h1span

pstyle

>

head

>

<

body

>

<

div>

<

h1>我是h1

h1>

<

span

>

span

>

div>

<

p>我是p

p>

body

>

html

>

在早期我們通過在div標籤中新增了乙個空的span標籤,並且給這個空的span清除浮動。但是這樣的話就需要每次都新增乙個空的標籤,所以一些前輩就想出來用::after::before來清除浮動,從效果上來看,after和before也是乙個標籤,所以我們就可以利用這個偽元素來清除浮動,從根本上來說它和加乙個span標籤來清除浮動是一樣的。

這個例子的問題就是,如果父盒子沒有給高度,但是裡面的子元素浮動了,或者絕對定位,固定地位,都會使這個子元素脫離文件流,使父元素不能夠獲取到子元素的高,也就是不能自適應子元素的高了,既然不能自適應子元素的高了,那麼父元素的高就是0,既然是0那麼後面的元素自然就跑上來了。

其實最重要的不是after和before,而是浮動的元素找浮動的元素,你通過乙個沒有浮動的元素將它們隔離開了。 

我以前一直不太明白為什麼可以直接用clear來清除浮動,還要給這個元素加個空標籤,其實是因為雖然你可以清除它上面的浮動,但是它上面的那個盒子的高度還是0。通過給大盒子裡面新增元素清除浮動的話,就會觸動bfc,使這個盒子和其他的盒子隔離開,使其父元素的高能夠自適應子盒子的高。

浮動 清除浮動

在css布局中分為內聯元素 display inline 和塊狀元素 display block 塊狀元素缺省會佔據一行,可設定高度寬度以及邊距,而內斂元素不會也不能設定。常見的內斂元素有 a span input select,常見的塊狀元素有 h1 h6,p,div,ul,table。浮動元素是...

CSS清除浮動 清除float浮動

css清除浮動方法集合 一般浮動是什麼情況呢?一般是乙個盒子裡使用了css float浮動屬性,導致父級物件盒子不能被撐開,這樣css float浮動就產生了。浮動產生樣式效果截圖 本來兩個黑色物件盒子是在紅色盒子內,因為對兩個黑色盒子使用了float浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不...

CSS清除浮動 清除float浮動

css清除浮動方法集合 一般浮動是什麼情況呢?一般是乙個盒子裡使用了css float浮動屬性,導致父級物件盒子不能被撐開,這樣css float浮動就產生了。浮動產生樣式效果截圖 本來兩個黑色物件盒子是在紅色盒子內,因為對兩個黑色盒子使用了float浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不...