先來看一段**
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浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不...