這篇文章主要講解了“CSS浮動float屬性怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“CSS浮動float屬性怎么使用”吧!
站在用戶的角度思考問題,與客戶深入溝通,找到永興網(wǎng)站設(shè)計與永興網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋永興地區(qū)。
很早以前就接觸過CSS,但對于浮動始終非常迷惑,可能是自身理解能力差,也可能是沒能遇到一篇通俗的教程。
前些天終于搞懂了浮動的基本原理,迫不及待的分享給大家。
寫在前面的話:
由于CSS內(nèi)容比較多,沒有精力從頭到尾講一遍,只能有針對性的講解。 如果讀者理解CSS盒子模型,但對于浮動不理解,那么這篇文章可以幫助你。 小菜水平有限,本文僅僅是入門教程,不當(dāng)之處請諒解! 本文以p元素布局為例。
教程開始:
首先要知道,p是塊級元素,在頁面中獨占一行,自上而下排列,也就是傳說中的流。如下圖:
可以看出,即使p1的寬度很小,頁面中一行可以容下p1和p2,p2也不會排在p1后邊,因為p元素是獨占一行的。
注意,以上這些理論,是指標(biāo)準(zhǔn)流中的p。
小菜認(rèn)為,無論多么復(fù)雜的布局,其基本出發(fā)點均是:“如何在一行顯示多個p元素”。
顯然標(biāo)準(zhǔn)流已經(jīng)無法滿足需求,這就要用到浮動。
浮動可以理解為讓某個p元素脫離標(biāo)準(zhǔn)流,漂浮在標(biāo)準(zhǔn)流之上,和標(biāo)準(zhǔn)流不是一個層次。
例如,假設(shè)上圖中的p2浮動,那么它將脫離標(biāo)準(zhǔn)流,但p1、p3、p4仍然在標(biāo)準(zhǔn)流當(dāng)中,所以p3會自動向上移動,占據(jù)p2的位置,重新組成一個流。如圖:
從圖中可以看出,由于對p2設(shè)置浮動,因此它不再屬于標(biāo)準(zhǔn)流,p3自動上移頂替p2的位置,p1、p3、p4依次排列,成為一個新的流。又因為浮動是漂浮在標(biāo)準(zhǔn)流之上的,因此p2擋住了一部分p3,p3看起來變“矮”了。
這里p2用的是左浮動(float:left;),可以理解為漂浮起來后靠左排列,右浮動(float:right;)當(dāng)然就是靠右排列。這里的靠左、靠右是說頁面的左、右邊緣。
如果我們把p2采用右浮動,會是如下效果:
此時p2靠頁面右邊緣排列,不再遮擋p3,讀者可以清晰的看到上面所講的p1、p3、p4組成的流。
目前為止我們只浮動了一個p元素,多個呢?
下面我們把p2和p3都加上左浮動,效果如圖:
同理,由于p2、p3浮動,它們不再屬于標(biāo)準(zhǔn)流,因此p4會自動上移,與p1組成一個“新”標(biāo)準(zhǔn)流,而浮動是漂浮在標(biāo)準(zhǔn)流之上,因此p2又擋住了p4。
咳咳,到重點了,當(dāng)同時對p2、p3設(shè)置浮動之后,p3會跟隨在p2之后,不知道讀者有沒有發(fā)現(xiàn),一直到現(xiàn)在,p2在每個例子中都是浮動的,但并沒有跟隨到p1之后。因此,我們可以得出一個重要結(jié)論:
假如某個p元素A是浮動的,如果A元素上一個元素也是浮動的,那么A元素會跟隨在上一個元素的后邊(如果一行放不下這兩個元素,那么A元素會被擠到下一行);如果A元素上一個元素是標(biāo)準(zhǔn)流中的元素,那么A的相對垂直位置不會改變,也就是說A的頂部總是和上一個元素的底部對齊。
p的順序是HTML代碼中p的順序決定的。
靠近頁面邊緣的一端是前,遠(yuǎn)離頁面邊緣的一端是后。
為了幫助讀者理解,再舉幾個例子。
假如我們把p2、p3、p4都設(shè)置成左浮動,效果如下:
根據(jù)上邊的結(jié)論,跟著小菜理解一遍:先從p4開始分析,它發(fā)現(xiàn)上邊的元素p3是浮動的,所以p4會跟隨在p3之后;p3發(fā)現(xiàn)上邊的元素p2也是浮動的,所以p3會跟隨在p2之后;而p2發(fā)現(xiàn)上邊的元素p1是標(biāo)準(zhǔn)流中的元素,因此p2的相對垂直位置不變,頂部仍然和p1元素的底部對齊。
由于是左浮動,左邊靠近頁面邊緣,所以左邊是前,因此p2在最左邊。
假如把p2、p3、p4都設(shè)置成右浮動,效果如下:
道理和左浮動基本一樣,只不過需要注意一下前后對應(yīng)關(guān)系。由于是右浮動,因此右邊靠近頁面邊緣,所以右邊是前,因此p2在最右邊。
假如我們把p2、p4左浮動,效果圖如下:
依然是根據(jù)結(jié)論,p2、p4浮動,脫離了標(biāo)準(zhǔn)流,因此p3將會自動上移,與p1組成標(biāo)準(zhǔn)流。p2發(fā)現(xiàn)上一個元素p1是標(biāo)準(zhǔn)流中的元素,因此p2相對垂直位置不變,與p1底部對齊。p4發(fā)現(xiàn)上一個元素p3是標(biāo)準(zhǔn)流中的元素,因此p4的頂部和p3的底部對齊,并且總是成立的,因為從圖中可以看出,p3上移后,p4也跟著上移,p4總是保證自己的頂部和上一個元素p3(標(biāo)準(zhǔn)流中的元素)的底部對齊。
至此,恭喜讀者已經(jīng)掌握了添加浮動,但還有清除浮動,有上邊的基礎(chǔ)清除浮動非常容易理解。
經(jīng)過上邊的學(xué)習(xí),可以看出:元素浮動之前,也就是在標(biāo)準(zhǔn)流中,是豎向排列的,而浮動之后可以理解為橫向排列。
清除浮動可以理解為打破橫向排列。
清除浮動的關(guān)鍵字是clear,官方定義如下: 語法: clear : none | left | right | both 取值: none : 默認(rèn)值。允許兩邊都可以有浮動對象 left : 不允許左邊有浮動對象 right : 不允許右邊有浮動對象 both : 不允許有浮動對象
定義非常容易理解,但是讀者實際使用時可能會發(fā)現(xiàn)不是這么回事。
定義沒有錯,只不過它描述的太模糊,讓我們不知所措。
根據(jù)上邊的基礎(chǔ),假如頁面中只有兩個元素p1、p2,它們都是左浮動,場景如下:
此時p1、p2都浮動,根據(jù)規(guī)則,p2會跟隨在p1后邊,但我們?nèi)匀幌M鹥2能排列在p1下邊,就像p1沒有浮動,p2左浮動那樣。
這時候就要用到清除浮動(clear),如果單純根據(jù)官方定義,讀者可能會嘗試這樣寫:在p1的CSS樣式中添加clear:right;,理解為不允許p1的右邊有浮動元素,由于p2是浮動元素,因此會自動下移一行來滿足規(guī)則。
其實這種理解是不正確的,這樣做沒有任何效果。看小菜定論:
對于CSS的清除浮動(clear),一定要牢記:這個規(guī)則只能影響使用清除的元素本身,不能影響其他元素。
怎么理解呢?就拿上邊的例子來說,我們是想讓p2移動,但我們卻是在p1元素的CSS樣式中使用了清除浮動,試圖通過清除p1右邊的浮動元素(clear:right;)來強(qiáng)迫p2下移,這是不可行的,因為這個清除浮動是在p1中調(diào)用的,它只能影響p1,不能影響p2。
根據(jù)小菜定論,要想讓p2下移,就必須在p2的CSS樣式中使用浮動。本例中p2的左邊有浮動元素p1,因此只要在p2的CSS樣式中使用clear:left;來指定p2元素左邊不允許出現(xiàn)浮動元素,這樣p2就被迫下移一行。
那么假如頁面中只有兩個元素p1、p2,它們都是右浮動呢?讀者此時應(yīng)該已經(jīng)能自己推測場景,如下:
此時如果要讓p2下移到p1下邊,要如何做呢?
同樣根據(jù)小菜定論,我們希望移動的是p2,就必須在p2的CSS樣式中調(diào)用浮動,因為浮動只能影響調(diào)用它的元素。
可以看出p2的右邊有一個浮動元素p1,那么我們可以在p2的CSS樣式中使用clear:right;
來指定p2的右邊不允許出現(xiàn)浮動元素,這樣p2就被迫下移一行,排到p1下邊。
至此,讀者已經(jīng)掌握了CSS+p浮動定位基本原理,足以應(yīng)付常見的布局。
其實,萬變不離其宗,只要讀者用心體會,再復(fù)雜的布局都可以通過總結(jié)的規(guī)律搞定。
感謝各位的閱讀,以上就是“CSS浮動float屬性怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對CSS浮動float屬性怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!