【问题标题】:Firefox issue with RTL and relative table cellRTL 和相关表格单元格的 Firefox 问题
【发布时间】:2018-01-30 03:12:48
【问题描述】:

我有以下代码:

body {
  background-color: #afafaf;
}

.content {
  width: 500px;
}

.rtl {
  direction: rtl;
}

table {
  width: 100%;
}

table tr td {
  color: #ffffff;
  position: relative;
}

.row-odd {
  background-color: #ff4e4e;
}

.row-even {
  background-color: #5bfc7a;
}
<div class="content rtl">
  <table>
    <tr class="row-odd">
      <td>Cell 1</td>
      <td>Cell 2</td>
      <td>Cell 3</td>
      <td>Cell 4</td>
    </tr>
    <tr class="row-even">
      <td>Cell 1</td>
      <td>Cell 2</td>
      <td>Cell 3</td>
      <td>Cell 4</td>
    </tr>
  </table>
</div>

在 Firefox(版本:55/56/57/58)中,结果是:

在 Chrome 中,我看到以下内容:

当 TD 单元格分配了“位置:相对”属性时,会出现问题,删除时,表格在两个浏览器中都正确呈现。 由于将使用其他功能,我需要表格单元格的“位置:相对”。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 哦,是的,它似乎在 FF 中损坏了。好的,现在为什么要 position: relative 而不是 td 元素? td 中有一个元素,它的位置是absolute?或者是什么?无论如何,我添加了一个答案,让您在具有relative 位置的td 元素中有一个div(容器)。

标签: css firefox


【解决方案1】:

我认为这是一个错误

https://jsfiddle.net/32e7sz2e/

table {
  width: 100%;
  border: 1px solid black;
}

table tr td {
  color: #ffffff;
  position: relative;
  border: 1px solid white;
}

我添加了一些边框来显示表格的位置,如果我检查并设置 text-align: 对,表格会自行更正,这很有趣。可能是 FF 的某种显示问题。

如果您需要相对位置,则在单元格内添加一个包装器并将其设置为相对

https://jsfiddle.net/32e7sz2e/1/

  <td>
    <div>
      Cell 1
    </div>
  </td>
  <td>
    <div>
      Cell 2
    </div>
  </td>

【讨论】:

  • 注意 any text-align 值似乎可以解决这个问题(至少在我尝试时)。
  • 它只在我使用检查时为我解决了,当我再次用道具加载小提琴时,它不起作用。我在 Mac 上。如果它适用于 Windows,那么欢呼
  • 嗯...没有那样尝试。绝对感觉像一个错误
  • 是的,你可以在检查器中添加任何道具,它会正确显示,我只是尝试添加文本转换,它会自行更正。
  • 感谢您的建议。内部 div 的问题是它不会填满单元格的整个高度,除非明确指定表格高度并且在我的情况下表格高度取决于内容。
【解决方案2】:

一种方法是在每个td 中使用div 并在其上应用position: relative

body {
    background-color: #afafaf;
}
.tbl-container{
    height: 1px;
}
.content {
    width: 500px;
}
.rtl {
    direction: rtl;
}
table {
    width: 100%;
    height: 100%;
     position: relative;
}
table tr td {
    color: #ffffff;
}
td>div{
    position: relative;
    background: #99b;
    height:100%;
}
td>div>span{
    background:#257;
    border-radius:50%;
    width:20px;
    height:20px;
    left:20px;
    top:15px;
    position:absolute;
}
td{
    height:50px;
}
.row-odd {
    background-color: #ff4e4e;
}
.row-even {
    background-color: #5bfc7a;
}
<div class="tbl-container content rtl">
    <table>
        <tr class="row-odd">
            <td>Cell 1</td>
            <td>Cell 2</td>
            <td>Cell 3</td>
            <td>Cell 4</td>
        </tr>
        <tr class="row-even">
            <td><div>Cell 1 <span></span></div></td>
            <td><div>Cell 2 <span></span></div></td>
            <td><div>Cell 3 <span></span></div></td>
            <td><div>Cell 4 <span></span></div></td>
        </tr>
    </table>
</div>

【讨论】:

  • 感谢您的建议。内部 div 的问题是它不会填满单元格的整个高度,除非明确指定表格高度并且在我的情况下表格高度取决于内容。
  • @ArturoO,我在this answer 中使用了高度问题技术。查看它(第二个示例代码)。我将它应用于这个答案。您不需要我的技术人员指定桌子的高度。
猜你喜欢
  • 2014-07-01
  • 2011-06-27
  • 2010-11-10
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多