依旧是jQuery+html架构的前端项目,依旧用不了element.ui的组件。但产品已经提过无数遍想要表头固定、列固定的报表展示,没办法,只能借由排期不算太满的工作时间手肝一个HTML+JS的表头/列固定Table组件,命名为 fixedscrolltable 。
一、基本思路
参考el-table交互可知,想要固定表头、固定列,需要将主表拆成4块:主表表头、主表表体;左侧列表头、左侧列表体。
这里还补充了class名为table-leftmodel的div,是为了突出左侧列固定时的shadow。
二、数据渲染
确认四块区域后,接下来就是往里填数据。
假如表头项是动态获取的,那么表单数据应该分为headers和rows:
2.1 拼接表头
用到 isfixed 和 fixednum 传值,满足部分固定和随机列固定。
// 主表的表头
var header_html = '<tr>';
var fixheader_html = '';
// 固定列的表头
var leftheader_html = '<tr>';
for (var h = 0; h < header.length; h ++) {
header_html += '<th>' + header[h] + '</th>';
fixheader_html += '<div>' + header[h] + '</div>';
if (isfixed == 'true' && h < fixednum) {
lefth