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 13 Javascript
alert和confirm功能介绍
May 21 Javascript
javascript实现浏览器窗口传递参数的方法
Sep 03 Javascript
javascript实现五星评分功能
Nov 10 Javascript
node vue项目开发之前后端分离实战记录
Dec 13 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
Vue组件全局注册实现警告框的实例详解
Jun 11 Javascript
jQuery无冲突模式详解
Jan 17 jQuery
解决vue打包后vendor.js文件过大问题
Jul 03 Javascript
Vue设置长时间未操作登录自动到期返回登录页
Jan 22 Javascript
JavaScript实现PC端横向轮播图
Feb 07 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
Session的工作方式
2006/10/09 PHP
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
基于jquery的滚动新闻列表
2010/06/19 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
深入学习Python中的装饰器使用
2016/06/20 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Python利用命名空间解析XML文档
2020/08/10 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
保护地球的标语
2014/06/17 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
秋季运动会开幕词
2015/01/28 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers