什麼是浮動?
原理:在css中使用float:left和float:right,使元素脫離文件流。同時顯示為類似display:inline-block的形式(可以定義寬高,但是又不會換行)。最大好處是相比於之前的table布局的,更具有靈活性。
不清除浮動會產生什麼後果?
比如 我想要如下這樣的布局效果:
html**可以如下寫:
<css**如下:div
class
="div1"
>
<
div
class
="left"
>left
div>
<
div
class
="right"
>right
div>
div>
<
div
class
="div2"
>div2
div>
.div1.div2.left.right但是由於有浮動產生,我們沒有清除浮動,所以會產生如下後果:如下圖所示:
也就是說 沒有清除浮動 會使我們的布局變亂。
清除浮動的方法有哪些?
1.父級元素定高度。
還是上面的html**:
<css**如下:div
class
="div1"
>
<
div
class
="left"
>left
div>
<
div
class
="right"
>right
div>
div>
<
div
class
="div2"
>div2
div>
.div1.div2.left.right原理:父級div手動定義height,就解決了父級div無法自動獲取到高度的問題。
優點:簡單,**少,容易掌握
缺點:只適合高度固定的布局,要給出精確的高度,如果高度和父級div不一樣時,會產生問題.
2.新增額外的標籤。
html**如下:
<css**如下:div
class
="div1"
>
<
div
class
="left"
>left
div>
<
div
class
="right"
>right
div>
<
div
class
="clearfloat"
>
div>
div>
<
div
class
="div2"
>div2
div>
.div1.div2.left.right.clearfloat原理:新增乙個空div,利用css提高的clear:both清除浮動,讓父級div能自動獲取到高度
優點:簡單,**少,瀏覽器支援好,不容易出現怪問題
缺點:不少初學者不理解原理;如果頁面浮動布局多,就要增加很多空div,**語義化變差。
3.父元素設定overflow:hidden
通過設定父元素overflow值設定為hidden;在ie6中還需要觸發 haslayout ,例如 zoom:1;
zoom的使用方法:
zoom :normal|numbernormal:
預設值。使用物件的實際尺寸number:
百分數 | 無符號浮點實數。浮點實數值為1.0或百分數為100%時相當於此屬性的 normal 值 用白話講解就是zoom:後面的數字即放大的倍數,可以是數值,也可以是百分比。如:zoom:1,zoom:120%。 而這個屬性只要在ie中才起作用,所以很少用到它的實際用途,而最經常用到作用是清除浮動等。
html**如下:
<css可以寫成如下**:div
class
="div1"
>
<
div
class
="left"
>left
div>
<
div
class
="right"
>right
div>
div>
<
div
class
="div2"
>div2
div>
.div1.div2.left.right優點:不存在結構和語義化問題,**量極少。
缺點:內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法顯示需要溢位的元素;
4.父元素設定 overflow:auto 屬性
同樣ie6需要觸發haslayout,演示和3差不多
優點:不存在結構和語義化問題,**量極少
缺點:多個巢狀後,firefox某些情況會造成內容全選;ie中 mouseover 造成寬度改變時會出現最外層模組有滾動條等,firefox早期版本會無故產生focus等。
5. 父元素也設定浮動。
html**如下:
<css**如下:div
class
="div1"
>
<
div
class
="left"
>left
div>
<
div
class
="right"
>right
div>
div>
<
div
class
="div2"
>div2
div>
.div1.div2.left.right6.父元素設定display:table
html**如下:
<css**如下:div
class
="div1"
>
<
div
class
="left"
>left
div>
<
div
class
="right"
>right
div>
div>
<
div
class
="div2"
>div2
div>
.div1.div2.left.right原理:將div屬性變成**
優點:結構語義化完全正確,**量極少
7.使用:after 偽元素
html**如下:
<css**如下:div
class
="div1 clearfloat"
>
<
div
class
="left"
>left
div>
<
div
class
="right"
>right
div>
div>
<
div
class
="div2"
>div2
div>
.div1.div2.left.right.clearfloat:after.clearfloat由於ie6-7不支援:after,使用 zoom:1觸發 haslayout。
優點:結構和語義化完全正確
缺點:復用方式不當會造成**量增加。
總之:都有優點和缺點 具體的情況具體分析。我目前一般都用overflow:hidden來解決浮動 到目前為止還沒有碰到什麼問題。
那些年我們一起清除的浮動
方法一 after main warp自己閉合浮動了,所以footer不用再清除浮動了 float left side 我也浮動了 float left 為了建立跨瀏覽器相容的同樣的盒模型布局,我們可以把原來的清除浮動的方法改良一下,採用偽類 before 和 after clearfix befo...
那些年我們office 那些年我們一起吃過的桑葉泡
五一放假,和弟弟一起回了老家,回家之後立馬拿著小籃子出門,去尋覓讓我心心念念的桑葉泡,這個季節正是它們成熟的時候。桑葉泡是我們家這邊的叫法,其實它還有很多的別稱,比如桑葚 桑椹 桑椹子 桑蔗 桑棗 桑果 桑泡兒,桑椹等其性味甘寒,具有補肝益腎 生津潤燥 烏髮明目 利尿保健 消暑等功效。但我們吃它並不...
那些年我們一起追的前端
此博文有毒,慎點!陽光夾雜著微風滲進了屋內,輕撫著坐在工位上的我,而此時的我是心懷愧疚的,因為我正在寫著一篇不那麼像技術文章的技術文章,而且還變成了赤裸裸的標題黨.對於此,我只能懇求您暫時收起板磚,容我慢慢道來,向您訴說這文章由來的前因,說完了,再拍我也不遲 時光如梭,轉眼間三個月過去.a很榮幸的接...