# Class 与 Style 绑定
注意
对象语法中,{key:value}中key,可以带引号,也可以不带引号,都会渲染成 class 类名, 比如:class="{textColor: isActive }" 在 isActive = true时,渲染成 class="textColor", 不同于在数组中 :class="[activeClass, basedClass]",activeClass会被渲染成对应的data值。
# 对象语法
<template>
<div>
<!--对象语法-->
<div :class="{ 'textColor': isActive }">对象语法</div>
<!--对象中传入多个字段来动态切换多个class-->
<div
class="based"
:class="{ textColor: isActive, 'bg-color': hasBgColor }"
>对象中传入多个字段来动态切换多个class</div>
<!--绑定的数据对象放在data中-->
<div :class="classObject">绑定的数据对象放在js中</div>
<!--绑定的数据对象放在计算属性中-->
<div :class="classComputed">绑定的数据对象放在计算属性中</div>
<!--点击按钮改变变量-->
<button @click="ClickName">点击改变fullName的值</button>
</div>
</template>
<script>
export default {
data () {
return {
isActive:false,
hasBgColor:false,
classObject:{
'textColor': true,
}
}
},
computed:{
classComputed(){
return {
'textColor': true,
}
}
},
methods: {
ClickName () {
this.isActive = true;
this.hasBgColor = true;
}
}
}
</script>
<style>
.textColor{
color:red;
}
.based{
font-size: 20px;
}
.bg-color{
background: yellow;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 数组语法
<template>
<div>
<!--数组语法-->
<div :class="[activeClass, basedClass]">数组语法</div>
<!--三元表达式切换class-->
<div :class="[isActive ? activeClass : '', basedClass]">三元表达式</div>
<!--数组语法中也可以使用对象语法-->
<div :class="[{ activeClass: isActive }, basedClass]">数组语法中也可以使用对象语法</div>
<button @click="ClickName">点击改变fullName的值</button>
</div>
</template>
<script>
export default {
data () {
return {
activeClass:'textColor',
basedClass:'based',
isActive:false,
}
},
methods: {
ClickName () {
this.isActive=true;
}
}
}
</script>
<style>
.textColor{
color:red;
}
.based{
font-size: 20px;
}
.bg-color{
background: yellow;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 组件上使用
父组件上使用class,会默认挂载到子组件的根元素上!如果想指定到某个元素上,使用以下方式:
父组件上定义class
<template>
<MyComponent class="foo"></MyComponent>
</template>
<script>
import MyComponent from './components/MyComponent.vue'
export default {
components:{
MyComponent
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
子组件使用$attrs指定继承位置,并且使用 inheritAttrs: false 消除默认继承位置。
<template>
<div>
<p :class="$attrs.class">我是子组件内容</p>
</div>
</template>
<script>
export default {
name: 'MyComponent',
inheritAttrs: false, //这里
}
</script>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 内联样式
分为对象语法和数组语法,渲染style
<template>
<div>
<!--对象语法-->
<div :style="{ color: activeColor, fontSize: currFontSize + 'px' }">对象语法1</div>
<div :style="styleObject">对象语法2</div>
<!--数组语法-->
<div :style="[styleObject, activeObject]">数组语法</div>
</div>
</template>
<script>
export default {
data(){
return {
activeColor:'red',
currFontSize:22,
styleObject:{
color:'yellow'
},
activeObject:{
background:'green'
}
}
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25