绑定class属性的格式是 v-bind:class = "语句", 可以缩写为 :class ="语句" 。class属性是可以有多个的,在" "内可以有多种不同的情况。下面介绍在" "写入的不同情况。
目录
一、" "内是vue对象内存在的对象
二、" " 内为 [ ] 数组
三、 " "内为 { } json对象
一、" "内是vue对象内存在的对象
:class = " 语句" , 语句中传入的是vue建立的变量,计算属性,函数等的时候,就会把vue中所对应的对象的值替换成class的值。传入的是字符串' '的话就直接作为class属性值。
这种情况不能绑定一个class值,并且只能通过绑定的class的变量的值修改才能改变class属性的值。
代码实例:
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style>.active{color:red;}</style><script src="js/vue.js"></script></head> <body><div id="app"><div :class="c1">{{c1}}</div></div><script>const app = new Vue({el:"#app",data:{ c1:"active"},}); </script></body>
</html>
页面效果:
二、" " 内为 [ ] 数组
当我们想绑定多个class属性值时,就可以在" "内传入 [ ] 数组。数组内的值是vue内的对象变量名。如果带有' '则传入的就是实际值,不会被替换。
代码实例:
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style>.active{color:red;}.font{background-color:blue;}</style><script src="js/vue.js"></script></head> <body><div id="app"><div :class="[c1,c2,'c3']">{{c1}}</div> </div><script>const app = new Vue({el:"#app",data:{ c1:"active",c2:"font",},}); </script></body>
</html>
页面效果: 显然标签属性会是 class="active font c3";
三、 " "内为 { } json对象
当我们想绑定多个class属性值,设置的每个class属性值是已经给出的。可以设置绑定的属性值时决定要还是不要,比如 class = "n1 n2", 我们通过vue可以将设置成class = "n1",但不能通过vue直接设置成class="n3" ;
我们就要用到 { } 对象来表达。只有每一个设置的class属性值对应的一个boolean类型的值来决定该标签是否拥有该属性值,但对应的boolean值是true才给class属性赋值。
格式为:
该类型的格式为 :class = " { n1 : b1 , n2: b2 }" ;
注意:
// b1,b2是boolean类型
// n1,n2不在被vue对象替换,就是纯文本 !无论加不加" ", 如上述 ,假设b1 = true, b2=true。则在页面渲染时, 该标签属性 class = " n1 n2"
代码演示:
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style>.active{color:red;}.font{background-color:blue;}</style><script src="js/vue.js"></script></head> <body><div id="app"><div :class="{active:isTrue1,font:isTrue2}">{{c1}}</div></div><script>const app = new Vue({el:"#app",data:{ active:"active1",font:"font1",isTrue1:true,isTrue2:false},}); </script></body>
</html>
页面效果:果不其然, :class="{active:isTrue1,font:isTrue2}" 中active,font并没有被vue替换,而是直接当成class属性值 !