2011-05-03 108 views
0

我有一個CSS菜單設置在這裏:IE空白樣的錯誤,但不是空白的錯誤

http://pans.saebermedia.com/

的問題是,我注意到IE不能正常顯示菜單,現在我米回到使用我的電腦來解決它有IE8。我正在使用兼容模式。

我注意到了兩個問題。在子菜單上(說「資源中心」),每個項目之間會有額外的間距,當光標通過時它會關閉菜單。這聽起來像IE空白錯誤,但我用PHP去掉了白色空間。如果我使用float:left; clear:left;它會導致菜單在Firefox和IE中的長度相等。

有人知道發生了什麼事嗎?

+0

這是用於IE6還是7?你有沒有嘗試使用'zoom:1'給鏈接hasLayout? – Mindthetic 2011-05-04 12:05:13

回答

1

我測試了我的解決方案只能在IE 7

中的元素:

li.menu-item 

你必須改變

display:block; 

display:inline; 
+0

它的工作,所以我不明白爲什麼有人投票呢?你爲什麼這麼做? – 2011-05-06 19:35:29

+0

因爲我在Ie7上測試它,它**不**工作;) – 2011-05-06 19:40:51

+0

而獲勝者是.. :) – 2012-06-11 14:44:39

0

哇,這花了我有點。你應該真的減少你投擲在這些元素上的CSS數量。您正在覆蓋很多級聯值等。但是,有兩個主要值是IE7遇到的問題。

第一個是min-width#main-nav > ul > li ul a。出於某種原因,在a上具有此值的IE7正在使其忽略它爲display: block。這可能與父母被錯誤拼寫爲inline-block(見#2)有關。

其次是display: inline-blockli S IN的.sub-menu繼承了以上li.menu-itemul.submenu。當我刪除這些項目IE7開始適當的行事。

在所有情況下,這與您所稱的「IE空白錯誤」無關。當計算空白的拼接時,inline-block元素的處理方式與inline元素的處理方式不同。 This is per the spec。 IE沒有錯誤,任何瀏覽器都不會將012空白空間縮小到inlineinline-block元素之間的單個空白(不使用bikesheding: discard)違反了規範。

+0

@ Rogue-Coder試試我的解決方案它更容易:) – 2011-05-06 20:33:18

+0

@lord_t,但它不起作用。將「display:inline;」添加到包含「display:block」元素的元素將導致其他問題。 – 2011-05-06 20:37:17

+0

所以你說這個,我的回答是解決問題的方法......也許不是最好的,但它是。 – 2011-05-06 20:51:26