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 相关文章推荐
Locate a File Using a File Open Dialog Box
Jun 18 Javascript
javascript级联下拉列表实例代码(自写)
May 10 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
json属性名为什么要双引号(个人猜测)
Jul 31 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
Aug 31 Javascript
11种ASP连接数据库的方法
Sep 18 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
js+html5实现手机九宫格密码解锁功能
Jul 30 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
Jul 11 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
JavaScript实现一键复制内容剪贴板
Jul 23 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 生成随机验证码图片代码
2010/02/08 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
PHP常用的三种设计模式
2017/02/17 PHP
PDO::getAttribute讲解
2019/01/28 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
JavaScript 特殊字符
2007/04/05 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
Python绘制七段数码管实例代码
2017/12/20 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
自学python的建议和周期预算
2019/01/30 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
网络安全类面试题
2015/08/01 面试题
十八大感想感言
2014/02/10 职场文书
承诺书格式范文
2014/06/03 职场文书
小学毕业感言200字
2015/07/30 职场文书
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS