使用 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>
运行效果: