正確理解 clear both

2021-06-16 22:49:53 字數 1387 閱讀 6488

要注意以下幾點: 

1、 浮動元素會被自動設定成塊級元素,相當於給元素設定了display:block(塊級元素能設定寬和高,而行內元素則不可以)。 

2、 浮動元素後邊的非浮動元素顯示問題。 

3、 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。 

4、子元素全為浮動元素的元素高度自適應問題。 

以下詳細分析四個問題。 

一、浮動元素自動變塊級元素 

首先說說塊級元素和行內元素區別,簡單的來說,塊級元素獨佔一行,可以設定寬高以及邊距,行內元素不會獨佔一行,設定寬高行距等不會起效。常見的塊級元素有:h1~h6、p、div、ul、table,常見的行內元素有:span、a、input、select等。 

示例**: 

複製**

**如下:

border: solid 1px red; background-color: olive;">浮動元素span

background-color: olive;">浮動元素span

效果如下: 

浮動div

跟在浮動元素後邊的div

跟在浮動元素後邊的span

效果圖如下: 

(2)無clear:both的

這樣看,應該就一目了然了:原來後邊的clear:both;其實就是利用清除浮動來把外層的div撐開,所以有時候,我們在將內部div都設定成浮動之後,就會發現,外層div的背景沒有顯示,原因就是外層的div沒有撐開,太小,所以能看到的背景僅限於一條線。 

但這種辦法就是最好了的嗎? 

我這麼說,當然答案就不是了。可以採用通過hack實現: 

複製**

**如下:

test div

看完解決辦法,咱們來看裡邊的原理: 

(1)、首先是利用:after這個偽類來相容ff、chrome等支援標準的瀏覽器。 

:after偽類ie不支援,它用來和content屬性一起使用設定在物件後的內容,例如: 

a:after 

這個css將會讓a標籤內的文字後邊加上link文字文字。 

(2)、利用「* html」這個只有ie6認識的選擇符,設定縮放屬性「zoom: 1;」實現相容ie6。 

(3)、利用「*:first-child + html」這個只有ie7認識的選擇符,設定縮放屬性「zoom: 1;」實現相容ie7。

正確理解 clear both

原文 要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳...

正確理解 clear both

要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...

正確理解Handle物件

上古時期的程式設計師,肯定都知道handle物件,一般中文翻譯成控制代碼.一般的handle在實現上,都是乙個整數,而這個整數可以理解為乙個指標,指標指向的位址呢,又儲存了另外乙個指標.之所以這麼搞,是因為這樣搞可以讓真實的物件可以挪動.考慮乙個乙個物件a,儲存在handle裡面,由於某種原因,我需...