IE6下margin時,float浮動產生雙倍邊距

2022-05-05 04:51:11 字數 1340 閱讀 5565

今天遇到了乙個ie6下的相容性問題,雖然ie6已經不被大眾所期待了,使用者也已基本上消失的所剩無幾,但是,作為乙個問題而存在,我們有必要嘗試的去研究一下bug的改善方法

對元素float-left,然後再對元素設定margin-left:40px,除錯時候,鬼一般的出現了雙倍的margin-left,變為80px(同樣如果是float-right,margin-right亦是如此)

效果如下:

而在chrome,ie7+,均沒有這個現象產生,現象如下:

後來,在樣式中給元素新增了乙個display:inline之後,就沒有這個現象產生了,由於inline是使元素變成行內元素,那麼什麼是行內元素呢,其實就是內聯元素,只是叫法不同,描述的都是一種狀態,那麼何為內聯元素呢?就是說允許其他與之均為內聯的元素都能夠在同一行顯示,如常見的,,當然,我們對其設定寬度和高度是不起作用的,除非我們再給他加入block;

我們的標籤我們這麼理解,然後當元素變為行內元素之後,會新開闢乙個地方,而那個地方之前是沒有元素的或者沒有內聯元素排在它的前面,那麼這樣,行內元素自然就會自動的浮動到我們父級元素的邊框上,則雙倍margin的現象就會消失,取而代之的是單倍margin正常顯示,就這麼理解。

**如下:

.main

.content

.clearfix:after

當然還有乙個方法,就是我們將div改成標籤,這樣的好處就在於,標籤本身就是具有內聯屬性的內聯元素,那麼問題又來了,內聯元素對於寬度和高度是沒有效果的,但是我們加了float之後元素就會呈現出來了,要是不加就不會出現,為什麼呢(由於預設本身為內聯,故沒有加display:inline)?現象如下:

加了float之後的現象:

看來這是乙個大眾耳熟能詳的問題啊,筆者不禁為自己知識的淺陋而感慨

然後得出的結果如下:

由於對元素float之後,會使得元素自動變為block,因為幾個元素之間的浮動,是需要緊挨著元素的邊框,如果不是block,就不能實現浮動。然後內聯元素會根據樣式中設定的寬度和高度來調整自身的大小,如果樣式中沒有設定寬度和高度,那麼就會自適應為其元素預設的寬度和高度。

樣式如下:

.main

IE6下的效果

1.ie6有寬度border實現透明 如果想使得邊框顏色透明,在其餘瀏覽器下比較簡單,直接使用 border color transparent 但在ie6下這個辦法不行,可以通過下面的方式實現 border color tomato filter chroma color tomato 或者 bo...

jsp在ie6中css的margin屬性失效問題

今天寫乙個登入頁面,其中輸入使用者名稱和密碼的div我使用了margin 0 auto的css來使它居中。結果在chrome和firefox下面顯示正常,在ie6下這個margin屬性失效。檢視了頁面和css,沒法發現 有問題 頁面比較簡單 新建乙個html,將body體中的 拷過去,ie中顯示正常...

IE6下margin雙倍的問題解決辦法

有時候我們給div乙個margin屬性的時候,在ie6下會發現,這個margin間距產生了雙倍的效果,例如 float left margin left 10px 首頁 這段 在ff和ie7以上版本均正常,但是在ie6下,左間距就會變為20px,這是因為,ie6下當div有float浮動屬性時mar...