当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS实现table表格固定表头且表头随横向滚动而滚动

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

先看一张效果图

这里写图片描述

思路:

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表格固定表头且表头随横向滚动而滚动,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网