2011-05-03 127 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