一周前我已将此提交给Webkit bugzilla(包括完整的 CSS 和 HTML),但到目前为止还没有收到回复。同时,我想知道是我还是 Webkit 在做一些奇怪的事情。我已经找到了一种解决方法,只是在寻找导致这种差异的确切原因的答案。
这是我正在经历的:(
来源:mindcontrol.nl)
在 Chrome 10.0.648.204、Safari 5.0.3 (7533.19.4)、Firefox 4.0 和 IE 8 版本中测试。
这是相关代码。我已经在 HTML 中隔离了这段代码,以查看周围的对象是否引起了问题,但问题仍然存在。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
[...]
<div id="top">
<div id="logo">
<a href=""><strong><span style="color: #005288;">pre</span><span style="color: #00aeef;">view</span></strong> <span style="color: #fcaf17;">website</span></a>
</div>
<div id="topmenu">
<ul>
<li><a href=""><span>over</span> ons</a></li>
<li><a href=""><span>onze</span> partners</a></li>
<li><a href="">contact</a></li>
<li><a href="">helpdesk</a></li>
</ul>
</div>
<div style="clear: both;"></div>
</div>
和CSS:
#container, #top, #contentcontainer {
padding: 12px;
}
#logo {
float: left;
margin: 0;
font-size: 2em;
letter-spacing: -2px;
}
#topmenu ul, #mainsubmenu ul {
margin: 0;
padding: 0;
list-style-type: none;
}
#topmenu li, #mainsubmenu li {
display: inline;
}
#topmenu li {
margin-left: 20px;
}
#topmenu li:first-child {
margin-left: 0;
}
#topmenu a {
color: #005288;
}
#topmenu a:hover {
color: #00aeef;
}
#topmenu a span {
color: #005288;
}
我首先测量了所有 div,看看它们在 Gecko 和 Webkit 中是否具有相同的自动计算尺寸,并且它们的宽度测量值都完全相同(当然 Webkit 上的高度不同)。在 Chrome 的 Firebug lite 和 Firefox (4) DOM-inspector 中它是 390 像素。
即使这 390 像素不足以容纳整个列表,div 也可以简单地向左扩展。当字体呈现稍有不同或
同样奇怪的是,如果我删除
#topmenu li:first-child {
margin-left: 0;
}
从 CSS 中,这对列表中第一个元素的位置没有任何作用。相反,它改变了 LI 在第二行的位置!然后,“Helpdesk”将奇怪地与“Over ons”对齐。
我的解决方法:如果我为至少 390(当前宽度)加上 20 像素(我使用第一个子元素删除的边距)为至少 410 像素的最小总固定宽度定义顶部菜单 DIV 的固定宽度,则所有元素都保持不变线。
喜欢听听每个人对此的看法。