去年一个项目有个表格组件一共做了1个多月才做好,大部分时间都花在找资料,调试bug,代码优化上,现在记录一下设计过程。

需求

a b
c d

如上图所示,区域d上下滚动的时候,区域b不能滚动;区域d左右滚动的时候,区域c不能左右滚动

第一个版本

  1. 原来的表格分成4个表格,a,b,c,d
  2. 表格d监听滚动事件,滚动时b和c跟着滚

这样有几个问题:由于客户还要求合并行列,步骤1其实没那么简单;步骤2,在电脑上看着还基本没问题,手机上看着d区域滚动时,b,c区域过了几毫秒后才开始滚动,效果十分差,这个问题也是花了1天才找到是手机的问题,因为本人使用的Angular框架,一开始以为是Angular的问题,改成了OnPush,生产模式编译后发现不卡,增加行数后又卡了,后来全部替换成原生,发现也卡,最后才定位了是手机的问题。

第二个版本

a a’ b b’
c c’ d d’
  1. 将原来的表格分成8个表格a,a’,b,b’,c,c’,d,d’,a’,b‘,c’,d’分别用定位方式覆盖在a,b,c,d上面,设置成透明
  2. 用户是不能滚动a,b,c,d的,只能滚动a’,b‘,c’,d’,d’滚动时,b,c,d一起滚动

这样做手机上虽然那几毫秒的延迟,但是dom元素太多,滚动时整体感觉有延迟,代码更加复杂不好维护

第三个版本

区域c也是整个表格,有div包住区域c超出隐藏,这样省去了拆分列的麻烦,缺点是dom元素增加了一倍

html表格左边锁定,表头锁定相关推荐

  1. 网页中单一表格横纵表头锁定

    实现这个锁定表头的效果其实到有很多的方法,不过使用 单一表格来实现,需要借助IE的css支持的expression表达式关键字.另外就是对浏览器布局原理的理解,如果不熟悉可以参考我原来写的 两篇文章. ...

  2. 在 ASP.NET 上实现锁定表头、支持滚动的表格的做法

    首先看看 CodeProject 上的两个东西 1.The Freeze Pane DataGrid (http://www.codeproject.com/aspnet/FreezePaneData ...

  3. 一个实用的表格(锁定表头,可调整单元格大小,可排序)

    昨天在网上找到一个不错的表格显示,该表格可以锁定表头,可调整单元格的大小,同时还可以对数据进行排序,显示效果如下: 原代码: <!DOCTYPE HTML PUBLIC "-//W3C ...

  4. 锁定表头和固定列(Fixed table head and columns)

    前段时间需要这个功能,但是找了很多都不能完美的实现,不是只能锁定表头,就是浏览器兼容问题什么的,在此就自己做了一个锁定表头和列的js方法,依赖于JQuery. 因为方法很简单,就未封装成插件的形式,仅 ...

  5. PHPExcel 锁定表头 设置样式,背景颜色,居中,宽,单元格合并

    //实例化类库 $objectPHPExcel = new \PHPExcel(); //选择指定的sheet $objectPHPExcel->setActiveSheetIndex(0); ...

  6. WPS2016怎么固定/锁定表头_WPS如何设置行和列固定不动

    1.将鼠标移到需要固定的行(表头所在的行)的下一行的行标题(每一行前显示当前是第几行的数字位置)上,然后点击鼠标左键选中这一行. 2.点击一下菜单栏的"视图". 3.然后点击一下视 ...

  7. 锁定表头和固定列(Fixed table head and columns)(转载)

    前段时间需要这个功能,但是找了很多都不能完美的实现,不是只能锁定表头,就是浏览器兼容问题什么的,在此就自己做了一个锁定表头和列的js方法,依赖于JQuery. 因为方法很简单,就未封装成插件的形式,仅 ...

  8. 发布锁定表头的一个思路

    发布锁定表头的一个思路 发布锁定表头的一个思路.垂直滚动时表头不动,水平滚动时表头可以同步滚动.在这里呢我只介绍我的思路,因为我觉得思路要比代码重要得多.当然我的想法已经实现了. 网页两个:一个是放置 ...

  9. js锁定表头和列,实现类似execl锁定效果

    js锁定表头和列,实现类似execl锁定效果,项目实现后效果如下: js代码 <script type="text/javascript"> function FixT ...

  10. 数据行列比较多,报表怎么实现锁定行和锁定列呢?

    不过,一般报表工具都能支持这样功能,设置简单,也不用把时间花费在调整表格对齐上. 以润乾报表举例来说实现锁定表头只需要将要锁定的行列设置为报表头和左表头,页面中添加标签属性就轻松搞定了, 具体实现可以 ...

最新文章

  1. AC日记——Power收集 洛谷 P3800
  2. 创建electron应用
  3. [BZOJ2017][Usaco2009 Nov]硬币游戏
  4. where嵌套select_Select子查询:Select Zoo
  5. Maven : mvn dependency:copy-dependencies
  6. list中去除连续重复的值并保留头尾2个和头尾2个值在原list中的索引
  7. 1,机器学习应用概述
  8. SGU 326 Perspective
  9. 联系人备份--vcf
  10. InfiniBand -- 无限带宽技术(简称IB) 基于 Ubuntu 16.04 安装 IB 驱动
  11. laravel响应速度慢
  12. linux怎么创建swap分区,linux下创建swap分区
  13. FPGA智能网卡功能剖析
  14. 联想y50更换固态硬盘_【联想Y50-70】更换固态硬盘,极速开机~
  15. java 葫芦娃.rmvb,课内资源 - 基于JAVA的葫芦娃 — 最终之战
  16. linux服务器22端口不通,怎么解决linux的端口不通问题
  17. Huffman Coding 哈夫曼树
  18. android studio项目实例基于Uniapp+SSM实现的定制旅游APP
  19. ubuntu20.04手动安装Openstack YOGA版本(双节点)
  20. Xilinx SDK编译Microblaze时出错

热门文章

  1. 苹果应用提审与NAT64
  2. 微信公众号如何申请原创声明功能
  3. unity资源商店出现“抱歉,此链接不再有效”怎么办
  4. 京东和天猫的运营模式的区别
  5. SDL介绍----1、SDL与SDL安全活动
  6. logisim 快速加法器设计实验报告_八位加法器设计实验报告
  7. python数据分析:词性标注
  8. 惠普电脑u盘重装系统步骤_惠普电脑如何重装系统?惠普电脑用U盘重装win10系统教程...
  9. Pr视频、图片局部放大画面或画面移动
  10. ionic android n权限,ionic权限问题