css浮動清除筆記

2021-08-28 21:54:24 字數 2039 閱讀 4746

1.在文件流中內容的高度可以撐起父元素的高度

2.在浮動流中浮動的元素是不可以撐起文件流父元素的高度(如果父元素也是浮動的就可以)

可以看到將p元素設定浮動之後,並沒有撐起父元素div

我是文字1

我是文字1

我是文字1

我是文字2

我是文字2

我是文字2

根據浮動排列的規則和浮動不能撐起父元素的高度,得到下面的結果並不奇怪

針對上面那個例子,為了讓文字1和文字2分兩排顯示,以下有幾種清除浮動帶來影響的方法

.box1
給box1的設乙個高度,浮動前,文字1是在文件流的第一行,所以文字1都是排列在第一行。此時box1有高度獨佔一行,所以box2就在文件流的第二行,文字2在浮動前也是在文件流的第二行,所以文字2最終浮動在第二行(這裡的行是以父元素div來說的)

clear屬性取值:

none: 預設取值, 按照浮動元素的排序規則來排序(左浮動找左浮動, 右浮動找右浮動)

left: 不要找前面的左浮動元素

right: 不要找前面的右浮動元素

both: 不要找前面的左浮動元素和右浮動元素

注意點:

當我們給某個元素新增clear屬性之後, 那麼這個元素垂直方向上的margin屬性就會失效

.box2
結果如下

具體操作:

在兩個盒子中間新增乙個額外的塊級元素並給這個額外新增的塊級元素設定clear: both屬性

注意點:

外牆法它可以讓第二個盒子使用margin-top屬性

外牆法不可以讓第乙個盒子使用margin-bottom屬性

在box1和box2中間加乙個wall

.wall
我是文字1

我是文字1

我是文字1

我是文字2

我是文字2

我是文字2

具體操作:

在第乙個盒子中所有子元素最後新增乙個額外的塊級元素並給這個額外新增的塊級元素設定clear: both屬性

注意點:

內牆法它可以讓第二個盒子使用margin-top屬性

內牆法它可以讓第乙個盒子使用margin-bottom屬性

在box1中的最後加乙個wall

.wall

我是文字1

我是文字1

我是文字1

我是文字2

我是文字2

我是文字2

在實際開發中,前端更推崇結構和樣式分離,所以不常用隔牆法。

利用偽元素選擇器清除浮動

本質上就是內牆法, 只不過是直接通過css**新增了內牆, 其它特性和內牆法都一樣

注意點:

ie6中不支援這種方式, 為了相容ie6必須給前面的盒子新增*zoom:1屬性

.box1::after

.box1

此類方法通過css**來修改樣式,而不是通過html來修改,更符合規範

給box1中加overflow: auto;或hidden,加*zoom:1;同樣是因為要相容ie6

CSS清除浮動 清除float浮動

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

CSS清除浮動 清除float浮動

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

CSS清除浮動 清除float浮動

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