什么是浮動?有哪些消除浮動的方法?

大家好,我是IT修真院北京分院第22期的學員楊綱,一枚正直純潔善良的WEB前端程序員。

1.背景介紹

浮動是怎么誕生的?浮動最初設(shè)計的目的并沒那么多事兒,就只是用來實現(xiàn)文字環(huán)繞效果而已。

但是早期的前端開發(fā)者發(fā)現(xiàn):浮動的元素可以設(shè)置寬高并且可以內(nèi)聯(lián)排列,是介于inline和block之間的一個神奇的存在, 在inline-block出來之前,浮動大行其道。直到inline-block出來后,浮動也有它自己獨特的使用場景。

2.知識剖析

浮動到底是什么? 浮動核心就一句話:浮動元素會脫離文檔流并向左/向右浮動,直到碰到父元素或者另一個浮動元素。請默念3次!提到文檔流,那 下面我們講講什么是文檔流。

2.1 文檔流的概念

文檔流是文檔中可顯示對象在排列時所占用的位置。

將窗體自上而下分成一行行顯示,并在每行中按從左到右的順序排放元素的效果,就是文檔流直觀的表現(xiàn)。


2.3 浮動的屬性值

浮動的屬性值有三個:float:none;float:left;float:right;

浮動不是任意的,其還是在父元素的范圍之中,不能脫離于父元素的內(nèi)容區(qū)域。

我們回到前面那個頁面看看,浮動元素能不能浮動到父元素外面去

3.常見問題及為什么要清除浮動

如果我們不給父元素設(shè)置高度,我們知道如果它里面的元素不浮動的話, 那么這個外層的高是會自動被撐開的。

若浮動元素比它的父元素還高,那么它就會溢出父元素外面,點我看浮動元素溢出

當內(nèi)層元素所有浮動后,則影響更大:

(1)背景不能顯示

(2)邊框不能撐開

(3)高度塌陷等

4.解決方案

方法1:父級div定義 height

原理:父級div手動定義height,就解決了父級div無法自動獲取到高度的問題。

優(yōu)點:簡單、代碼少、容易掌握

缺點:只適合高度固定的布局,要給出精確的高度,如果高度和父級div不一樣時,會產(chǎn)生問題

建議:不推薦使用,只建議父元素高度固定的布局時使用

點我設(shè)置高度

方法2:

使用clear屬性:在相同的父元素中,浮動的子元素之后添加一個空標簽,設(shè)置樣式為:"clear:both;"標簽可以是div,也可以是p,或者br等塊元素。

原理:left在左側(cè)不允許浮動元素; right在右側(cè)不允許浮動元素; both在左右兩側(cè)均不允許浮動元素點我使用clear屬性

優(yōu)點:通俗易懂,容易掌握,適合菜鳥前期使用。

缺點:可以想象通過此方法,會添加多少無意義的空標簽,有違結(jié)構(gòu)與表現(xiàn)的分離,一旦代碼量大的話,在后期維護中將是噩夢。

建議:不推薦使用,但此方法是以前主要使用的一種清除浮動方法。

方法3:對父元素設(shè)置overflow的樣式,即overflow: auto/hidden;

原理:必須定義width,在IE6中還需要觸發(fā) hasLayout ,例如 zoom:1,同時不能定義height,使用overflow:hidden時,瀏覽器會自動檢查浮動區(qū)域的高度

優(yōu)點:不存在結(jié)構(gòu)和語義化問題,代碼量極少

缺點:內(nèi)容增多時候容易造成不會自動換行導致內(nèi)容被隱藏掉,不能和position配合使用,無法顯示需要溢出的元素;

建議:只推薦沒有使用position或?qū)verflow:hidden理解比較深的朋友使用。

點我設(shè)置overflow

5.編碼實戰(zhàn)

6.擴展思考

還有哪些清楚浮動的方法

7.參考文獻

參考一:清除浮動(clearfix)的幾種方式

參考二:學習CSS布局

參考三:css清除浮動float的三種方法總結(jié)

參考四:CSS清除浮動常用方法小結(jié)

8.更多討論

討論點:float浮動會使元素脫離文檔流,那使用position屬性的原理進行元素的定位是不是和它是一樣使元素脫離文檔流呢?假如脫離的話,他們是不是浮動到同一個層面上了?

鳴謝

感謝大家觀看

同時也感謝:胡嘉杰師兄,高峰師兄的指點

課后問答:

問:偽元素是什么?

偽元素是相對于元素的說法,用于向某些選擇器設(shè)置特殊效果。

問:偽類的使用規(guī)則?

答:菜鳥和w3school講的很清楚http://www.w3school.com.cn/css/css_pseudo_classes.asp

問:為什么說設(shè)定父元素定高很low?

特別是動態(tài)頁面中,浮動的子元素個數(shù)是會發(fā)生變化的,定高的父元素并不能滿足要求,最終還是會出現(xiàn)子元素溢出的。

ppt鏈接:https://ptteng.github.io/PPT//PPT/css-01-float-clear-yg.html#/

視頻鏈接:視頻密碼:q0jj

今天的分享就到這里啦,歡迎大家點贊、轉(zhuǎn)發(fā)、留言、拍磚~

------------------------------------------------------------------------------------------------------------------------

技能樹.IT修真院

“我們相信人人都可以成為一個工程師,現(xiàn)在開始,找個師兄,帶你入門,掌控自己學習的節(jié)奏,學習的路上不再迷?!?。

這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導??靵砼c我一起學習吧?!

猛戳這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容