【问题标题】:CSS absolute positioned object inside table-cell displayed object in FirefoxFirefox中表格单元格显示对象内的CSS绝对定位对象
【发布时间】:2013-08-03 13:56:09
【问题描述】:

我在 display:table-cell 对象内使用绝对元素进行 CSS 定位时遇到了很大问题。除 Firefox 外,所有浏览器都能正确呈现。

我的 HTML 如下所示:

<ul class="slider">
    <li rel="sl1">
        <span class="sltitle">Item 1</span>
        <span class="pointer"></span>
    </li>
    <li rel="sl2">
        <span class="sltitle">Item 2</span>
        <span class="pointer"></span>
    </li>
    <li rel="sl3">
        <span class="sltitle">Item 3</span>
        <span class="pointer"></span>
    </li>
</ul>

和 CSS:

.slider {
    list-style: none;
    display: table;
    width: 100%;
    height: 100%;
    position: relative;
}

.slider li  {
    display: table-cell;
    border: 1px solid #1C1A1A;
    position: relative;
    overflow: hidden;
}

.slider li span.pointer {
    display: block;
    border: 1px solid red;
    width: 100%;
    height: 100%;
    cursor: pointer;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 99;
}

这是 JSFIDDLE http://jsfiddle.net/zur4ik/SN7zL/

请在 Chrome 中打开此链接,然后在 Firefox 中打开,您会看到不同之处。 您知道如何解决此问题的任何正确方法吗?

【问题讨论】:

  • 问题是 Firefox 包含滚动条吗?还是边界重叠? (两者都有?)

标签: html css firefox


【解决方案1】:

Firefox 存在绝对定位问题,display:table-cell - see this

您需要将元素包装在具有相对定位的块元素中,然后它将起作用:

Example

【讨论】:

  • 这确实修复了 Firefox 的发行者!谢谢@Pete
【解决方案2】:

可能是这个问题导致的问题 - Does Firefox support position: relative on table elements?

还有 - Positioning context on table-cell element in Firefox

使用 div 将元素包装为 position:relative。

http://jsfiddle.net/N6bUU/2/

.rel {
    position:relative;
    display:block;
    height: 100%;
    width:100%;
}

【讨论】:

  • 我找到了这个解决方案,但是当我用 position:relative 将它包装在 DIV 中时,它会丢失父元素的高度。我的意思是,这个 .pointer 元素应该是 100% 的高度 - 正如你在更新的小提琴中看到的那样,它不是 100% 的高度。
  • 使用 而不是
    ,就像在 Pete 的回答中一样。
  • 我忘了添加一些css规则 - .rel { position:relative;显示:块;高度:100%;宽度:100%; }
  • 感谢@WaNgeL,Pete 的解决方案提供了帮助。 +1 为您提供帮助。
猜你喜欢
相关资源
最近更新 更多
热门标签