CSS如何清除浮動?css清除浮動的五種方法總結

來源:互聯網
上載者:User
這篇文章給大家介紹的內容是關於CSS如何清除浮動?css清除浮動的五種方法總結,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。

方法一(使用空標籤帶clear屬性)

標籤可以是div br hr

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

優點:簡單,代碼少,瀏覽器安全色性好。

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

在浮動元素下加<p class="clear"></p> .clear{ height:0px;font-size:0;clear:both;},但是在ie6下,塊元素有最小高度,即當height<19px時,預設為19px

解決方案:font-size:0;或overflow:hidden; 在浮動元素下加<br clear="all">用以清除浮動

方法二(給浮動元素的父元素添加overflow屬性)解決了通過空標籤元素清除浮動而不得不增加無意代碼的弊端。

使用該方法是只需在需要清除浮動的元素中定義CSS屬性:overflow:auto

overflow:auto;是讓高度自適應,zoom:1;是為了相容IE6,也可以用height:1%;的方式解決,

注意:zoom不符合W3C標準。overflow:hidden也可以實現。

<ul style="overflow:auto;zoom:1><li>AAA</li><li>BBB</li><li>CCC</li></ul>

方法三:(給浮動的元素的容器添加浮動,即為父級添加float來清除浮動)

<div style="float: right;background-color: #1a1a1a;">   <div style="float: right;width: 300px;height: 300px;background-color: #2a85a0;">    </div>   <div style="width: 500px;height: 200px;background-color: #8a6d3b">    </div></div>

給浮動元素的容器也添加上浮動屬性即可清除內部浮動

缺點:會使其整體浮動,影響布局,不推薦使用。

方法四: (使用after偽對象清除浮動)

after 虛擬元素(注意這不是偽類,而是虛擬元素,代表一個元素之後最近的元素)和 IEhack ,可以完美相容當前主流的各大瀏覽器,這裡的 IEhack 指的是觸發 hasLayout。

通過after虛擬元素實現元素末尾添加一個看不見的塊元素(Block element)清理浮動。

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

after偽對象非IE瀏覽器支援,所以並不影響到IE/WIN瀏覽器。具體寫法可參照以下樣本。使用中需注意以下幾點。

一、該方法中必須為需要清除浮動元素的偽對象中設定height:0,否則該元素會比實際高出若干像素;

二、content屬性是必須的,但其值可以為空白,討論該方法的時候content屬性的值設為".",

<style type="text/css"> .listinfo:after{      display:block;      clear:both;      content:"";        visibility:hidden;      height:0;} <ul class="listinfo"><li>AAA</li><li>BBB</li><li>CCC</li></ul>

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

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

方法與添加一個空標籤類似,只是此處用浮動元素緊鄰的元素

使用方式:

在網頁主要布局時使用:after虛擬元素方法並作為主要清理浮動方式;

在小模組如ul裡使用overflow:hidden;(留意可能產生的隱藏溢出元素問題);

如果本身就是浮動元素則可自動清除內部浮動,無需格外處理;

本文中使用鄰接元素清理之前的浮動。

使用相對完美的:after虛擬元素方法清理浮動,文檔結構更加清晰;

BUG修正:

(1)、雙倍邊距bug處理 IE6 時,另一個需要記住的事情是,如果在和浮動方向相同的方向上設定外邊距(margin),會引發
雙倍邊距。

快速修正:給浮動設定 display:inline; 而且不用擔心,它依然是區塊層級元素。
(2)、3像素間距是指挨著浮動元素的文本會神奇的被踢出去3像素,好像浮動元素的周圍有一個奇怪的力場一樣。

快速修正:在受影響的文本上設定寬度或高度。
(3)、IE7 中,底邊距 bug是當浮動父元素有浮動子項目時,這些子項目的底邊距會被父元素忽略掉。

快速修正:用父元素的底內補白(padding)代替。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.