设置el-table的表格头部样式和每一行样式

本文详细介绍了如何使用 Element UI 的 el-table 组件自定义表格样式,包括如何设置行和表头的背景图片,调整 hover 和当前行的背景色。通过 CSS 和 Vue 方法实现了奇数行和偶数行的不同背景效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<el-table
   :data="jxpData"
   :show-header="true"
   :row-style="tableRowStyle"
   :header-cell-style="tableHeaderStyle"
   max-height="300"
   style="width: 100%; overflow-y:auto;"
   >
methods: {
  tableRowStyle({row, rowIndex}) {
    return `background-color: #004346;
            color: #fff;
           `
  },
  tableHeaderStyle({row, column, rowIndex, columnIndex}) {
    if (rowIndex === 0) {
      return `
        background-color: #004346;
        color: #fff;
        height: 30px!important;
        font-size: 14px;
        `
    }
  }
 }

如果需要给表头和每一行设置背景图片而不是背景色,需要先清除默认的背景颜色
代码如下:

/*将表格每一行的背景色去掉*/
.el-table, .el-table__expanded-cell, .el-table tr {
   background-color: transparent;
}
// 奇数行和偶数行设置不同的背景背景图片
methods: {
  tableRowStyle({row, rowIndex}) {
    if (rowIndex % 2 == 0) {
       return `background: url("./img/tr.png") no-repeat;
               background-size: 100% 100%;
               color: #fff;
               border: none;
               background-position: left center;
               `
    }else {
       return `background: url("./img/tr_other.png") no-repeat;
               background-size: 20px 100%;
               color: #fff;
               border: none;
               background-position: 13px center;
               `
   }
  }
}
/*表格每一行被hover时的样式设置*/
.el-table--enable-row-hover .el-table__body tr:hover>td {
    background-color: rgba(141, 214, 217, .4);
}
/*表格某一行被点击时的样式*/
.el-table__body tr.current-row>td {
    background-color: rgba(141, 214, 217, .4)
}

 

### 配置 Element UI `el-table` 表格的列属性样式 #### 列类型的配置 为了实现多选功能,在表格中新增一列并将其 `type` 属性设置为 `selection` 是必要的操作。这可以通过如下方式完成: ```html <el-table-column type="selection"></el-table-column> ``` 对于不确定状态的选择框,可以利用 `select-on-indeterminate` 属性来控制其行为[^1]。 #### 自定义单元格内容 当需要增强交互体验或是定制显示效果时,通过插槽(slot)机制来自定义列的内容是一个有效的方法。例如,要使某列中的数据可点击,并触发特定的行为,如打开详情页,则可以在对应的 `<el-table-column>` 中嵌入模板,并绑定点击事件给内部元素: ```html <el-table-column label="编码" align="center" prop="code" :show-overflow-tooltip="true"> <template slot-scope="scope"> <div @click="openDetails(scope.row)"> {{ scope.row.code }} </div> </template> </el-table-column> ``` 这里不仅实现了行内点击响应,还确保了即使内容超出容器宽度也能正常展示完整的提示信息[^2]。 #### 排序支持 为了让某一列为用户提供排序能力,只需简单地添加 `sortable='custom'` 属性至目标列即可启用此特性。之后可通过监听器处理具体的排序逻辑: ```html <el-table-column prop="recruitEntryNum" label="人数" width="140" show-overflow-tooltip sortable='custom'> </el-table-column> ``` 上述代码片段展示了如何向“人数”这一列加入自定义排序的支持[^3]。 #### 动态合并行列 针对某些场景下可能存在的重复项或连续相同值的情况,Element UI 提供了一种灵活的方式来动态决定哪些行/列应该被合并在一起呈现。具体做法是在渲染过程中计算相邻两行间是否满足合并条件,并据此调整最终视图结构: ```javascript // 假设 mergeColumns 存储着需考虑合并的字段列表, // calculateRowIndex 函数用于判断当前行与上下文的关系。 rowIndex = this.calculateRowIndex(this.tableData, i, i + 1, 1, this.mergeColumns[j]['name']); ``` 这段 JavaScript 片段示意了怎样基于业务规则执行行级别的合并操作[^4]。 #### 定制化表头 最后,如果希望进一步个性化表单设计,比如改变默认样式头部区域,那么可以借助于具名插槽——特别是名为 `header` 的那个——来进行更细致的设计工作。此时的作用域对象包含了关于该列的信息以及它在整个布局里的位置索引: ```html <!-- 使用 header 插槽来自定义表头 --> <el-table-column ... > <template v-slot:header="{ column, $index }"> <!-- 这里放置任意 HTML 或 Vue 组件作为新的表头 --> </template> </el-table-column> ``` 以上就是围绕 `el-table` 各类特性的介绍及其应用实例[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值