Firefox中的相对位置[重复]

Posted

技术标签:

【中文标题】Firefox中的相对位置[重复]【英文标题】:position relative in firefox [duplicate] 【发布时间】:2011-11-29 13:39:30 【问题描述】:

可能重复:Does Firefox support position: relative on table elements?

这是一个示例:全角菜单作为表格,ul-s 作为下拉菜单。 http://cssdesk.com/dW7WS

在 ie 和 opera 中运行良好,但在 Firefox 下拉列表中 uls 在整个屏幕上拉伸!

有什么帮助吗?

【问题讨论】:

全角菜单作为表格 - 第一个错误。 在 IE9 中根本没有为我显示菜单。 【参考方案1】:

position: relative 不适用于表格单元格(<td>display: table-cell)。

来自规范:http://www.w3.org/TR/CSS21/visuren.html#propdef-position

'position:relative' 对 table-row-group 的影响, 表头组、表尾组、表行、表列组、 table-column、table-cell 和 table-caption 元素未定义。

所以,Firefox 没有做错任何事,尽管我确实希望它能够复制其他浏览器并使其正常工作。

要完成这项工作,您需要在每个 td 中添加一个包装器 div(并调整您的 CSS 选择器):

<table id="mainmenu">
    <tr>
        <td>
            <div style="position: relative;">
                <a href="#">..</a>
                <ul>
                    ..
                </ul>
            </div>
        </td>

        ..
    </tr>
</table>

【讨论】:

谢谢你,三十点 - 你的回答是最有帮助的。你能告诉我,该容器 div 必须应用什么样式? 不客气。您应该将#mainmenu td 的内容移至#mainmenu td &gt; div。您还应该将#mainmenu td:hover &gt; ul 更改为#mainmenu td:hover &gt; div &gt; ul。我在这里只做了第一个:cssdesk.com/hmWSd。反正就是这样。 再次感谢三十点!完美! bugzilla.mozilla.org/show_bug.cgi?id=63895【参考方案2】:

就像@Jared Farrish 所说,使用表格进行布局是不好的做法,也是这里的问题。

#mainmenu ul li 
    width: 100%;

导致 li 元素显示 100% 的屏幕。我建议您将菜单包装在容器 div 中,这里绝对不需要表格,您应该将菜单放在无序列表中,例如:-

<ul>
   <li class="parent_node"> Menu Header 1
        <ul class="sub_node">
             <li> Sub item 1</li>
        </ul>
   </li>
   <li class="parent_node"> Menu Header 2
        <ul class="sub_node">
             <li> Sub item 1</li>
        </ul>
   </li>  
</ul>

【讨论】:

我使用表格是因为我需要全角菜单,使用 div 我只能使用 display:table-cell 来制作它,这在 ie6 中不受支持。 我必须添加,我需要全宽菜单,菜单项拉伸在整个宽度上。

以上是关于Firefox中的相对位置[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Firefox:之前位置绝对不正确[重复]

在 Firefox 中不显示边框,表格上的边框折叠,位置:tbody 上的相对或单元格上的背景颜色

Firefox 和 Chrome 中的绝对定位问题

Firefox和IE中的ul样式[重复]

如何从Firefox中的选择中删除向下图标[重复]

Firefox 中的 Flexbox 溢出问题 [重复]