使用 v-bind 指令绑定 class 和 style 时语法相对复杂一些,这两者是可以互相替代的,均用于响应更新HTML元素的属性, v-bind 绑定 class 属性可以改写成绑定 style 属性,只是 css 属性位置变了而已。
1. 绑定 class 属性
1.1 数组格式绑定 class 属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
.one{
width: 100px;
height: 100px;
}
.two{
background: yellowgreen;
}
</style>
</head>
<body>
<div id="app">
<p :class="[onevar,twovar]">猫狗双全</p>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
onevar: "one",
twovar: "two"
}
});
</script>
</body>
</html>
运行效果:
1.2 对象格式绑定 class 属性
采用 json 格式,即键值对形式,键是样式名,值固定为布尔型,即 true 或 false。true 表示应用该样式,false 表示不使用该样式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
.one{
width: 100px;
}
.two {
height: 100px;
}
.three {
background: yellowgreen;
}
</style>
</head>
<body>
<div id="app">
<p :class="{one:flag,two:flag,three:flag}">猫狗双全1</p>
<hr/>
<p :class="{one:num < 0,two:flag,three:flag}">猫狗双全2</p>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
flag: true
}
});
</script>
</body>
</html>
运行效果:
1.3 通过变量引入 json 格式的对象绑定 class 属性
通过变量引入json格式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
.one{
width: 100px;
}
.two {
height: 100px;
}
.three {
background: yellowgreen;
}
</style>
</head>
<body>
<div id="app">
<p :class="{one:flag,two:flag,three:flag}">猫狗双全1</p>
<hr/>
<p :class="flagvar">猫狗双全2</p>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
flag:true,
flagvar:{
one: true,
two: true,
three: true
}
}
});
</script>
</body>
</html>
运行效果:
2. 绑定 style 属性
基本写法是 :style=“样式名”。如果要同时绑定多个样式,则需要使用数组的写法,即 :style=“[样式名1, 样式名2, … …]”。其中样式名要在 vm 实例的 data 中存在。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
.one {
width: 100px;
}
.two {
height: 100px;
}
.three {
background: yellowgreen;
}
</style>
</head>
<body>
<div id="app">
<!-- 内嵌样式的绑定-->
<p :style="threevar">猫狗双全1</p>
<hr/>
<!-- 内嵌样式的绑定,使用数组形式-->
<p :style="[onevar, twovar, threevar]">猫狗双全2</p>
<hr/>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
onevar: {
width: '100px'
},
twovar: {
height: '100px'
},
threevar: {
background: 'yellowgreen'
},
}
});
</script>
</body>
</html>
运行效果: