Element Plus修改表格行、单元格样式

简介: Element Plus修改表格行、单元格样式

前言

实习工作需要根据表格的状态字段来设置行的样式,记录一波。

先来一下基础配置。(Vue3)

<template>
  <el-table :data="tableData" border style="width: 400px">
    <el-table-column prop="name" label="姓名" width="100" />
    <el-table-column prop="age" label="年龄" width="100" />
    <el-table-column prop="job" label="工作" />
  </el-table>
</template>

<script setup>
const tableData = [
  {
    name: "clz",
    age: 21,
    job: "Coder",
  },
  {
    name: "czh",
    age: 21,
    job: "Coder",
  },
  {
    name: "赤蓝紫",
    age: 21,
    job: "Coder",
  },
];
</script>

<style lang="less" scoped>
</style>

image-20220425211149555

设置某一行的样式

主要是通过 row-style属性来实现。它是行的 style的回调方法,可以通过它来实现设置某一行的样式。

先让我们来体验一下它的参数都是些什么。

<el-table 
  style="width: 400px" 
  border 
  :data="tableData" 
  :row-style="rowState"
>
</el-table>
const rowState = (arg) => {
  console.log(arg)
}

image-20220425213221090

可以发现,它是一个对象,一个属性是行的数据,一个是行号(从0开始),至于不只是打印3次,而是打印9次的原因还没发现,后面单元格的会打印18次,9个单元格打印18次。但是这个并不是本次的研究重点。

那么,我们怎样能设置样式呢?

只需要返回含有属性样式的对象即可。(驼峰命名法)

const rowState = (arg) => {
  return {
    backgroundColor: 'pink',
    color: '#fff'
  }
}

image-20220425213934820

然后在搭配参数使用,就能实现根据表格内容设置行的样式。

const rowState = ({ row }) => {
  let style = {}

  switch (row.name) {
    case 'clz':
      style = {
        backgroundColor: 'red'
      }
      break;
    case 'czh':
      style = {
        backgroundColor: 'blue'
      }
      break;
    case '赤蓝紫':
      style = {
        backgroundColor: 'purple'
      }
      break;
  }

  return style;
}

image-20220426211744236

设置某一个单元格的样式

通过 cell-style属性来实现。做法和上面一样,就不多说了,主要的四个参数 row, column, rowIndex, columnIndex

  • row:行的信息
  • column:列的信息
  • rowIndex: 行数(0开始算)
  • columnIndex:列数(0开始算)
<el-table 
  style="width: 400px" 
  border 
  :data="tableData" 
  :cell-style="cellStyle"
>
</el-table>
const cellStyle = ({ row, column, rowIndex, columnIndex }) => {
  if (rowIndex === 1 && columnIndex === 1) {
    return {
      backgroundColor: 'pink'
    }
  }
}

image-20220426232712515

其实,cell-state不只是能设置单元格的样式,因为它的参数中含有 row column,所以还可以用来设置某一行或某一列的样式。

const cellStyle = ({ row, column, rowIndex, columnIndex }) => {

  if (column.label === '工作') {
    return {
      backgroundColor: 'purple'
    }
  }

  if (row.name === '赤蓝紫') {
    return {
      backgroundColor: 'red'
    }
  }

}

image-20220426233521464

注意,这里重叠的地方并不会出现后来的样式覆盖掉前面的样式,而是先到先得

表头样式修改(赠品)

特殊的表头,特殊的处理

header-row-style:只有一个rowIndex属性

const headerRowStyle = (args) => {
  console.log(args)
​
  return {
    height: '100px',
    backgroundColor: 'red'
  }
}

image-20220427220605501

发现只有标头的行高有所变化,这是为啥呢?

image-20220427220742235

检查样式发现,这是因为单元格本身具有背景颜色,所以并不会生效。

header-row-style:和正常的单元格一样,有四个属性

const headerCellStyle = ({ row, column, rowIndex, columnIndex }) => {
  if (columnIndex === 1) {
    return {
      backgroundColor: 'pink'
    }
  }
}

image-20220427221737551

也可以通过column属性来设置符合条件的表头单元格的样式。

const headerCellStyle = ({ row, column, rowIndex, columnIndex }) => {
​
  if (column.label === '姓名') {
    return {
      backgroundColor: 'red'
    }
  }
}

image-20220427222630382

目录
相关文章
vue3 element-plus 实现表格数据更改功能
在 vue3 中使用 element-plus 实现表格数据更改功能,可以通过以下步骤实现:
1501 0
|
XML 存储 JSON
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
4550 3
JSON、JSONObject 与 JSONArray 详细介绍及其应用方式
|
存储 JSON 数据库
vue3中实现文件上传---通过element-plus的upload组件
vue3中实现文件上传---通过element-plus的upload组件
|
关系型数据库 MySQL 数据库
Element el-date-picker 日期选择器详解
本文目录 1. 前言 2. 基本用法 3. 日期格式化 4. 选择其他日期单位 5. 选择多个日期 6. 带快捷选项 7. 禁用部分日期 8. 小结
5988 0
Element el-date-picker 日期选择器详解
|
JavaScript 开发者
Element UI & Element Plus之改变表格单元格颜色
这篇文章展示了如何在Element UI和Element Plus框架中使用`:cell-style`属性来根据条件改变表格单元格的颜色。
1297 0
Element UI & Element Plus之改变表格单元格颜色
|
JavaScript 前端开发 数据安全/隐私保护
vue3+ts+elementplus写一个登录页面教程
【6月更文挑战第3天】本文介绍了如何使用 Vue 3 和 TypeScript 创建一个登录页面。首先,需安装 Vue CLI,然后创建新项目并启用 TypeScript 支持。接着,创建 `Login.vue` 组件,设计登录表单,包括用户账号、密码和验证码字段,并实现相关验证规则。页面样式包括背景、登录框和按钮等元素的布局与样式。最后,展示了`&lt;script&gt;`部分的代码,包括表单验证逻辑、生成验证码的函数以及登录提交处理。文章还提供了一个登录页面的截图和完整代码示例。
5253 1
ElementPlus菜单如何默认打开第一个,router-view里替换变的,menu菜单没有跳转怎么办,开启路由:router=“true“,如何设置点击空格就调用方法
ElementPlus菜单如何默认打开第一个,router-view里替换变的,menu菜单没有跳转怎么办,开启路由:router=“true“,如何设置点击空格就调用方法
ElementPlus菜单如何默认打开第一个,router-view里替换变的,menu菜单没有跳转怎么办,开启路由:router=“true“,如何设置点击空格就调用方法
|
JavaScript 前端开发 API
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
本文介绍了如何在Vue 3项目中使用v-md-editor组件库来创建markdown编辑器和预览组件。文章提供了安装步骤、如何在main.js中进行全局配置、以及如何在页面中使用VMdEditor和VMdPreview组件的示例代码。此外,还提供了一个完整示例的链接,包括编辑器和预览组件的使用效果和代码。
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
|
Go 开发工具 git
【git】解决:Failed to connect to 127.0.0.1 port 7890: Connection refused
【git】解决:Failed to connect to 127.0.0.1 port 7890: Connection refused
3950 0
element-plus table表格cell-style的使用
element-plus table表格cell-style的使用
930 1