相对于表格行 (tr) 的绝对位置表格单元格 (td)

San*_*kar 2 html javascript css jquery

是否可以相对于包含该 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>
Run Code Online (Sandbox Code Playgroud)

和CSS如下:

tr{position:relative}

td.last{ position:absolute; left: 10px; top: 40px}
Run Code Online (Sandbox Code Playgroud)

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

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

请检查 jsfiddle:http://jsfiddle.net/n5s53v32/2/

LcS*_*zar 5

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

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

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

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

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

td.last{
  position:fixed;
  left: 10px;
  top: 40px;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)