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 AJAX回调函数this指向问题
Feb 08 Javascript
js history对象简单实现返回和前进
Oct 30 Javascript
JS对img标签进行优化使用onerror显示默认图像
Apr 24 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
window.location.href的用法(动态输出跳转)
Aug 09 Javascript
手机端页面rem宽度自适应脚本
May 20 Javascript
Vue axios 中提交表单数据(含上传文件)
Jul 06 Javascript
node.js使用express框架进行文件上传详解
Mar 03 Javascript
vue实现鼠标经过动画
Oct 16 Javascript
微信小程序服务器日期格式化问题
Jan 07 Javascript
React中Ref 的使用方法详解
Apr 28 Javascript
Postman参数化实现过程及原理解析
Aug 13 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
python snownlp情感分析简易demo(分享)
2017/06/04 Python
python3中property使用方法详解
2019/04/23 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
2014新年寄语
2014/01/20 职场文书
考试作弊检讨书
2014/10/21 职场文书
在职证明格式样本
2015/06/15 职场文书
安全教育的主题班会
2015/08/13 职场文书