为什么我不能在Firefox中绝对定位生成的内容?

时间:2013-01-02 04:11:12

标签: css firefox css-selectors

我正在创建一个水平导航栏。这是它的CSS:

#topnav {
    clear: both;
    overflow: hidden;
    display: table;
}

#topnav ul {
    display: table-row;
}

#topnav ul li {
    display: table-cell;
    vertical-align: middle;
    background: #1b4260;
    position: relative;
}

#topnav a {
    display: block;
    color: white;
    padding: 10px 0px 15px 10px;
    font-size: 14px;
    width: 100px;
    text-align: center;
}

#topnav ul li+li:before{
    content: "*";
    position: absolute;
    top: 11px;
    color: #ff0000;
    float: left;
}

这是HTML:

<p>---</p>
<p>---</p>
<div id="topnav">
    <ul>
        <li>
            <a href="blah">Item 1</a>
        </li>
        <li>
            <a href="blah">Item 2</a>
        </li>
        <li>
            <a href="blah">Item 3</a>
        </li>
    </ul>
</div>

这会创建一个带有小星号分隔符的导航栏。它在每个浏览器中都很好......

...除了Firefox。 Firefox忽略生成内容上的“position:absolute”:

为什么会这样做?我的CSS做错了吗?

2 个答案:

答案 0 :(得分:2)

您还需要定位ul:

#topnav ul {
    display: table-row;
    position:absolute;
}

见这里:http://jsfiddle.net/k5hVP/1/

答案 1 :(得分:0)

我知道这并不理想,但我找到了一种方法,可以在没有定位到顶部且没有绝对定位ul的情况下完成。您移除顶部定位,并使用margin-top调整星号的位置。

http://jsfiddle.net/ajPLB/7/

Jani的解决方案让我感到担忧,因为position:relative理论上也应该起作用(并且它是较少侵入性的解决方案),但它没有,这意味着解决方案与正常无关定位优先级,似乎依赖于Firefox处理定位优先级的一些奇怪方式。