立即注冊 找回密碼

QQ登錄

只需一步,快速開始

查看: 4411|回復(fù): 0
打印 上一主題 下一主題

[Html 教程] CSS技巧(一):清除浮動的具體講解方法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2015-9-19 10:51:20 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
道勤網(wǎng)-數(shù)據(jù)bmrsportswear.com

親注冊登錄道勤網(wǎng)-可以查看更多帖子內(nèi)容哦。ò蕡D片、文字詳情等)請您及時注冊登錄-bmrsportswear.com

您需要 登錄 才可以下載或查看,沒有賬號?立即注冊

x

什么是CSS清除浮動?

在非IE瀏覽器(如Firefox)下,當容器的高度為auto,且容器的內(nèi)容中有浮動(float為left或right)的元素,在這種情況下,容器的高度不能自動伸長以適應(yīng)內(nèi)容的高度,使得內(nèi)容溢出到容器外面而影響(甚至破壞)布局的現(xiàn)象。這個現(xiàn)象叫浮動溢出,為了防止這個現(xiàn)象的出現(xiàn)而進行的CSS處理,就叫CSS清除浮動。

引用W3C的例子,news容器沒有包圍浮動的元素。

  1. .news {
  2.   background-color: gray;
  3.   border: solid 1px black;
  4.   }

  5. .news img {
  6.   float: left;
  7.   }

  8. .news p {
  9.   float: right;
  10.   }

  11. <div class="news">
  12. <img src="news-pic.jpg" />
  13. <p>some text</p>
  14. </div>
復(fù)制代碼

清除浮動方法

方法一:使用帶clear屬性的空元素

在浮動元素后使用一個空元素如<div class="clear"></div>,并在CSS中賦予.clear{clear:both;}屬性即可清理浮動。亦可使用<br class="clear" />或<hr class="clear" />來進行清理。

  1. .news {
  2.   background-color: gray;
  3.   border: solid 1px black;
  4.   }

  5. .news img {
  6.   float: left;
  7.   }

  8. .news p {
  9.   float: right;
  10.   }

  11. .clear {
  12.   clear: both;
  13.   }

  14. <div class="news">
  15. <img src="news-pic.jpg" />
  16. <p>some text</p>
  17. <div class="clear"></div>
  18. </div>
復(fù)制代碼

優(yōu)點:簡單,代碼少,瀏覽器兼容性好。

缺點:需要添加大量無語義的html元素,代碼不夠優(yōu)雅,后期不容易維護。


方法二:使用CSS的overflow屬性

給浮動元素的容器添加overflow:hidden;或overflow:auto;可以清除浮動,另外在 IE6 中還需要觸發(fā) hasLayout ,例如為父元素設(shè)置容器寬高或設(shè)置 zoom:1。

在添加overflow屬性后,浮動元素又回到了容器層,把容器高度撐起,達到了清理浮動的效果。

  1. .news {
  2.   background-color: gray;
  3.   border: solid 1px black;
  4.   overflow: hidden;
  5.   *zoom: 1;
  6.   }

  7. .news img {
  8.   float: left;
  9.   }

  10. .news p {
  11.   float: right;
  12.   }

  13. <div class="news">
  14. <img src="news-pic.jpg" />
  15. <p>some text</p>
  16. </div>
復(fù)制代碼

方法三:給浮動的元素的容器添加浮動

給浮動元素的容器也添加上浮動屬性即可清除內(nèi)部浮動,但是這樣會使其整體浮動,影響布局,不推薦使用。


方法四:使用鄰接元素處理

什么都不做,給浮動元素后面的元素添加clear屬性。

  1. .news {
  2.   background-color: gray;
  3.   border: solid 1px black;
  4.   }

  5. .news img {
  6.   float: left;
  7.   }

  8. .news p {
  9.   float: right;
  10.   }

  11. .content{
  12.   clear:both;
  13.   }

  14. <div class="news">
  15. <img src="news-pic.jpg" />
  16. <p>some text</p>
  17. <div class="content"></div>
  18. </div>
復(fù)制代碼

方法五:使用CSS的:after偽元素

結(jié)合 :after 偽元素(注意這不是偽類,而是偽元素,代表一個元素之后最近的元素)和 IEhack ,可以完美兼容當前主流的各大瀏覽器,這里的 IEhack 指的是觸發(fā) hasLayout。

給浮動元素的容器添加一個clearfix的class,然后給這個class添加一個:after偽元素實現(xiàn)元素末尾添加一個看不見的塊元素(Block element)清理浮動。

  1. .news {
  2.   background-color: gray;
  3.   border: solid 1px black;
  4.   }

  5. .news img {
  6.   float: left;
  7.   }

  8. .news p {
  9.   float: right;
  10.   }

  11. .clearfix:after{
  12.   content: "020";
  13.   display: block;
  14.   height: 0;
  15.   clear: both;
  16.   visibility: hidden;  
  17.   }

  18. .clearfix {
  19.   /* 觸發(fā) hasLayout */
  20.   zoom: 1;
  21.   }

  22. <div class="news clearfix">
  23. <img src="news-pic.jpg" />
  24. <p>some text</p>
  25. </div>
復(fù)制代碼

通過CSS偽元素在容器的內(nèi)部元素最后添加了一個看不見的空格"020"或點".",并且賦予clear屬性來清除浮動。需要注意的是為了IE6和IE7瀏覽器,要給clearfix這個class添加一條zoom:1;觸發(fā)haslayout。


總結(jié)

通過上面的例子,我們不難發(fā)現(xiàn)清除浮動的方法可以分成兩類:

一是利用 clear 屬性,包括在浮動元素末尾添加一個帶有 clear: both 屬性的空 div 來閉合元素,其實利用 :after 偽元素的方法也是在元素末尾添加一個內(nèi)容為一個點并帶有 clear: both 屬性的元素實現(xiàn)的。

二是觸發(fā)浮動元素父元素的 BFC (Block Formatting Contexts, 塊級格式化上下文),使到該父元素可以包含浮動元素,關(guān)于這一點。


推薦

在網(wǎng)頁主要布局時使用:after偽元素方法并作為主要清理浮動方式;在小模塊如ul里使用overflow:hidden;(留意可能產(chǎn)生的隱藏溢出元素問題);如果本身就是浮動元素則可自動清除內(nèi)部浮動,無需格外處理;正文中使用鄰接元素清理之前的浮動。

最后可以使用相對完美的:after偽元素方法清理浮動,文檔結(jié)構(gòu)更加清晰。


道勤主機提供365天*24小時全年全天無休、實時在線、零等待的售后技術(shù)支持。竭力為您免費處理您在使用道勤主機過程中所遇到的一切問題! 如果您是道勤主機用戶,那么您可以通過QQ【792472177】、售后QQ【59133755】、旺旺【詮釋意念】、微信:q792472177免費電話、后臺提交工單這些方式聯(lián)系道勤主機客服! 如果您不是我們的客戶也沒問題,點擊頁面最右邊的企業(yè)QQ在線咨詢圖標聯(lián)系我們并購買后,我們?yōu)槟赓M進行無縫搬家服務(wù),讓您享受網(wǎng)站零訪問延遲的遷移到道勤主機的服務(wù)!
本內(nèi)容系 道勤團隊 bmrsportswear.com 客服與技術(shù)人員研究整理的智慧結(jié)晶,轉(zhuǎn)載勿用于商業(yè)用途,并保留本文鏈接,侵權(quán)必究!
dsu_marcocopyright:copy_link 

【道勤網(wǎng)】- bmrsportswear.com 軟件視頻自學(xué)教程|免費教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機械設(shè)計教程|網(wǎng)站設(shè)計教程!【道勤網(wǎng)】 - 論壇版權(quán)1、本主題所有言論和圖片純屬會員個人意見,與本論壇立場無關(guān)
2、本站所有主題由該帖子作者發(fā)表,該帖子作者與【道勤網(wǎng)】- bmrsportswear.com 軟件視頻自學(xué)教程|免費教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機械設(shè)計教程|網(wǎng)站設(shè)計教程!【道勤網(wǎng)】享有帖子相關(guān)版權(quán)
3、其他單位或個人使用、轉(zhuǎn)載或引用本文時必須同時征得該帖子作者和【道勤網(wǎng)】- bmrsportswear.com 軟件視頻自學(xué)教程|免費教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機械設(shè)計教程|網(wǎng)站設(shè)計教程!【道勤網(wǎng)】的同意
4、帖子作者須承擔(dān)一切因本文發(fā)表而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
5、本帖部分內(nèi)容轉(zhuǎn)載自其它媒體,但并不代表本站贊同其觀點和對其真實性負責(zé)
6、如本帖侵犯到任何版權(quán)問題,請立即告知本站,本站將及時予與刪除并致以最深的歉意
7、【道勤網(wǎng)】- bmrsportswear.com 軟件視頻自學(xué)教程|免費教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機械設(shè)計教程|網(wǎng)站設(shè)計教程!【道勤網(wǎng)】管理員和版主有權(quán)不事先通知發(fā)貼者而刪除本文

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)閉

道勤網(wǎng)- 推薦內(nèi)容!上一條 /2 下一條

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回復(fù) !jz_fhlb! !jz_lxwm! !jz_gfqqq!

關(guān)于我們|手機版|小黑屋|地圖|【道勤網(wǎng)】-bmrsportswear.com 軟件視頻自學(xué)教程|免費教程|自學(xué)電腦|3D教程|平面教程|影視動畫教程|辦公教程|機械設(shè)計教程|網(wǎng)站設(shè)計教程【道勤網(wǎng)】 ( 皖I(lǐng)CP備15000319號-1 )

GMT+8, 2024-10-23 13:23

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回復(fù) 返回頂部 返回列表