jquery datatable设置垂直滚动后,表头(th)错位问题

jquery datatable设置垂直滚动后,表头(th)错位问题

问题描述:

我在datatable里设置:”scrollY”: ‘300px’,垂直滚动属性后,表头的宽度就会错位,代码如下:

<!-- HTML代码 -->
<table id="demo" class="table" cellspacing="0" width="100%">
    <thead class="the-box">
        <tr>
            <th style="width: 50px;text-align: left;font-size: 13px; padding-left: 8px">表头1
            </th>
            <th style="width: 100px;text-align: left;font-size: 13px; padding-left: 8px">表头2</th>
        </tr>
    </thead>
    <tbody></tbody>
</table>
//加载表格
$('#demo').dataTable().fnDestroy();
$('#demo').dataTable({
    data: tableData, //json数据
    "bProcessing": true,//正在处理提示
    "scrollY": '300px', //支持垂直滚动
    "scrollCollapse": true,
    "paging": false,
    "columnDefs": [{ //数据渲染
        "render": function (data, type, row) {
            return '<div class="text-indentation-s" title="' + data + '">' + data + '</div>';
        },
        "targets": 0
    }, {
        //"visible": false,
        "render": function (data, type, row) {
            return '<div class="text-indentation-b" title="' + data + '">' + data + '</div>';
        },
        "targets": [1]
    }]
});

效果:

解决方法:

给 table 设置一个样式:table-layout:fixed (固定表格布局):

<!-- HTML代码 -->
<table id="demo" class="table" style="table-layout:fixed" cellspacing="0" width="100%">
    <thead class="the-box">
        <tr>
            <th style="width: 50px;text-align: left;font-size: 13px; padding-left: 8px">表头1
            </th>
            <th style="width: 100px;text-align: left;font-size: 13px; padding-left: 8px">表头2</th>
        </tr>
    </thead>
    <tbody></tbody>
</table>

固定表格布局与自动表格布局相比,允许浏览器更快地对表格进行布局。
在固定表格布局中,水平布局仅取决于表格宽度、列宽度、表格边框宽度、单元格间距,而与单元格的内容无关。
通过使用固定表格布局,用户代理在接收到第一行后就可以显示表格。

posted @ 2016-04-18 14:20  rysinal  阅读(6421)  评论(0编辑  收藏  举报