2010-04-22 68 views
1

我们试图实现的视觉目标是一个水平菜单,其中一些链接可能跨越多行,但所有链接都应垂直居中。随机Firefox使用显示器时的问题:表

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

<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%的时间内修复问题。

该错误很难重现。这似乎是随机的,至多。我无法在我的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;)

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

+0

根据[这篇文章](http://blog.themeforest.net/tutorials/vertical-centering-with-css/),你使用的方法不会在IE中工作。也许你应该考虑使用不同的垂直定心技术? – 2010-04-22 21:52:58

+0

我很清楚IE的问题。 ; o)我们以不同的方式适应IE。 – 2010-04-23 16:51:15

回答

2

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

您可以通过在桌面上将显示切换为'无'来清除布局(例如,通过执行document.body.offsetWidth),然后将显示重新设置为“”或“表格”...这不太好,但它会起作用。

当然,你可以做的任何事情,让你的用户从古老的Firefox版本升级将是他们和你都很好。 ;)