首页 > 语言 > JavaScript > 正文

JS实现table表格固定表头且表头随横向滚动而滚动

2024-05-06 15:46:19
字体:
来源:转载
供稿:网友

JS的开发过程中,如果有大量的数据,需要进行比较和查看,我们一般需要固定头并启动一些列,那么错新技术频道小编就一起来了解JS实现table表格固定表头且表头随横向滚动而滚动的介绍吧!

先看一张效果图

这里写图片描述

思路:

1、头部用一个table并用一个div包裹着, 表格的具体内容用一个table

2、头部外面的div用positon: relative相对定位

3、获取整个表格的高度

4、获取表格的dom(或者包裹着表格的dom)距离页面顶部的距离 offsetTop

5、滚动的零界点的距离 表格的高度+表格距离页面顶部的距离 如果滚动超过这个 就让头部的top值归0或原封不动

这里写图片描述

当然还有很多可以优化的地方 我只是展示一个小思路 嘿嘿嘿

题外话 为啥用红色表头 因为显眼哇 哈哈

JS代码

/**     * 最重要的一点是头和身体是两个table 然后定位用relative 然后通过滚动来计算     * */      function FixedHead (){        if( !(this instanceof FixedHead) ){          return new FixedHead()        };        this.$dom = $('.dataTables_scrollHead'); // 表头外层dom        this.offsetTop = this.$dom.offset().top; // 表头外层dom距离顶部的高度        this.parents = this.$dom.parents('.dataTables_scroll'); // 表头外层dom最外面的盒子(包裹着table的盒子)        this.outBoxHeight = this.parents.height(); // 表头外层dom最外面的盒子(包裹着table的盒子)的高度        this.maxHeight = this.offsetTop + this.outBoxHeight; // 滚动的零界点 最多能滚动到哪里        this.scroll();      }      FixedHead.prototype = {        constructor: FixedHead,        scroll: function(){          var that = this;          $(window).scroll(function(){            var scrollTop = $(this).scrollTop();            if((scrollTop > that.offsetTop) && (scrollTop < that.maxHeight)){              that.$dom.css('top', (scrollTop - that.offsetTop + 50)+'px') // 这个50是因为我的头部导航固定在顶部 高是50 所以要加上            }else {              var topCss = that.$dom.css('top');              if(topCss === '0px' || topCss === 'auto'){              }else {                that.$dom.css('top', '0px')              }            }          })        }      }

综上所分析的关于JS实现table表格固定表头且表头随横向滚动而滚动,大家都了解了吗?希望对想要了解这方面信息的有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选