设置element plus table上的header-cell-class-name为什么没有生效?

设置element plus table上的header-cell-class-name为什么没有生效?

<template>
<el-table :data="equipmentLedgerManagementData" border size="small" header-cell-class-name="table-header">
        ...
</templete>
<style>
 .table-header {
    background-color: red;
  }
</style>

在webstorm中这个样式呈现灰色,说明它没有被使用。从页面显示上发现这个样式也没有生效(打开开发者工具发现根本没有该规则),但是我将这段代码复制到element plus playground却生效了,这是为什么?该怎么解决?
image.png

__

image.png

从图中可以看到table-header类名确实添加到了th上了,但是对应的规则却没有。应该是没有打包到最后的产物,这是怎么回事?和vite的配置有关系吗?

// vite.config.js
import {fileURLToPath, URL} from 'node:url'

import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import {ElementPlusResolver} from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
// noinspection JSUnusedGlobalSymbols
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      imports: ['vue'],
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

附:

阅读 1.7k
2 个回答

你的stackblitz案例中style是带scoped的,而上面style不带scoped,这有很大差别。不带scoped,是全局样式,应该是可以找到这个样式的,加上scoped表示私有样式,而table-header不是一个组件class,所以需要使用:deep()进行样式穿透才会生效

样式权重问题,你这里放到playground的是加了important关键字,权重高,所以生效了。但是你本地使用的时候没有加,所以无效,所以你得提升样式权重,但是加important关键字不是一个好的提升权重的方式。个人建议提升权重如下:

.el-table th.el-table__cell.table-header {
   background-color: red;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏