ElementUI通过CSS修改组件样式

2022-04-14 15:38:46 浏览数 (2)

前言

最近在做一个比赛项目,在前端设计(使用Vue.js)的时候用到了ElementUI组件。前端整体的背景是深色调,调用ElementUI各项组件时其样式并不能很好的契合主题,因此需要通过CSS修改其色调及样式,但是直接通过class定位组件,并添加!important关键字后依然不能改动。

以Table 表格为例,原组件背景为白色,目的将其变为透明,以更好地适配毛玻璃效果。

Vue相关依赖:

代码语言:javascript复制
"dependencies": {
    "axios": "^0.24.0",
    "core-js": "^3.6.5",
    "echarts": "^4.9.0",
    "echarts-wordcloud": "^1.1.3",
    "element-ui": "^2.15.6",
    "less": "^4.1.2",
    "less-loader": "^4.0.6",
    "vue": "^2.6.11",
    "vue-router": "^3.2.0",
    "vuex": "^3.4.0"
},
"devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-router": "~4.5.0",
    "@vue/cli-plugin-vuex": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "css-loader": "^6.5.1",
    "file-loader": "^6.2.0",
    "style-loader": "^3.3.1",
    "vue-template-compiler": "^2.6.11",
    "node-sass": "^4.14.1",
    "sass-loader": "^8.0.2"
},

正文

/deep/深度选择器

style的作用域为scoped,同时配合less

代码语言:javascript复制
<style lang="less" scoped>

</style>

需要用到/deep/深度选择器

在Vue中,为了避免父组件的样式影响到子组件的样式,会在style中加入<style scoped>,如此一来,父组件中如果有跟子组件相同的class名称或者使用选择器的时候,就不会影响到子组件的样式。 具体效果则会在组件中添加一个hash值(如下图所示):

这时如果想在父组件修改子组件的样式,就需要使用/deep/深度选择器。

操作

为了更好融入毛玻璃的小组件背景,将表格设为透明:

代码语言:javascript复制
/*最外层透明*/
/deep/ .el-table{
  background-color: transparent;
}
/* 表格内背景颜色 */
/deep/ .el-table th,
/deep/ .el-table tr,
/deep/ .el-table td {
  background-color: transparent !important;
}

注意

  • 可以通过f12定位元素,通过/deep/深度选择器进行组件样式修改
  • 必要时可添加!important修饰

后记

目前还没有遇到未可修改的组件样式。

参考文章:ElementUI中的el-table表格设置全透明(组件化开发和html两种方式)_诗水人间的博客-CSDN博客_eltable透明

0 人点赞