摘要:行列冻结是处理表格非常常见的应用,我们都知道用excel可以很轻松的实现这一功能。但html编写的web网页表格中并没有冻结表格这一功能,那又要如何才能实现表格的 行 列 冻结呢?

行列冻结是处理表格非常常见的应用,我们都知道用excel可以很轻松的实现这一功能。但html编写的web网页表格中并没有冻结表格这一功能,那又要如何才能实现表格的'行''列'冻结呢?

通过百度或者其他搜索引擎搜索确实可以找到很多解决案例,比如,把需要冻结的行或者列从表格中拆分出来,然后计算行列的高度和宽度,使得被拆分后的内容组合起来后表面上看去仍然是完整的一张表格;又比如用jquery的插件来实现等等。这些方法虽然最后都能实现行列冻结的效果,但太复杂,而且很容易出错,一个简单的表格冻结效果,结果写了一大推的代码。

既然博主敢说这些方法不太好,自然是有更好方法可以实现表格冻结效果,下面就来看看心月博主是如何简单快速的实现web表格行列冻结的。

在解决行列冻结前先来说说表格行列冻结的原理:

在不冻结行列的正常情况下拖动表格时,整个表格都会朝与拖动相反的方向移动(前提是没有修改系统默认滚动参数设置),比如往下拖动,整张表格网上移动,往右拖动整张表格往左移动,在此情景下如果想保持某一行或某几行的的位置能一直保持在一个地方,就得把这几行给拎出来成为一个独立体,然后往回拖,拖到你想让他出现的位置,接下来每次把整个表格往下拖动一段距离,前面的独立体就得往回拖一段距离,而且独立体往回拖的距离与整个表格往下拖动的距离是相等的。表格列冻结也是如此,不过此时表格拖动的方向是水平方向。

如果没有看懂表格行列冻结的原理,没关系,下面就是本次文章的重点内容了:

这里我并没有使用表格分块,也没有使用插件,只有一个table表格和一个div块,然后给div加上垂直滚动和水平滚动

首先需要确定需要冻结的行和列,以及被冻结的行和列需要在什么位置显示,此次我冻结的是第一行和以及第1到3列,及上图序号、网站域名、网站名这3列,冻结的显示的位置是左上角黑白背景交界处。如下图所示

在前面的表格冻结原理中已经知道,表格冻结无非就是:表格滚动——位置回拉;所以,只需要给table外层的div加一个滚动事件,在滚动事件中处理位置回拉即可实现表格冻结。废话不多说直接上代码(页面宽度问题图片有点小,可以右键复制图片链接在新窗口打开看):

前图表格,白色背景内是可视区域,表格在垂直方向滚动前需要计算出表格顶部距可视区顶部的距离,在表格需要被冻结的行(第一行)滚动到可视区顶部(被冻结后停留位置)前都不需要做位置“回拉处理”,直到表格第一行移动到可视区顶部开始对表格进行“回拉处理”,给第一行加一个相对定位属性(position:relative)如果给整行加相对定位不起作用就给第一行的每一列单独加相对定位。然后,整张表格每往下移动1px,就给第一行的left值加1px。

(之所以用相对定位而不用绝对定位,是因为绝对定位的的内容会脱离整个表格,如果非冻结内容和对应的行或者列的宽高不一致就会出现冻结内容和非冻结内容错位的现象)

因为前面已经计算出表格未滚动时顶部距离可视区顶部的距离,因此只需用滚动的距离减去前面的顶部距离得到的值就是第一行需要回拉的距离,也就是left值。

水平方向也是同样的道理。

至此,表格行列冻结就实现了,而且此方法可以实现任意行或者任意列的冻结。

如果没有看明白的话,可以照着图片给出的代码敲一遍看看实际效果。(自己动手敲出来的代码印象才会深,所以在这里代码就是截图给出的)。(div table 的id属性,class属性截图中都有,表格第一行是标题行所以用的是th不是td,别忘了引入jq文件。另外为了保证被冻结的行或者列的内容不被遮住一定要加z-index值,保证被冻结行列的内容始终在被冻结单元格之上。另外行列同时冻结时,z-index的最好不要一样,希望谁的层级高谁的z-index值就大)。

如果冻结的行或者列比较多,且是连续的,可以用循环减少重复代码。

html如何冻结字段,利用jQuery实现HTML 表格行列冻结相关推荐

  1. html表格行列变化插件,利用jQuery实现HTML 表格行列冻结

    摘要:行列冻结是处理表格非常常见的应用,我们都知道用excel可以很轻松的实现这一功能.但html编写的web网页表格中并没有冻结表格这一功能,那又要如何才能实现表格的 行 列 冻结呢? 行列冻结是处 ...

  2. access表格怎么取消冻结字段_如何在excel表格中冻结任意字段?谢谢/excel表格制作...

    在excel表格中 如果冻结某一行 怎么设置? 点击你需要冻结的单元格下一行,点击窗口-冻结窗口 如何把excel表格冻结 [视图]下面有对应的按钮,点鼠标就可以,按钮位置如下图: 注意,点之前单元格 ...

  3. 【 jQuery 】利用 jQuery 选择器实现表格的全选,取消选择,单击更 改选中状态,反选等功能,为表格添加光棒效果

    利用 jQuery 选择器实现表格的全选,取消选择,单击更 改选中状态,反选等功能.如图所示.点击全选按钮,选中所有行,点击取 消按钮,所有行为未选中状态,单击反选按钮,则选中的行变成未选中的: 未选 ...

  4. 如何实现表格行列冻结

    实现原理 一.div 标签 创建多个div,div之间通过css实现层叠,每个div放置当前表格的克隆.例如:需要行冻结时,创建存放冻结行表格的div,通过设置z-index属性和position属性 ...

  5. html表格翻页简单,利用jQuery实现一个简单的表格上下翻页效果

    前言 本文主要介绍的是利用jQuery实现一个简单的表格上下翻页效果,注:实现原理与轮播图相似.下面话不多说,来看看详细的 实现方法吧. html: 日期参与团购场次团购结果当前状态 02.08 第一 ...

  6. 利用jQuery实现表单里的增加、删除和修改

    这周老师教了怎么利用jQuery实现在表单里增加.删除和修改数据.可以增加数据,单选删除.多选删除和全选删除.ISBN的值式唯一的,不能重复,当输入的ISBN已存在,就只修改后面书名.效果图如下: 整 ...

  7. 利用jQuery实现用户名片小动画

    我爱撸码,撸码使我感到快乐! 大家好,我是Counter.下面给大家介绍利用jQuery实现的小动画,非常的简便,如果有原生js操作的话,那么就不止这么多行了.至于CSS,个人觉得,这边CSS布局也蛮 ...

  8. 利用 JQuery的load函数动态加载页面

    利用JQuery的load函数动态加载页面 JQuery有好多Ajax函数,其中load是用来动态加载一个页面的内容到指定的dom元素上. 我们来做个例子: 做一个上下(左右)结构的页面,其中下左部分 ...

  9. js请求结果拦截机器_js利用jquery的jsonp来解决ajax跨域请求被浏览器拦截结果的问题...

    先来个表.页面太多对不起我也不知道这张表是从哪个博客保存过来的,所以无法注明博客地址.非常抱歉.URL说明是否允许通信 http://www.a.com/a.jshttp://www.a.com/b. ...

最新文章

  1. Java SE 6 新特性: Java DB 和 JDBC 4.0
  2. java中filereader读取文件_java – 如何使用FileReader逐行读取
  3. BeautifulSoup 返回网页标签的名称、父标签名称、行号、完整路径
  4. [LeetCode]93.Restore IP Addresses
  5. Icicle is not a symbol o chillness but a sign of warming.
  6. But don‘t be fooled, this phone does not
  7. GCD and LCM HDU 4497 数论
  8. CSDN中Markdown格式(编辑器)语法及其使用
  9. obspy中文教程(六)
  10. 理解和应用向量积与数量积
  11. QT自定义按钮类(自定义图片,形状,点击特效)
  12. sysdig_Sysdig: 系统故障排查利器
  13. 实现一个Android输入法
  14. Nand2Tetris 计算机结构
  15. win10隐藏3d对象等文件夹(自用)
  16. 黑苹果电源键睡眠关机的分析及解决办法
  17. 反相器 CMOS制造(Fabrication)与布局(Layout)
  18. python智力问答游戏代码,python实现智力问答测试小程序
  19. Endnote新手使用指南——终于解决EndNote困扰我一晚上的难题,其实很简单!
  20. asp easp 开源框架_国内ASP开源建站系统一览

热门文章

  1. VT虚拟化驱动入门教程
  2. android 语音和输入法按钮切换,android 切换系统语言,输入法也随之切换
  3. 极路由4/b70刷华硕(padavan)教程
  4. word修订模式怎么彻底关闭_如何去掉word修订模式
  5. 代扣代收 VS 代付代发
  6. 1219_SCons的配置文件SConstruct
  7. c语言编译器error,KEIL C编译器常见警告与错误信息的解决办法
  8. ubuntu18批量解压和删除压缩包以及文件夹操作
  9. fadeIn fadeOut
  10. 读书笔记---货币战争