要注意以下幾點:
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裡面,由於某種原因,我需...