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 相关文章推荐
浏览器窗口加载和大小改变事件示例
Feb 27 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
May 14 Javascript
thinkphp实现无限分类(使用递归)
Dec 19 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
JavaScript代码里的判断小结
Aug 22 Javascript
原生js实现类似fullpage的单页/全屏滚动
Jan 22 Javascript
Javascript实现页面滚动时导航智能定位
May 06 Javascript
jQuery Datatables表头不对齐的解决办法
Nov 27 jQuery
Vuepress 搭建带评论功能的静态博客的实现
Feb 17 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
May 07 Javascript
JavaScript中的 new 命令
May 22 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
Jul 11 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
基于mysql的论坛(2)
2006/10/09 PHP
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
详解js中==与===的区别
2017/01/08 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
node 版本切换的实现
2020/02/02 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
python分割文件的常用方法
2014/11/01 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
python 19个值得学习的编程技巧
2020/08/15 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
优秀老师事迹材料
2014/02/05 职场文书
好听的队名和口号
2014/06/09 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL