如何实现表格固定表头和某列

在开发过程中,如果数据比较多并且需要对比查看的情况下,一般是是需要固定表头和开始的某几列。可以通过一些组件进行实现。但是引用组件需要引入大量的js文件或者不满足某一方面的需求。这时候就需要自己动手写一个这样的效果。

需求

表格是页面的主体部分,表格的数据量比较大,需要表格左右可以滑动,上下也可以滑动。在滑动中表头固定,第一列,第二列固定。前两列在固定在页面上的前提下需要能够上下滑动。页面的滚动轮必须在窗口上,不可以设置在表格内部。

设计过程

具体实现
  1. 元素结构
 var TableWrap = React.createClass({render:function(){var data = this.props.data;return(<div className='table-wrapper'><Header className = 'table-header' /><div className="table-body-wrapper"><Tablefix className = 'table-fixded'  data = {data} /><Tablebody className='table-body'  data = {data} /></div></div>)}})

说明: 采用react-dom组件渲染dom元素,Header表示表头部分的table表格,Tablefix表示固定列的table表格,TableBody 表示正常可滚动部分的table表格

  1. 表格联动
$(funciton autoWidth(){for(var i = 1 ; i <= $('.tablebody tr').length ; i++){var tableH = $(".tablebody tr:nth-child("+i+")  td").outerHeight(true);$(".Tablefix tr:nth-child("+i+")  td:last-child").css("height",tableH);}
})

说明1:采用outerHeight(true) 的目的是获取全部的高度,包括边框、padding、margin等
说明2:只需要设置对应行的一个td高度即可

  1. 定位设计
$(function fixed(){$(window).scroll(function () {if($(this).scrollLeft()>0){if($(this).scrollLeft()<60){ //60用于控制灵敏度,数值越小 灵敏度越高$(".tablefix-wrapper").css("left","0px");}else {$(".tablefix-wrapper").css("left",$(this).scrollLeft());}}if($(this).scrollTop()>0){if ($(this).scrollTop()<60) {$(".header-wrapper").css("top","0px");}else {$(".header-wrapper").css("top",$(this).scrollTop());}}})
})

说明1:定位不使用fixed的原因定位后无法实现上下滑动的效果且固定列的表格和滚动表格无法实现滚动联动
说明2: .table-body-wrappe是相对定位 .header-wrapper和.tablefix-wrapper是相对于父级的绝对定位。采用绝对定位的目的是实现固定列的表格和滚动列表格的滚动联动效果。

展示效果
  1. 实现表头上下固定,左右可以滚动
  2. 实现固定列左右固定,上下可以滑动
  3. 滚动条位于窗口,便于滑动

如何实现表格固定表头和某列相关推荐

  1. Angular8简单方式实现表格固定表头和冻结列

    Angular8简单方式实现表格固定表头和冻结列 html页面: <style> .tableheader {position: relative; top: 0px; z-index: ...

  2. vue项目中table表格固定表头和首尾列

    在html中实现table表格固定表头和首尾列的方法和文章很多,本文就不再赘述. 本文主要介绍vue项目中三种情景下实现table表格固定表头和首尾列 情景一:vue+element 只要在el-ta ...

  3. 微信小程序 table表格 固定表头和首列 右侧表格可以左右滚动(多种表格演练)

    最近在做公司的项目需要到表格展示数据,但是微信小程序是没有原生table标签的,于是就百度各种搜...发现结构有类似的就粘过来修改,要善于学习和借鉴别人的经验使其变成为自己的东西,学无止境~ 在这里做 ...

  4. H5移动端滑动表格固定表头和首列(纯css实现)

    HTML部分 <template><!-- 表格部分 --><div class="contain"><table class=" ...

  5. antd 设置表头属性_纯css实现固定表头和锁定列

    ### table 表格是一个网站很常用的元素,用以展示大量的数据.在处理表格时,通常会加入许多功能,如斑马线.选中高亮.固定表头.锁定列等等,本篇文章主要介绍如何单纯的使用css实现固定行或列的功能 ...

  6. 再谈table组件:固定表头和表列

    前言 本文介绍内容包括: Element UI 实现表头表列固定思考与总结 translate3d如何实现表头表列固定 书承上文,在前文[Vue进阶]青铜选手,如何自研一套UI库中介绍了Vue组件库的 ...

  7. 实现固定表头和表列的table组件

    前端的table在设置overflow后横向.纵向滚动.但数据比较多时,为了查看方便,希望能在纵向滚动时固定表头,在横向滚动时在左边或右边固定特定表列,这是原生不支持的. 目录 实际效果 设计思路 普 ...

  8. php中表头不跟着滑动,JS实现table表格固定表头且表头随横向滚动而滚动

    这篇文章主要介绍了JS实现table表格固定表头且表头可以随横向滚动而滚动,对js的朋友可以参考下本篇文章 先看一张效果图 思路: 1.头部用一个table并用一个p包裹着, 表格的具体内容用一个ta ...

  9. table固定表头和首列

    table固定表头和首列 html部分,结构上分为左右两部分,又分别拆开为上下两部分,总共四个结构部分,以下为固定首行和首列,需要固定多行多列的可以自行添加,如下列表中姓名为左上角固定不变的位置,可自 ...

最新文章

  1. linux git2.8.0下载,Linux 环境下 jdk1.8 maven3.2.3 Git2.8.0 安装脚本
  2. OpenCL异构并行计算编程笔记(1):平台、设备与上下文
  3. Java高并发编程:Callable、Future和FutureTask
  4. RabbitMQ支持的消息模型
  5. 用python的字典实现简单的通讯录
  6. python解压打开文件过多_自动解压大量压缩文件 Python 脚本 | 学步园
  7. linux c之遍历字符串数组
  8. 【BZOJ - 3224】普通平衡树(Splay模板题)
  9. 来来来!一次搞定各种数据库 SQL 执行计划:MySQL、Oracle
  10. tkinter 隐藏_python Tkinter()如何隐藏UI
  11. 颠覆游戏开发,引领行业革命,从 Unite 2019 看 Unity 技术亮点
  12. Android基础 --- Widget
  13. jquery中object对象循环遍历的方法
  14. python库下载地址
  15. 老杜java_老杜最新Java零基础视频教程(适合Java 0基础,Java初学入门)
  16. Linux实现黑客帝国背景炫酷效果
  17. js获取网页元素文本
  18. Godaddy域名注册详细图文教程(转)
  19. 基于长短期记忆神经网络的蛋白质二级结构预测
  20. 打印预览的线条粗细问题

热门文章

  1. 解决for循环有时只输出最后一个结果
  2. 远程访问堡垒机_如何远程控制堡垒机
  3. 51LA网站访问统计使用【图文教程】
  4. GMAN: A Graph Multi-Attention Network for Traffic Prediction(2020AAAI)
  5. Java 能创建多少线程
  6. pf与ckf_基于CKF-PF算法在高速动车组定位中的应用研究
  7. 开发一款好玩的地图app
  8. 面试题 10.11. 峰与谷-快速排序
  9. 详细介绍百度ERNIE 2.0:A Continual Pre-Training Framework for Language Understanding
  10. redis + laravel5.5