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


Posted in Javascript onOctober 26, 2017

先看一张效果图

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

思路:

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

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

3、获取整个表格的高度

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

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

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

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

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

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表格固定表头且表头随横向滚动而滚动,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 面向对象继承
Nov 26 Javascript
JavaScript CSS修改学习第六章 拖拽
Feb 19 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
Jun 24 Javascript
关于Javascript回调函数的一个妙用
Aug 29 Javascript
jQuery实现判断控件是否显示的方法
Jan 11 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
JavaScript根据json生成html表格的示例代码
Oct 24 Javascript
vue实现微信分享链接添加动态参数的方法
Apr 29 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
Mar 09 Javascript
vue2.0 watch里面的 deep和immediate用法说明
Oct 30 Javascript
纯JavaScript实现实时反馈系统时间
Oct 26 #Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 #Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
Oct 26 #Javascript
input type=file 选择图片并且实现预览效果的实例
Oct 26 #Javascript
js 只比较时间大小的实例
Oct 26 #Javascript
基于Require.js使用方法(总结)
Oct 26 #Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 #Javascript
You might like
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
angular动态表单制作
2018/02/23 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
node.js获取参数的常用方法(总结)
2017/05/29 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
python write无法写入文件的解决方法
2019/01/23 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
电力安全事故反思
2014/04/27 职场文书
委托书的写法
2014/09/16 职场文书
学生上课说话检讨书
2014/10/25 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
同乡会致辞
2015/07/30 职场文书
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript