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 相关文章推荐
翻译整理的jQuery使用查询手册
Mar 07 Javascript
js加解密 脚本解密
Feb 22 Javascript
超轻量级的基于jquery的三级展开列表
Apr 26 Javascript
JQury slideToggle闪烁问题及解决办法
Jul 05 Javascript
JS检测输入字符是否包含非法字符的示例代码
Feb 11 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
Mar 11 Javascript
jQuery EasyUI Dialog拖不下来如何解决
Sep 28 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
Jul 12 Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 Javascript
JavaScript多线程运行库Nexus.js详解
Dec 22 Javascript
详解react-redux插件入门
Apr 19 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
Aug 12 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
快速开发一个PHP扩展图文教程
2008/12/12 PHP
php addslashes和mysql_real_escape_string
2010/01/24 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
php格式化时间戳
2016/12/17 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
基于JQuery制作的产品广告效果
2010/12/08 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
python程序变成软件的实操方法
2019/06/24 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
如何对python的字典进行排序
2020/06/19 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
动物科学专业毕业生的自我评价
2013/11/29 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
学雷锋倡议书
2015/01/19 职场文书
会计工作检讨书
2015/02/19 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
python使用glob检索文件的操作
2021/05/20 Python
部分武汉产收音机展览
2022/04/07 无线电