【问题标题】:Absolute position table cell (td) relative to table row (tr)相对于表格行 (tr) 的绝对位置表格单元格 (td)
【发布时间】:2014-11-12 02:12:34
【问题描述】:

是否可以相对于包含该 td 的表格行 (tr) 来绝对定位表格单元格 (td)。

例如考虑下面的html:

<table>
 <tr>
   <td>tr1 td 1</td>
   <td>tr1 td 2</td>
   <td class="last">tr1 td 3</td>
 </tr>
 <tr>
   <td>tr2 td 1</td>
  <td>tr2 td 2</td>
  <td class="last">tr2 td 3</td>
</tr>
<tr>
  <td>tr3 td 1</td>
  <td>tr3 td 2</td>
  <td class="last">tr3 td 3</td>
 </tr>
</table>

和css如下:

tr{position:relative}

td.last{ position:absolute; left: 10px; top: 40px}

在上面的例子中,我可以从 tr 中取出最后一个 td 并将其相对于 tr 的绝对位置。

编辑:它在 Firefox 版本 33.0 中工作,但在 Chrome 版本 38 中不工作。在 chrome 中,td 相对于 table 而不是 tr。

请查看 http://jsfiddle.net/n5s53v32/2/ 的 jsfiddle。

【问题讨论】:

  • 当你需要做这样的事情时,这表明你绝对不应该使用桌子。表格最好留给表格数据。表格不适合布局选择。
  • 你试过了吗?
  • 是的,你可以 (jsfiddle.net/n5s53v32) - 但问题是,为什么???
  • @Pointy 感谢您的指导。
  • 关于您的编辑:它在 Chrome 中运行良好。

标签: javascript jquery html css


【解决方案1】:

浏览器对表格非常严格。当您超出表格的设计工作范围时,它就无法正常工作。

但是,您可以使用固定定位的技巧来欺骗浏览器,使其不考虑放错位置的表格单元格,因为它完全不符合正常流程:

  • transform 属性添加到表格行,使其充当固定位置容器。选择一个不会有任何视觉影响的,比如transform: scale(1,1);

  • 将表格单元格设置为position: fixed,然后可以相对于转换后的行移动:

tr {
  position:relative;
  transform:scale(1,1);
}

td.last{
  position:fixed;
  left: 10px;
  top: 40px;
}
<table>
 <tr>
   <td>td 1</td>
   <td>td 2</td>
   <td class="last">td 3</td>
 </tr>
    <tr>
   <td>td 1</td>
   <td>td 2</td>
   <td class="last">td 3</td>
 </tr>
    <tr>
   <td>td 1</td>
   <td>td 2</td>
   <td class="last">td 3</td>
 </tr>
</table>

【讨论】:

  • 哇!!这就是我正在寻找的东西。非常感谢:)
  • FWIW,这在 Safari (9.0.1) 上不起作用 - 所有绝对的 tds 都在同一个位置,而不是相对于它们各自包含的行
【解决方案2】:

您不能将单元格从桌子上移开(据我所知)。

【讨论】:

  • 是的,您实际上可以重新定位它们
  • 您可以给它们填充.. 并在单元格内移动内容。但是您不能将单元格与表格分开。
  • @KidBilly 是的,你当然可以做到。
  • @KidBilly 是的,您可以像其他元素一样使用绝对和相对位置重新定位它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2014-05-22
  • 2023-03-14
  • 2019-02-22
  • 1970-01-01
相关资源
最近更新 更多