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里选择超链接的实现代码
May 22 Javascript
jQuery is()函数用法3例
May 06 Javascript
node.js适合游戏后台开发吗?
Sep 03 Javascript
JavaScript中实现map功能代码分享
Jun 11 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
Nuxt.js踩坑总结分享
Jan 18 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
Babel 入门教程学习笔记
Jun 13 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
浅谈Vue项目骨架屏注入实践
Aug 05 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循环结构实例讲解
2014/02/10 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
python进程类subprocess的一些操作方法例子
2014/11/22 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
介绍一下linux的文件权限
2012/02/15 面试题
2013年高中生自我评价
2013/10/23 职场文书
产品工艺师的岗位职责
2013/11/15 职场文书
无传销社区工作方案
2014/05/13 职场文书
人事任命书范文
2014/06/04 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书