【问题标题】:Fixed First 3 rows in a table修复了表中的前 3 行
【发布时间】:2013-11-14 07:39:52
【问题描述】:

我对此有一些问题。

我正在尝试将表格中的前 3 列(字母)设置为固定位置,而其余部分向下滚动(数字)。

/*---

JSF 处理这张表:http://jsfiddle.net/japeljoff/mVVN8/1/

<table>
<tr>
    <td>A</td>
    <td>B</td>
    <td>C</td>
    <td>D</td>
    <td>E</td>
</tr>
<tr>
    <td colspan="3">F</td>
    <td colspan="2">G</td>
</tr>
<tr>
    <td colspan="1">H</td>
    <td colspan="4">I</td>
</tr>
<tr>
    <td>0</td>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
</tr>
</table>

*/---

任何想法如何解决这个问题?

【问题讨论】:

  • 我试图将固定位置分配给我想要修复的每个单元格并且我尝试创建一个 div 并将其放在前三行的顶部。

标签: jquery css-position html-table fixed


【解决方案1】:

这需要一些工作和一些 jQuery,但您可以通过附加到窗口对象的滚动事件来完成。您必须将这些标题行标记为标题行(以便于编码)。确保将标题行包含在 &lt;thead&gt;&lt;/thead&gt; 中,并为 &lt;table&gt; 本身提供一个 ID,在本例中为“mytable”。

你必须添加一些 CSS:

.fixedTop {
  position: fixed;
  top: 0;
}

还有 JavaScript:

var $rt = $("#mytable thead");

var TableTop = $rt.offset().top;

$(window).scroll(function () {
    if ($(window).scrollTop() > TableTop) {
        $rt.addClass("fixedTop");
    } else {
        $rt.removeClass("fixedTop");
    }
});

//Set widths of the header columns
$("#mytable thead td, #mytable tbody td").width(function (i, width) {
    return $(this).width();
});

jsFiddle:http://jsfiddle.net/mVVN8/2/

【讨论】:

  • 这项工作几乎完美!新的固定标题仅向左移动 1 个像素,这让我很困扰(我是一名平面设计师)。有没有可能避免这种情况?
  • 我相信您可以调整 .fixedTop 类上的 CSS 以将其向左移动。您可能需要稍微尝试一下才能让它在所有浏览器中完美排列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
相关资源
最近更新 更多