css清除浮動的原理

2022-02-21 14:24:32 字數 2177 閱讀 1820

最近學習css發現了高度塌陷時候要清除浮動,為了理解清楚浮動原理,網上找了不少資料,發現都寫的不是很清楚,而且都是一模一樣的內容,我在裡分享一下我對清楚浮動原理的理解,

如果你已經很了解什麼是浮動浮動的效果你可以直接跳轉到三.如何清除浮動(重點)閱讀

一.什麼是浮動

首先我們需要知道定位 

元素在頁面中的位置就是定位,解決問題之前我們先來了解下幾種定位方式 

1、普通流定位 static(預設方式)

普通流定位,又稱為文件流定位,是頁面元素的預設定位方式 

頁面中的塊級元素:按照從上到下的方式逐個排列 

頁面中的行內元素:按照從左到右的方式逐個排列 

但是如何讓多個塊級元素在一行內顯示? 

這裡就引出了浮動定位 

2、浮動定位 float

float屬性 取值為 left/right 

這個屬性原本不是用來布局的,而是用來做文字環繞的,但是後來人們發現做布局也不錯,就一直這麼用了,甚至有些時候都忘了用他做文字環繞 

3、相對定位 relative

元素會相對於它原來的位置偏移某個距離,改變元素位置後,元素原本的空間依然會被保留 

屬性:position 

取值:relative 

配合著 偏移屬性(top/right/bottom/left)實現位置的改變

4、絕對定位 absolute

如果元素被設定為絕對定位的話,將具備以下幾個特徵 

1、脫離文件流-不佔據頁面空間 

2、通過偏移屬性固定元素位置 

3、相對於 最近的已定位的祖先元素實現位置固定 

4、如果沒有已定位祖先元素,那麼就相對於最初的包含塊(body,html)去實現位置的固定 

屬性:position 

取值:absolute 

配合著 偏移屬性(top/right/bottom/left)實現位置的固定

5、固定定位 fixed

將元素固定在頁面的某個位置處,不會隨著滾動條而發生位置移動 

屬性:position 

取值:fixed 

配合著 偏移屬性(top/right/bottom/left)實現位置的固定

二.浮動的效果

浮動 之後會怎麼樣?

1、浮動定位元素會被排除在文件流之外-脫離文件流(不佔據頁面空間),其餘的元素要上前補位 

2、浮動元素會停靠在父元素的左邊或右邊,或停靠在其他已浮動元素的邊緣上(元素只能在當前所在行浮動) 

3、浮動元素依然位於父元素之內 

4、浮動元素處理的問題-解決多個塊級元素在一行內顯示的問題 

注意 1、一行內,顯示不下所有的已浮動元素時,最後乙個將換行 

2、元素一旦浮動起來之後,那麼寬度將變成自適應(寬度由內容決定) 

3、元素一旦浮動起來之後,那麼就將變成塊級元素,尤其對行內元素,影響最大 

塊級元素:允許修改尺寸 

行內元素:不允許修改尺寸 

4、文字,行內元素,行內塊元素時採用環繞的方式來排列的,是不會被浮動元素壓在底下的,會巧妙的避開浮動元素

浮動 之後會有什麼樣的影響? 

由於浮動元素會脫離文件流,所以導致不佔據頁面空間,所以會對父元素高度帶來一定影響。如果乙個元素中包含的元素全部是浮動元素,那麼該元素高度將變成0(高度塌陷)

三.如何清除浮動(重點)

解決方案 及 原理分析

網上有很多種方法,我這裡只介紹一種非常好用的方法,設定class名為clearfix

原理:如果子元素全部浮動,父元素就會塌陷,所以在所有浮動子元素後新增乙個沒有浮動元素把父元素撐起來,這個元素找不到、不佔據空間,不能讓它裡面有內容,有內容也要隱藏

.clearfix:after

.clearfix:after

/*解決ie的問題*///visibility:hidden;隱藏元素,但是位置留著//display:none;隱藏元素,不佔據空間,徹底隱藏//after:偽物件選擇符

CSS清除浮動原理

每當我們需要使用float來設定元素的時候,因為float這個屬性自身不佔據空間的原因 下層塊級元素擠壓上層塊級元素,導致畫面無法顯示出來,因此需要清除浮動,而清除浮動有兩個方法 當設定完父元素height屬性以後,只需根據子元素的高度來對父元素進行變動 father此時父元素的高度為300,無論子...

CSS清除浮動 清除float浮動

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

CSS清除浮動 清除float浮動

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