先来demo!这个Table的源码~从表面上看,左上角挂两列并不难。但单元格大小会根据其不确定的内容进行拉伸,顶部和左侧标题的宽度和高度应相应调整。Table自然有这样的属性,我们可以把thead去掉,固定一下,但是第一列的每一项都是散落在每一行的,怎么整体去掉呢?显然剥离比较困难,需要换个思路。定义一个新元素模拟第一列挂在左边,但是它的cell如何同步同一个cell的高度呢?使用js获取当前行的高度,赋值给第一列元素。假设表有几千行,你要这样搞上千遍,太麻烦了……一张表不好办,那两张呢?我需要他们完全一样:让table1和table2共用一组样式,数据可以完全一样(这样两者同一行同一列的元素大小同步)。剥离table1的thead并使其固定;将table2整体设置为固定覆盖table1,将table2除第一列单元格外的其他元素设置为透明。至此第一行第一列的悬浮就完成了,但是它们并没有随着表格主体的滚动而滚动。用js获取窗口的滚动位置,scrollX为第一行向左偏移距离,scrollY为第一列向上偏移距离:varcurX=0;varcurY=0;$(window).on('scroll',function(){varscrollX=window.scrollX;varscrollY=window.scrollY;//第一行向左偏移scrollXMath.abs(curX-scrollX)&&$('.table1.thead').css('left',-scrollX);//第一列向上偏移scrollY(只有table2的第一列不透明,相当于整体偏移)Math.abs(curY-scrollY)&&$('.table2').css('top',-scrollY);curX=scrollX;curY=scrollY;});解释完毕!作者:连小淼我的后花园:https://sunmengyuan.github.io...我的github:https://github.com/sunmengyuan
