淺談css中浮動和清除浮動帶來的影響

 

有很多時候,我們都會用到浮動,而我們有時候?qū)Ω又皇且恢虢?,卻不是太清楚它到底是怎么回事,不知道各位有沒有和我一樣的感覺,只知道用它,卻不知道它到底是怎么回事,所以,在學(xué)習(xí)的過程中,就要把一個概念不是很清晰的問題把它弄清楚了,便于我們以后的使用。早些時候,W3C規(guī)定出來的浮動實際并不是為了布局所用,當(dāng)時是為了做文字環(huán)繞才使用到浮動,后來有人發(fā)現(xiàn)用它來做布局也挺不錯啊,但是,用到了浮動,是要付出一定的代價的,我們就必須要處理浮動所帶來的影響。接下來我們就聊聊浮動的那些事兒,此分享僅供參考,有什么不足的地方希望各位博友指正!
 
首先我們要知道,css中的塊級元素在頁面中是獨占一行的,自上而下排列,也就是我們所說的流,通常我們稱之為標(biāo)準(zhǔn)流,在這里我以div為例,div是塊級元素,如下圖。
可很清楚的看得到,div是獨自占用一行的,div2和div3是不會排在div1后面,這是在標(biāo)準(zhǔn)流中的理論,但是,有些時候,我們的需求不僅僅是這樣,我們想著如何在一行中顯示多個div元素,所以,標(biāo)準(zhǔn)流已經(jīng)不能滿足我們的需求,這個時候我們就需要用到浮動,我們這樣理解,浮動就是讓這個div元素脫離標(biāo)準(zhǔn)流,漂浮在標(biāo)準(zhǔn)流的上面?,F(xiàn)在,我給div2加上一個向左的浮動,給個fload:left;然后來看看會發(fā)生什么,看圖吧,上效果低千言萬語!
如圖可以看出,黃色的div不見了,其實它并不是不見了,而是跑到了綠色盒子的下面,這個時候我們就要想到了,因為我們給了div2向左浮動,div2已經(jīng)脫離了標(biāo)準(zhǔn)流,相當(dāng)于它已經(jīng)和黃色盒子、紅色盒子不在一個層次上,所以,黃色盒子就會頂上去跑到綠色盒子的下面,占據(jù)著綠色盒子的位置,就是我們現(xiàn)在看到的效果。好,理解了上面的,讓我們接著來,現(xiàn)在我給黃色盒子和綠色盒子都加上左浮動,再看看效果:
 
現(xiàn)在我們看到div2和div3都脫離的標(biāo)準(zhǔn)流,此時,div3發(fā)現(xiàn)div2也是浮動的,所以div3就會跟隨著div2之后,而div2發(fā)現(xiàn)上邊的元素div1是標(biāo)準(zhǔn)流中的元素,因此div2的相對垂直位置不會改變,頂部仍然和div1元素的底部對齊,由于是左浮動,所以,左邊的div2在最左邊。
接下來我們來看看不同的:
如果我把div2和div3都設(shè)置成右浮動的話,看圖如下:
現(xiàn)在我們可以看到,div2和div3都漂浮到了最右邊。但是有一點我們可以發(fā)現(xiàn),因為是向右浮動,右邊是最前,所以div2會第一個向右浮動,div3隨著緊跟div后面向右浮動,這個時候就很容易的理解了,由于div1是在標(biāo)準(zhǔn)流上,它是獨自占用一行的,所以div2和div3不會跑到上面去。
 
為了方便理解,讓我們再看一個例子,如圖:

 

現(xiàn)在我有四個div,現(xiàn)在他們分別沒有浮動,都在標(biāo)準(zhǔn)流里,每個div獨占一行,現(xiàn)在我給div2和div4分別加一個左浮動,然后給div3增加50px的寬度,便于理解,來看看效

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言: