|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本章給大家介紹什么是浮動以及浮動的清除方法。有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。 一、浮動 說浮動就必須提及一下文檔流,HTML當中的元素按照從左到右,從上到下的順序進行排列稱之為文檔流,也就是正常排列。 而浮動是什么呢?浮動會讓元素脫離文檔流,假如A元素浮動了,原本排在該元素之后的元素發現A元素不在這個文檔流了,就會無視它往上接到A元素前面的元素之后(PS:但是文字并不會無視它,還會環繞A元素,也就是A元素沒有脫離文字流。
而如果使用position的絕對定位會連文字流也脫離文檔流。
浮動的好處當然是布局了,例如通過浮動來形成三列布局,文字環繞等等。但是浮動也有一個問題,那就是會導致高度的塌陷,就像上面的圖片顯示,父元素的高度塌陷了,并沒有將浮動的子元素包裹進去,這樣子就會造成布局上的錯誤。 二、BFC 什么是BFC?BFC是Block Formatting Context的縮寫,也就是塊級格式化上下文,創建BFC有以下情況: float的值不為none。 overflow的值不為visible。 display的值為table-cell, table-caption, inline-block中的任何一個。 position的值不為relative和static。 BFC的特性就是包裹浮動的元素。按照我的理解,當你創建BFC之后元素就會把里面的東西視為自己的東西,包括浮動元素,然后創建一個私有領域給包裹進來。此外BFC還有還有如下特性。 1.讓原本會疊加的上下外邊距疊加無效。將想要邊距失效的兩個盒子分別放入一個父盒子,然后為父盒子創建BFC。
2.創建BFC的元素將不會圍繞浮動元素,圖中文字用p標簽包裹并創建BFC,右上角浮動元素,可以看見文字并沒有環繞浮動元素。
三、 清除浮動的方法 清除浮動方法大致有兩類,一類是clear:both | left | right ,另一類則是創建BFC,細分又可以分為多種。 1.通過在浮動元素末尾添加一個空的標簽例如并設置樣式為clear:both | left | right ,其他標簽br等亦可。 <div class="parent">
<div class="child"></div>
<div style="clear: both;"></div>
</div>優點:簡單。 缺點:增加了額外的標簽,并且很顯然這并不符合語義化。 *使用 br標簽和其自身的 html屬性,br 有 clear=all | left | right | none;的屬性。 <div class="parent">
<div class="child"></div>
<br clear='all'>
</div>優點:簡單代碼量少,比空標簽語義化稍好。 缺點:增加了額外的標簽,并且很顯然這并不符合語義化。 2.使用::after偽元素(萬金油方法) ps:由于IE6-7不支持:after,使用`zoom:1觸發hasLayout。其實是通過 content 在元素的后面生成了內容為空的塊級元素 代碼如下: .clearfix:after {
content:"";
display:block;
height:0;
visibility:hidden;//這一條可以省略,證明請看原文精益求精部分
clear:both;
}.clearfix {
zoom:1;
}優點:結構和語義化完全正確,代碼量居中。 缺點:復用方式不當會造成代碼量增加。 偽元素還有一種寫法: // 用display:table 是為了避免外邊距margin重疊導致的margin塌陷, 內部元素默認會成為 table-cell 單元格的形式
.clearfix:before, .clearfix:after { content:""; display:table;}
.clearfix:after{ clear:both; overflow:hidden;}
.clearfix{ zoom:1; }3.父元素設置 overflow:hidden,(PS:在IE6中還需要觸發 hasLayout ,例如 zoom:1) 優點:不存在結構和語義化問題,代碼量極少。 缺點:由于hidden的原因,當內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法顯示需要溢出的元素,還會導致中鍵失效(鼠標中鍵)。 4.父元素設置 overflow:auto 屬性 優點:同上 缺點:多個嵌套后,會有bug,詳情看原文。 5.父元素也浮動 優點:代碼少 缺點:總不能一直浮動到body吧。 6.父元素設置display:table 優點:結構語義化完全正確,代碼量極少。 缺點:會造成盒模型的改變。 以上就是什么是浮動以及浮動的清除方法的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!