你也应该给最上面ul一个相对位置,否则它确实会使用窗口本身(或主体)作为定位偏移量。
看看:http: //jsfiddle.net/gpsgv/13/
编辑
经过一番激烈的辩论(见下面的评论),Firefox 在处理类似表格的块方面似乎更加严格。除了在包含二级列表的列表项中添加一个 wrapper-div 之外,我找不到此解决方案的跨浏览器解决方案。当我创建这样的菜单时,我总是使用浮动技术。在调整列表项的大小方面,您需要做更多的工作(因为表格本身会填满空间)。基本上你会这样做:
html:
<ul class="nav">
<li>
First level 1
<ul>
<li>Second level 1</li>
<li>Second level 2</li>
</ul>
</li>
<li>First level 2</li>
<li>First level 3</li>
<li>First level 4</li>
</ul>
CSS:
ul.nav {
float: left; /* Needed as a kind of clearfix. Other clearfix techniques also possible */
}
/* be sure to add the > to prevent from second level li's to float */
ul.nav > li {
float: left;
position: relative;
}
ul.nav > li > ul {
position: absolute;
top: 30px;
left: 10px;
}
要创建与 OP 想要的结果相同的结果,请查看这个小提琴(在 chrome 和 FF 中检查,没有 IE,但应该很好):http: //jsfiddle.net/gpsgv/17/