那些年我們一起清除的浮動

2021-07-03 20:00:31 字數 2008 閱讀 6974

方法一::after

.main:warp自己閉合浮動了,所以footer不用再清除浮動了(float:left)

.side:我也浮動了(float:left)

為了建立跨瀏覽器相容的同樣的盒模型布局,我們可以把原來的清除浮動的方法改良一下,採用偽類:before 和 :after:

.clearfix:before,

.clearfix:after

.clearfix:after

.clearfix /* ie < 8 */

需要注意的是 :after是偽元素(pseudo-element),不是偽類(某些css手冊裡面稱之為「偽物件」),很多閉合浮動大全之類的文章都稱之為偽類,不過csser要嚴謹一點,這是一種態度。

由於ie6-7不支援:after,使用 zoom:1觸發 haslayout。

該方法源自於:how to clear floats without structural markup

原文全部**如下:

鑑於 ie/mac的市場占有率極低,我們直接忽略掉,最後精簡的**如下:
.clearfix:after

.clearfix

優雅的 demo

優點:結構和語義化完全正確,**量居中

缺點:復用方式不當會造成**量增加

方法二:新增額外標籤

.main

.side

優點:通俗易懂,容易掌握

缺點:可以想象通過此方法,會新增多少無意義的空標籤,有違結構與表現的分離,在後期維護中將是噩夢,這是堅決不能忍受的,所以你看了這篇文章之後還是建議不要用了吧。

方法三:使用br標籤和其自身的 html屬性

.main

.side

優點:比空標籤方式語義稍強,**量較少

缺點:同樣有違結構與表現的分離,不推薦使用

方法四:給父元素設定overflow:hidden

.main

.side

優點:不存在結構和語義化問題,**量極少

缺點:內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法顯示需要溢位的元素;04年popo就發現overflow:hidden會導致中鍵失效,這是我作為乙個多標籤瀏覽控所不能接受的。所以還是不要使用了

方法五:給父元素設定display:table

.main

.side

優點:結構語義化完全正確,**量極少

缺點:盒模型屬性已經改變,由此造成的一系列問題,得不償失,不推薦使用

4)父元素設定 overflow:auto 屬性

同樣ie6需要觸發haslayout,演示和3差不多

優點:不存在結構和語義化問題,**量極少

缺點:多個巢狀後,firefox某些情況會造成內容全選;ie中 mouseover 造成寬度改變時會出現最外層模組有滾動條等,firefox早期版本會無故產生focus等, 請看 嗷嗷的demo,不要使用

5)父元素也設定浮動

優點:不存在結構和語義化問題,**量極少

缺點:使得與父元素相鄰的元素的布局會受到影響,不可能一直浮動到body,不推薦使用

那些年我們一起清除過的浮動

什麼是浮動?原理 在css中使用float left和float right,使元素脫離文件流。同時顯示為類似display inline block的形式 可以定義寬高,但是又不會換行 最大好處是相比於之前的table布局的,更具有靈活性。不清除浮動會產生什麼後果?比如 我想要如下這樣的布局效果 ...

那些年我們office 那些年我們一起吃過的桑葉泡

五一放假,和弟弟一起回了老家,回家之後立馬拿著小籃子出門,去尋覓讓我心心念念的桑葉泡,這個季節正是它們成熟的時候。桑葉泡是我們家這邊的叫法,其實它還有很多的別稱,比如桑葚 桑椹 桑椹子 桑蔗 桑棗 桑果 桑泡兒,桑椹等其性味甘寒,具有補肝益腎 生津潤燥 烏髮明目 利尿保健 消暑等功效。但我們吃它並不...

那些年我們一起追的前端

此博文有毒,慎點!陽光夾雜著微風滲進了屋內,輕撫著坐在工位上的我,而此時的我是心懷愧疚的,因為我正在寫著一篇不那麼像技術文章的技術文章,而且還變成了赤裸裸的標題黨.對於此,我只能懇求您暫時收起板磚,容我慢慢道來,向您訴說這文章由來的前因,說完了,再拍我也不遲 時光如梭,轉眼間三個月過去.a很榮幸的接...