table表头固定

今天有个项目小优化,就是报表页面太长,需要加个固定的table头,方便操作人员浏览。

       因此就需要采用css样式来固定,在网上搜了很多,但都不太满足(要嘛需要自己写好多样式,要嘛就是固定的表头在鼠标滚动时,会出现晃动,或者thead与tbody中的tr错位),尝试了很多,都快要放弃了(准备请教前端同学),最后还好又找到了一个帖子,经过略微调试了一下,比较符合我的需求。

代码简洁,无需写额外样式代码,并且表头能很好的固定。略微修改一下就可以应用到一个单独的html页面中。好了,废话不多说,直接贴代码,(没有找到上传附件的地方)如果觉得有用的同学,请复制存储为一个html文件即可。

需要引入3个线上资源(jquery.min.js、bootstrap.min.js、bootstrap.css)

<html>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.css" />
<script type="text/javascript" src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js" ></script>
<style type="text/css">
    body {
        padding-top: 50px;
    }
    #rollDiv {
        padding: 0;
        overflow-y: scroll;
        overflow-x: hidden;
    }
    .fixTable thead {
        background-color: #ecebeb;
    }

    .fix-table {
        table-layout:fixed;
        word-break:break-all;
    }
</style>
<body>
<div id="rollDiv" class="col-xs-offset-3 col-xs-6" style="margin: 0 10px;width:99%;">
    <table class="table table-bordered scrollTable fix-table">
        <thead><tr><th>Sl No</th><th>Name</th><th>Subject</th><th>Marks</th></tr></thead>
        <tbody>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        <tr><th>1</th><td>Praveen</td><td>Communication Disorders</td> <td>23</td></tr>
        </tbody>
    </table>
</div>

<script type="text/javascript">
    $(function () {
        initTableStyle();
    });

    var initTableStyle = function(){
        var $fixTable = $('#rollDiv .fixTable');
        $('#rollDiv').css('height',window.screen.height*0.7+'px');
        $('#rollDiv').scroll(function() {
            var id = '#' + this.id;
            var scrollTop = $(id).scrollTop() || $(id).get(0).scrollTop,
                    style = {
                        'position': 'absolute',
                        'left': '0',
                        'right': '0',
                        'top': scrollTop + 'px'
                    };
            if ($fixTable.length) {
                (scrollTop === 0) ? $fixTable.addClass('hidden') : $fixTable.removeClass('hidden');
                $fixTable.css(style);
            }else {
                var html = $(id + ' .scrollTable thead').get(0).innerHTML;
                var table = $('<table class="table table-bordered fixTable fix-table"><thead>' + html + '</thead></table>');
                table.css(style);
                $(id).append(table);
                $fixTable = $(this).find('.fixTable');
            }
        });
    }
</script>
</body>
</html>

html预览效果图:

190627_6bd7_1789770.png

 

转载于:https://my.oschina.net/huoyun/blog/1818250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值