Element UI 表格处理指定数据的样式

该文章介绍了如何在ElementUI的表格组件中通过cell-style或cell-class-name属性实现学生排名动态上升和下降的字体样式。通过比较学生的上次排名和本次排名,动态添加红色(上升)或蓝色(下降)的字体颜色,并在排名后显示箭头符号。关键在于正确地在回调函数中判断排名变化并返回相应的样式或类名。

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

原始表格数据

要实现动态排名上升和下降的学生本次排名的字体样式,效果如下:

思路:

使用elementUI 表格的cell-style或者cell-class-name。在回调函数里判断排名。再返回样式或者样式类名。

实现代码如下:

<template>
  <el-table
    :data="tableData"
    border
    style="width: 500px"
    :cell-class-name="getCellStyleClassName">
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="lastRank"
      label="上次排名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="curRank"
      label="本次排名">
    </el-table-column>
  </el-table>
</template>

<script>
	export default {
		name: "Table1",
		data() {
			return {
				tableData: [{
					name: '张三',
          lastRank: 10,
          curRank: 8
				}, {
					name: '李四',
					lastRank: 3,
					curRank: 5
				}, {
					name: '王五',
					lastRank: 6,
					curRank: 9
				}, {
					name: '赵丽',
					lastRank: 8,
					curRank: 5
				}]
			}
		},
    methods: {

			// 使用cell-style, 直接返回样式 需要在el-table 标签上加上 :cell-style="setCellStyle"
			// setCellStyle({row, column, rowIndex, columnIndex}) {
			// 	console.log(rowIndex, columnIndex, row.name);
			// 	if (columnIndex === 2) {
			// 		if (row.lastRank < row.curRank) {
			// 			// row.curRank = row.curRank + "↑";
			// 			return {
			// 				color: 'red',
      //       }
			// 		} else if (row.lastRank > row.curRank) {
			// 			// row.curRank = row.curRank + "↓";
			// 			return {
			// 				color: 'blue'
      //       }
      //     }
      //   }
      // },

      // 返回样式类名的方式(推荐做法)
      getCellStyleClassName({row, column, rowIndex, columnIndex}) {
				if (columnIndex === 2) {
					if (row.lastRank < row.curRank) {
            return 'progressed';
					} else if (row.lastRank > row.curRank) {
						return 'fall'
          }
				}
      }
    }
	}
</script>

<!-- 注意这里不能加 scoped 否则样式不生效!!-->
<style>
  .progressed {
    color: red;
  }
  .progressed div::after {
    content: '↑';
  }

  .fall {
    color: blue;
  }
  .fall div::after {
    content: '↓';
  }

</style>

注意点:

1. elementUI 表格是表头行和表内容行是分开的。也就是说表头行是本来就有的,写了el-table-column 就有。数据行是从第二行开始的。也就是数据行的行索引是从第二行开始从0开始计数。

2. 使用 cell-class-name 时要把 style标签里的scoped 给去掉,否则写的样式不生效。

3. 注意伪类选择器的使用方法

.progressed div::after {
    content: '↑';
  }

 表示在 progressed 类中的 div标签的后面加上上箭头 ↑

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值