随机Firefox使用display:table时出现问题

时间:2010-04-22 18:45:03

标签: css firefox

我们试图实现的视觉目标是一个水平菜单,其中一些链接可能跨越多行,但所有链接应垂直居中。

在兼容的浏览器中,这可以通过CSS使用display:table来实现。样本标记:

<ul>
    <li><a href="#">Link</a></li>
    <li><a href="#">Link<br />spanning lines</a></li>
    <li><a href="#">Link</a></li>
</ul>

CSS:

ul {
    display: table
}

ul li {
    display:table-cell;
    vertical-align:middle;
}

ul li a {
    display: block;
}

这很有效。大多数时候。发生的事情是,对于某些人来说,在Windows或OSX上使用某些版本的firefox 3.x,有时在初始页面加载时,LI将会低于其他版本。

页面重新加载可以在99%的时间内解决问题。

这个bug难以重现。它似乎是随机的,充其量。我无法在我的XP机器上实现它,但可以在我的OSX机器上暂时弹出它。

视觉示例:

我们想要什么:

link 1      link 2      link 3      link 4

我们有时会得到什么:

link 1      link 2      link 3
link 4

我找不到太多关于这个问题的参考,虽然我在这里提到了这个可能与之相关的提及:

CSS menu broken in Firefox (display:table-cell;)

有没有人遇到这个和/或知道可能是什么造成的?

1 个答案:

答案 0 :(得分:2)

如果用户使用的是Firefox 3.5或更早版本,那么如果HTTP数据包中断恰好位于表格中间,则可能会遇到https://bugzilla.mozilla.org/show_bug.cgi?id=148810

您可以通过将表格上的显示切换为onload处理程序中的“none”,清除布局(例如通过执行document.body.offsetWidth)然后将显示设置回“”或“表格”来解决此问题。 ....它不漂亮,但它会起作用。

当然,您可以采取任何措施让您的用户从古老的Firefox版本升级,这对他们和您都有好处。 ;)