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 相关文章推荐
JS 表单验证大全
Nov 23 Javascript
IFrame跨域高度自适应实现代码
Aug 16 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
Aug 12 Javascript
对于this和$(this)的个人理解
Sep 08 Javascript
chrome下jq width()方法取值为0的解决方法
May 26 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
BootStrap3使用错误记录及解决办法
Dec 22 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
Vue插件之滑动验证码
Sep 21 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
Jan 05 Javascript
微信小程序实现日历签到
Sep 21 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
解析strtr函数的效率问题
2013/06/26 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
php更新mysql后获取改变行数的方法
2014/12/25 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
PHP生成器简单实例
2015/05/13 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
javascript object array方法使用详解
2012/12/03 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
js实现轮播图特效
2020/05/28 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
Python threading多线程编程实例
2014/09/18 Python
在Python中处理时间之clock()方法的使用
2015/05/22 Python
python在非root权限下的安装方法
2018/01/23 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
pycharm导入源码的具体步骤
2020/08/04 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
西尔斯百货官网:Sears
2016/09/06 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
我的中国梦演讲稿1000字
2014/08/19 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS