我们如何在html表中冻结第一列和标题(有多行)

时间:2012-05-16 05:49:13

标签: javascript freeze

我已经尝试了很多解决方案来冻结第一列和标题(它有多行)但在每个解决方案中我都必须使用自定义css(css根据解决方案)。

在我的情况下,我不能改变我以前的CSS。我想要在div滚动中的代码我可以冻结我的表(这是动态的)。

请提供解决方案。

3 个答案:

答案 0 :(得分:0)

我这样做了:

<table style="table-layout: fixed">
    <tr>
        <td><div style="width:100px; position:fixed;">Frozen Header text</div></td>
    </tr>
    <tr>
        <td>Some data</td>
    </tr>
<table>

我不确定如何将第一列冻结,但我想你可以尝试使用相同的策略,以及使用<col>标签进行格式化,类似于:

<col style="width:100px; position:fixed;" />

试试看,请告诉我们你的情况。

答案 1 :(得分:0)

实现我的彗星jquery和css使用。这个插件:link

这是一个jQuery插件,可以使表行和列不滚动。

它可以使用给定的HTML表对象并对其进行设置,以便它可以冻结给定数量的列或行或两者,因此固定的列或行不会滚动。

要冻结的行应放在表头部分。

它还可以结合使用colspan或rowspan属性来冻结行和列。

答案 2 :(得分:-3)

修复标头相对简单且易于实现。和列是不同的东西。

例如:

<table>
  <tr class="header"><td>header</td></tr>
  <tr><td>body</td></tr>
</table>

您必须监视onscroll envent,并检测标头是否在视图之外。 当它不在视图中时,使用getBoundingClientRect()检索tr.header的大小参数(也包括里面的TD),以及clientX和clientY。使用cloneElement(true)制作tr.header的克隆并将其放在同一个表中。然后将大小参数分配给其TD,并将此克隆元素固定为屏幕。

此解决方案不会影响您的表的样式或布局,但确实很复杂。