html清除浮動方法
一、.clearfloat{clear:both;}
1、clear語法:
clear : none | left|right| both
2、clear引數值說明:
none : 允許兩邊都可以有浮動物件
both : 不允許有浮動物件
left : 不允許左邊有浮動物件
right : 不允許右邊有浮動物件
3、clear解釋:
該屬性的值指出了不允許有浮動物件的邊情況,又物件左邊不允許有浮動、右邊不允許有浮動、不允許有浮動物件。
4、css結構
div{clear:left}
div{clear:right}
div{clear:b
二、div clear常用地方 - TOP
我們常常用於使用了float css樣式後產生浮動,最常用是使用clear:both清除浮動。比如一個大物件內有2個小物件使用了css float樣式為了避免產生浮動,大物件背景或邊框不能正確顯示,這個時候我們就需要clear:both清除浮動
三、css+div案例 - TOP
DIVCSS5案例說明:這裡設定一個css寬度(css width)為500px;盒子,css邊框(css border)為紅色,css背景(css background)為黑色、css padding為10px盒子,裡面包裹著2個小盒子,一個css 浮動靠右(float:right)、一個css float靠左(float:left),兩者邊框為白色,背景顏色為灰色,寬度為200px,css高度(css height)為150px。這樣我們來觀察案例效果,看浮動產生並使用clear清除浮動。
oth}二、.clearfix{*zoom:1}
zoom是IE專用屬性,firefox等是不支援的。它的本來作用是設定或檢索物件的縮放比例,但這作用幾乎用不到。
可以讓網頁實現IE7中的放大縮小功能。比如你想讓你的網頁縮小為原來的一半,那麼就在body中加入style="zoom:0.5"
設定zoom:1可以在IE6下清除浮動、解決margin導致的重疊等問題。
通常,當浮動子元素導致父元素塌陷的時候,只要給父元素加上overflow: hidden;來解決,但是對於IE不行,需要觸發其hasLayout屬性才可以。
zoom:1就是IE6 專用的 觸發 haslayout 屬性的。hasLayout是IE特有的一個屬性。很多的IE下的css bug都與其息息相關。在IE中,一個元素要麼自己對自身的內容進行計算大小和組織,要麼依賴於父元素來計算尺寸和組織內容。當一個元素的hasLayout屬性值為true時,它負責對自己和可能的子孫元素進行尺寸計算和定位。
hasLayout對於內聯元素也可以有效果,當內聯元素的hasLayout為true的時候,可以給這個內聯元素設定高度和寬度並得到期望的效果。具體關於hasLayout的知識點,可以另外搜尋。
通常,在給低版本的IE做相容的時候會用到zoom:1。例如,清除浮動的時候,我們會這麼寫
.clearfix::after{content: ".";clear: both;display: block;visibility: hidden;overflow: hidden;height: 0;*zoom:1}
為了防止低版本的IE瀏覽器不支援after選擇器或者某些屬性,在最後加上zoom:1來清除浮動。
為了實現inline-block的相容的時候,我們會這麼寫:{display: inline-block;*display:inline;*zoom:1;}因為在IE6、IE7下,只有設定在預設顯示方式為inline的元素上才會生效。前面說過,當內聯元素的hasLayout為true的時候,可以給這個內聯元素設定高度和寬度並得到期望的效果,所以這樣做可以達到相容inline-block的效果。
這裡還要補充一點,為什麼*display:inline;*zoom:1;前面有*,*放在css屬性前面,表示這個屬性僅僅應用到Internet Explorer 7 以及以下版本。因為Internet Explorer 版本 7 以及以下承認非字母數字(除了下劃線)字首的屬性。所以這裡,IE7以上的版本作用的是display: inline-block;而在IE7及以下的版本中作用的是display:inline;zoom:1。
三、.clearfix:before,.clearfix:after{display:table;content:"";line-height:0}
在這個.clearfix類名前後各加一個偽類,偽類的屬性為{display:table;content:""},這段程式碼的作用是清除浮動的方法之一。
四、.clearfix:after{clear:both}