Vue+element使用row-class-name修改el-table某一行解决背景色无效的方法

 更新时间:2023年01月03日 09:38:07   作者:WH小可爱  
本文主要介绍了Vue+element使用row-class-name修改el-table某一行解决背景色无效的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

项目场景:

要实现这样的一个功能:为列表特定某一行的背景高亮,如下图,实现某一行的权限字段是超级,那么这行就高亮显示的效果

在这里插入图片描述

问题描述:

根据element-ui中el-table中的row-class-name 属性设置

可以通过指定 Table 组件的 row-class-name 属性来为 Table 中的某一行添加 class,表明该行处于某种状态。

template代码

<template>
   <el-table :data="admin_list" stripe style="width: 100%" :row-class-name="tableRowClassName">
        <el-table-column prop="name" label="姓名" min-width="100"></el-table-column>
        <el-table-column prop="username" label="用户名"></el-table-column>
        <el-table-column label="权限">
          <template slot-scope="scope">
            {{ scope.row.roleName === 'ORG_ADMIN' ? '普通' : '超级 ' }}
          </template>
        </el-table-column>
        <el-table-column prop="status" label="状态">
          <template slot-scope="scope">
            <el-tag :type="scope.row.status === 'LOCKED' ? 'warning' : 'success'" disable-transitions>
              <i :class="scope.row.status === 'LOCKED' ? ' el-icon-lock' : ' el-icon-user'"></i>
              {{ scope.row.status === 'LOCKED' ? '锁定' : '正常' }}
            </el-tag>
          </template>
        </el-table-column>
        <el-table-column prop="telephone" label="电话"></el-table-column>
        <el-table-column prop="email" label="邮箱"></el-table-column>
        <el-table-column label="操作" align="center" width="245" fixed="right" prop="status">
          <template slot-scope="scope">
            <el-button :type="scope.row.status === 'LOCKED' ? 'success' : 'warning'" @click="addAdmin(scope.$index)" size="small">{{ scope.row.status === 'LOCKED' ? '解锁' : '锁定' }}</el-button>
            <el-button type="primary" @click="edit(scope.$index)" size="small">编辑</el-button>
            <el-button type="danger" size="small" @click="del(scope.$index)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
</template>

js代码

<script>
  // 为超级管理员那一行设置背景样式
    tableRowClassName({row,rowIndex}) {
      if (row.roleName === "ORG_SUPER_ADMIN") {
        console.log(rowIndex)
        return 'warning-row'
      } 
      return ''
    },
</script>

css代码

<style lang="less" scoped>
	.el-table .warning-row {
	  background:#F8ECDA;
  	  color:red //测试
	}
</style>

但是问题来了!我设置背景颜色竟然不生效!上网根据各位大神分享的经验贴,提出了几种解决方法:可去掉scoped;或者使用深度选择器(在css类前面加/deep/ ),或者把此样式写在全局css中,或者也可以在在文件中加一个style标签可以解决设置样式问题。

原因分析:

这么做是因为row-class-name属性要想生效必须使用全局class,且使用 scoped 后,父组件的样式将不会渗透到子组件中。

但是新的问题出现了,color:red生效了,background:#F8ECDA;并不生效!

在这里插入图片描述

进一步分析原因:原来是因为这个表格设置了斑马格样式,而斑马格样式默认有背景色,所以背景高亮不生效

stripe属性可以创建带斑马纹的表格。它接受一个Boolean,默认为false,设置为true即为启用。

所以要么去掉stripe属性,要么设置样式优先级(一定要加td 否则不生效)

.el-table .warning-row td{
  background:#F8ECDA !important;
  color:red
}

推荐解决方案:

不建议去掉scoped,否则全局样式会失效
第一种方式 :使用深度选择器(推荐)

//1. 要使用深度选择器+td
//2. 因为table默认有背景色,所以在设置背景色的时要写td,并设置优先级
/deep/ .el-table .warning-row td{
  background:#F8ECDA !important;
  color:red
}

第二种方式:使用全局css,并在main.js中引入

.el-table .warning-row td{
  background:#F8ECDA !important;
  color:red
}

main.js

import './assets/css/global.css'

第三种方式:在页面中加一个style标签

<style>
  .el-table .warning-row td {
  background: #f8ecda !important;
  color: red;
}
</style>

到此这篇关于Vue+element使用row-class-name修改el-table某一行解决背景色无效的方法的文章就介绍到这了,更多相关修改el-table背景色无效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue移动端判断手指在屏幕滑动方向

    vue移动端判断手指在屏幕滑动方向

    这篇文章主要为大家详细介绍了vue移动端判断手指在屏幕滑动方向,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 谈一谈vue请求数据放在created好还是mounted里好

    谈一谈vue请求数据放在created好还是mounted里好

    这篇文章主要介绍了谈一谈vue请求数据放在created好还是mounted里好的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Vue实现数字时钟效果

    Vue实现数字时钟效果

    这篇文章主要为大家详细介绍了Vue实现数字时钟效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 浅析vue中常见循环遍历指令的使用 v-for

    浅析vue中常见循环遍历指令的使用 v-for

    这篇文章主要介绍了vue中常见循环遍历指令的使用 v-for,包括v-for遍历数组,v-for遍历json对象,本文给大家介绍的非常详细,需要的朋友可以参考下
    2018-04-04
  • Nginx部署前端vue项目的全部步骤记录

    Nginx部署前端vue项目的全部步骤记录

    本文讲解了如何在Linux环境中部署Vue项目,包括安装依赖、编译项目、安装配置Nginx,并介绍了SSL证书安装与配置,详细说明了使用Nginx作为静态资源服务器和反向代理的步骤,以及进行性能、安全性测试和备份的重要性,需要的朋友可以参考下
    2024-09-09
  • Vue实现飞机大战小游戏

    Vue实现飞机大战小游戏

    这篇文章主要为大家详细介绍了Vue实现飞机大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 富文本编辑器vue2-editor实现全屏功能

    富文本编辑器vue2-editor实现全屏功能

    这篇文章主要介绍了富文本编辑器vue2-editor实现全屏功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • vue中使用svg画路径图的详细介绍

    vue中使用svg画路径图的详细介绍

    这篇文章主要介绍了vue中使用svg画路径图的相关知识,在这大家需要注意svg中不能使用html标签,例如div,img等,因此在svg中一般使用image标签放置图片,text图片放置文本内容,详细代码跟随小编一起看看吧
    2022-04-04
  • vue3中refs用法举例小结

    vue3中refs用法举例小结

    这篇文章主要给大家介绍了关于vue3中refs用法举例的相关资料,Vue.js中的$refs是一个对象,它持有已注册过ref特性的所有组件和元素,需要的朋友可以参考下
    2023-08-08
  • uni-app进阶使用技巧分享

    uni-app进阶使用技巧分享

    uni-app是一款基于Vue.js的跨平台开发框架,它借助了 Vue.js 的语法和组件化开发思想,本文将详细介绍 uni-app 的全局配置、静态资源管理、路由管理以及数据通信和状态管理的进阶使用技巧,需要的朋友可以参考下
    2023-06-06

最新评论