CSS浮動學習小記

? ? ? ? ? CSS定位機制分為文檔流,浮動和定位。如果不對元素進行浮動處理的話,元素應該按照文檔流排列,否則元素就會脫離文檔流,漂浮在文檔流之上。

本文以div布局為例闡述浮動對元素定位的影響。

div是塊級元素,在頁面中獨占一行,自上而下排列,也就是所謂的文檔流。


A,B,C,D四個div上下依次排列

假設上圖的B左浮動,那么它將脫離標準流,但A,C,D仍然在標準流中,所以C,D會自動向上移動,占據B的位置,重新組成一個流。


C占據了B的位置,A,C,D重新組成文檔流


若讓B右浮動,可以清晰的看到A,C,D組成新的文檔流。


清晰看到A,C,D組成的文檔流

當同時對B,C設置浮動后,C會跟隨在B之后


A,D重新組成文檔流,D被B覆蓋(加深的B部分為D)

在以上的例子中B都是浮動的,但并沒有跟隨在A之后,因為A并沒有設置浮動。因此我們可以得出個結論:

假如某個div是浮動的,如果它的上一元素也是浮動的,那么這個div會跟隨在上一個元素的后邊(如果放不下才會被擠到下一行),如果上一元素是標準流中的元素,那么這個相對垂直的位置不會改變,也就是這個元素總是跟上個元素的底部對齊。

接著我把B,C,D都設成左浮動,效果如下圖


先從D開始分析,它發(fā)現上邊的元素B是浮動的,所以D會跟隨在C之后;C發(fā)現上邊的元素B也是浮動的,所以C會跟隨在B之后;而B發(fā)現上邊的元素A是標準流中的元素,因此B的相對垂直位置不變,頂部仍然和A元素的底部對齊。由于是左浮動,左邊靠近頁面邊緣,左邊是前,因此B在最左邊。

通過上面的例子可以看出:元素浮動之前,也就是在標準流中,是豎向排列的,而浮動之后可以理解為橫向排列。

清除浮動可以理解為打破橫向排列

清除浮動的關鍵字是clear,官方定義如下:

語法:

clear : none | left | right | both

取值:

none? :? 默認值。允許兩邊都可以有浮動對象

left?? :? 不允許左邊有浮動對象

right? :? 不允許右邊有浮動對象

both? :? 不允許有浮動對象

A,B兩個div,將A,B均設為左浮動,A,B都將脫離文檔流,此時要將A,B都置于文檔流中有三種方法清除浮動。


A,B脫離文檔流

清除浮動的三種方法:

方法1、 在浮動元素的最后面添加一個新元素,應用clear:both.(clear:left是清除左浮動,clear:right是清除有浮動。為了方便,一般我們都是使用clear:both)

<div class="clear" style="clear:both"></div>

方法2、浮動元素的父元素使用overflow:auto;

.parent{ overflow: auto;}

方法3、使用偽類

<div class="parent clearfix">

.clearfix:after{ content="";display:block;clear:both;zoom=1;}


三種方法都可以將A,B重新置于文檔流中
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,160評論 1 92
  • 浮動 CSS允許浮動任何元素。 浮動元素 首先,會以某種方式將浮動元素從文檔的正常流中刪除,不過它還是會影響布局。...
    exialym閱讀 1,312評論 0 6
  • 1. 居中不定高div樣式 參考:http://www.haorooms.com/post/css_div_juz...
    darr250閱讀 5,126評論 0 7
  • 妹妹家養(yǎng)了一只貓,每日里只是躺著、趴著,越來越肥,越來越懶。妹妹開玩笑說,大概是做了閹割手術,一副了無生趣的模樣。...
    開顏棠棠閱讀 362評論 0 1
  • 那還是談上一個男朋友的時候,有一天夜里,吵了架,鬧到了分手,11點鐘,我從寢室的床上爬起來,穿好衣服,喊醒了宿管,...
    甘木_閱讀 597評論 0 1

友情鏈接更多精彩內容