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>

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

相关推荐
leobertlan6 小时前
2025年终总结
前端·后端·程序员
子兮曰6 小时前
OpenClaw架构揭秘:178k stars的个人AI助手如何用Gateway模式统一控制12+通讯频道
前端·javascript·github
百锦再7 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
莲华君7 小时前
React快速上手:从零到项目实战
前端·reactjs教程
百锦再7 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
易安说AI7 小时前
Ralph Loop 让Claude无止尽干活的牛马...
前端·后端
失忆爆表症9 小时前
05_UI 组件库集成指南:Shadcn/ui + Tailwind CSS v4
前端·css·ui
小迷糊的学习记录9 小时前
Vuex 与 pinia
前端·javascript·vue.js
发现一只大呆瓜9 小时前
前端性能优化:图片懒加载的三种手写方案
前端·javascript·面试
不爱吃糖的程序媛9 小时前
Flutter 与 OpenHarmony 通信:Flutter Channel 使用指南
前端·javascript·flutter