vue element-ui 对表格的单元格边框加粗

客户方有个需求,需要将表格单元格,大单元格边框加深,里面的边框颜色不变,从而区分单元格与单元格的边界线, 效果如图

根据组件和效果分析下实现思路:不合并单元格的td(1,2),有下边框,右侧边框;合并单元格的3,只有右侧边框

实现过程:接口返回的全部数据经过分类处理后,并按规则排序聚合处理,数据如下

xml 复制代码
<template>
    <el-table
        :data="tableData"
        :span-method="objectSpanMethod"
        :cell-class-name="cellClassName"
        border
      >
     </el-table>
</template>
<script>
tableData = [
    { id: 0, data: 'data0'},
    { id: 1, data: 'data1'},
    { id: 1, data: 'data2'},
    { id: 1, data: 'data3'},
    { id: 2, data: 'data2'},
    { id: 2, data: 'data2'},
    { id: 3, data: 'data3'},
]

spanArr = [
    1,
    3,
    0,
    0,
    2,
    0,
    1
]

// 合并函数
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
    // 设置被合并的列
    if (columnIndex < 2) {
        const _row = this.spanArr[rowIndex]; // 合并行数
        return {
            rowspan: _row,
            colspan: 1,
        };
    }
}
// 自定义cell-class
cellClassName({ row, column, rowIndex, columnIndex }) {
    // 设置被合并的列
    if (columnIndex < 2) {
        return "right_bottom_border";
    } else {
        const curSpan = this.spanArr[rowIndex];
        const nextSpan = this.spanArr[rowIndex + 1];

        if (curSpan == 1) {
            // 等于1,非合并单元格,展示 右、下边框
            return "right_bottom_border";
        }
        if (curSpan == 0 && nextSpan > 0) {
            // 仅仅 当前行是0,下一行数据非0,说明当前是合并单元格的最后一个,加上下、右边框
            return "right_bottom_border";
        }
        if (curSpan > 1) {
            // 大于1,是合并单元格的第一个,下边框不加,加右侧边框
            return "right_border";
        }
        // 等于0的,是合并单元格的数据,上面去除了合并单元格的最后一个
        return "right_border";
    }
}
</script>
<style>
.right_bottom_border {
    border-right: 1px solid #aaa !important;
    border-bottom: 1px solid #aaa  !important;
}
.right_border {
    border-right: 1px solid #aaa !important;
}
</style>

最后,在加上表格的左边的和顶部的一个边框 搞定

相关推荐
陈随易4 分钟前
Rust、Golang、MoonBit 编译成 WASM,体积和速度差距有多大?
前端·后端·程序员
IT_陈寒7 分钟前
Python多线程的坑,我居然现在才踩到
前端·人工智能·后端
触底反弹1 小时前
🔥 字符串算法面试三连击:反转、回文、回文变种,搞懂这三题稳了!
前端·javascript·算法
竹林8181 小时前
从 RPC 超时到批量签名:我用 @solana/web3.js 重构了一个 NFT 铸造页面,踩了这些坑
前端·javascript
工业HMI实战笔记1 小时前
工业HMI界面布局“1核2辅”黄金结构,适配90%场景
前端·ui·性能优化·自动化·交互
林希_Rachel_傻希希2 小时前
web性能优化之————图片效果
前端·javascript·面试
Darling噜啦啦2 小时前
前端存储与 this 指向完全指南:从 LocalStorage 实战到 call/apply/bind 深度解析
前端·javascript
wei1986212 小时前
.net添加web引用和添加服务引用有什么区别?
java·前端·.net
ejinxian3 小时前
Vite+ 发布新版本-整合前端工具链
前端·vite·vite+
格子软件3 小时前
2026年GEO优化系统源码级状态机与多模型调度拆解
java·前端·vue.js·人工智能·vue·geo