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技巧
Dec 06 Javascript
jQuery ajax cache缓存问题
Jul 01 Javascript
自己整理的一个javascript日期处理函数
Oct 16 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
Sep 26 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
React中的render何时执行过程
Apr 13 Javascript
JavaScript实现拖拽功能
Feb 11 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 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调用三种数据库的方法(1)
2006/10/09 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
一些不错的js函数ajax
2008/08/20 Javascript
js 操作css实现代码
2009/06/11 Javascript
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python psutil模块简单使用实例
2015/04/28 Python
浅析python协程相关概念
2018/01/20 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
个人函授自我鉴定
2014/03/25 职场文书
春风行动实施方案
2014/03/28 职场文书
供货协议书范本
2014/04/22 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
2014年协会工作总结
2014/11/22 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS