本文主要通过修改switch样式,记录一下如何修改elementUI样式。

引自https://blog.csdn.net/sleepwalker_1992/article/details/85763951

Element-UI的Switch 开关用法

http://element-cn.eleme.io/#/zh-CN/component/switch

修改后的示意图

代码部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

<template>
<div>
<el-switch
v-model="value"
width="46"
active-value="0"
inactive-value="1"
active-text="开"
inactive-text="关">
</el-switch>
</div>
</template>

<script>
export default {
data () {
return {
value: '0'
};
}
};
</script>

样式(修改Element-UI的Switch 开关的默认样式类):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.el-switch__label--left{
position: relative;
left: 46px;
color: #fff;
z-index: -1111;
}
.el-switch__label--right{
position: relative;
right: 46px;
color: #fff;
z-index: -1111;
}
.el-switch__label.is-active{
z-index: 1111;
color: #fff;
}

打开关闭时的字体颜色不同

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.el-switch__label--left{
position: relative;
left: 46px;
color: #fff;
z-index: -1111;
}
.el-switch__label--right{
position: relative;
right: 46px;
color: #fff;
z-index: -1111;
}
.el-switch__label--right.is-active{
z-index: 1111;
color: #fff !important;
}
.el-switch__label--left.is-active{
z-index: 1111;
color: #9c9c9c !important;
}

小结

用ui组件总免不了需要对它做一些个性化定制的需求,所以我们就要覆盖element的一些样式。
首先我们要了解一下vue scoped是什么,很多人非常喜欢用scoped,其实scoped也没有很神秘的,它就是基于PostCss的,加了一个作用局的概念。

1
2
3
4
5
6
7
8
// 编译前
.example {
color: red;
}
// 编译后
.example[_v-f3f3eg9] {
color: red;
}

它和我们传统的命名空间的方法避免css冲突没有什么本质性的区别。
现在我们来说说怎么覆盖element-ui样式。由于element-ui的样式我们是在全局引入的,所以你想在某个view里面覆盖它的样式就不能加scoped,但你又想只覆盖这个页面的element样式,你就可在它的父级加一个class,以用命名空间来解决问题。

1
2
3
4
5
.aritle-page { // 你的命名空间
.el-tag { // element-ui 元素
margin-right: 0px;
}
}