<p>固定高度</p> <div style="height: 50px;"> <i>Float Test</i> <div style="float: left; background: red; height: 50px;">Float Left</div> <i>Float Test</i> </div>
<p>overflow hidden</p> <div style="overflow: hidden;"> <i>Float Test</i> <div style="float: left; background: red; height: 50px;">Float Left</div> <i>Float Test</i> </div> <p>overflow auto</p> <div style="overflow: auto;"> <i>Float Test</i> <div style="float: left; background: red; height: 50px;">Float Left</div> <i>Float Test</i> </div>
<p>附加元素</p> <div> <i>Float Test</i> <div style="float: left; background: red; height: 50px;">Float Left</div> <i>Float Test</i> <div style="clear: both;"></div> </div>
// html <div class="clearfix"> <p>Float Test</p> <div style="float: left; background: red; height: 50px;">Float Left</div> <p>Float Test</p> <p>Float Test</p> <div style="float: left; background: red; height: 50px;">Float Left</div> <p>Float Testdas</p> <p>Float Testsdasdas</p> <p>Float Testasdasdasda</p> </div> // css .clear_fix::after { content: "."; clear: both; display: block; line-height: 0; overflow: hidden; font-size: 0; height: 0; } .clear_fix { zoom: 1; } }
方式一:固定高度,已知高度能夠使用該方式。css
方式二:父元素設置樣式屬性overflow,預知內容的寬高與父一致能夠採用該方式。html
屬性值爲hidden 若是子的內容寬高超出父的寬高,則子內容超出部分會被修剪佈局
屬性值爲auto 若是子的內容寬高超出父的寬高,則父會出現滾動條code
方式三:子元素清除浮動。該方式最爲靈活,便於理解,易上手,但會產生冗餘的代碼和元素。orm
方式四:僞元素清除浮動。建議採用該方式htm
該方式HTML代碼更加乾淨,在代碼中不會存在冗餘的元素,在document tree中,該元素依然存在。對象
該方式僅限於清除該盒子結尾的浮動,相似於方式一和二,由於僞元素僅支持在該元素內容的最開始和結尾(::before、::after)blog
渲染模型由三種組成文檔
正常流(normal flow):由塊級元素(block-level boxes)和行級元素( inline-level boxes)組成get
浮動(floats): 首先會脫離正常流,而後根據屬性向左上或者右上浮動,至最近塊級元素(block-level boxes)的上下文內容(Content)最左或最右側。
若是沒有清除浮動,浮動後,剩餘的上下文內容(浮動塌陷),會被塊級元素後的正常流元素填充,即佈局錯亂。
絕對定位(Absolute positioning):脫離全部的束縛,常稱爲脫離文檔流。當position,值爲'absolute'或者'fixed'建立新的一層,根據z-index設置層級,根據left、right、top、bottom屬性決定安置的位置。
參考資料:https://www.w3.org/TR/CSS21/visuren.html#visual-model-intro
若是一個盒子裏子對象使用了CSS float(浮動)屬性,盒子不能包裹子對象,浮動塌陷就產生了。
公式:父級對象高度(div content)小於浮動子對象高度時(div style="float: left;"),如圖:
當父對象沒有設置高度時,默認會被塊級或者行級的對象撐開高度,但不會被浮動子對象撐開高度
浮動至父對象的上下文(content)內,最左或最右,該父對象的最左或最右的寬度會減少。浮動對象是存在於上下文內的,會受盒子屬性maigin、padding、border影響(如圖綠色邊框)。
浮動後,剩餘的上下文內容(如圖黃色區域),會被塊級元素後的正常流元素填充。即佈局錯亂。