2

我正在创建一个水平导航栏。这是它的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 在生成的内容上忽略“位置:绝对”:

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

4

2 回答 2

2

您还需要定位 ul:

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

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

于 2013-01-02T04:20:24.343 回答
0

我知道这并不理想,但我找到了一种方法来做到这一点,无需定位到顶部,也无需绝对定位ul. 您删除顶部定位,并使用 margin-top 来调整星号的位置。

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

Jani 的解决方案与我有关,因为position:relative理论上也应该有效(而且它是侵入性较小的解决方案),但它没有,这意味着该解决方案与正常的定位优先级没有任何关系,并且似乎依赖于Firefox 处理定位优先级的一些奇怪方式。

于 2013-01-02T04:24:22.290 回答