在Vue中,如果要为某个元素动态添加某个类,并不会使用document.getElementById
等选择器将该元素获得,而是使用v-bind:class
(简写:class
)来进行改变。
字符串写法适用于样式的类名不确定,需要动态指定的情况。用法如下:
xx2
需要在data
中进行声明,最后,元素上的class
就是xxx1 normal
new Vue({...data: {xxx2: "normal"}
})
例如,下面元素有一个基本的类basic
,显示字体颜色为红色,还有两个类bigFont
和font-size
,效果分别是font-size
变为30px和background-color
为pink
,点击该元素,会切换两个类,默认最先开始显示bigFont
类
三个类具体如下:
.basic {color: red;
}
.bigFont {font-size: 30px;
}
.colorFont {background-color: pink;
}
具体代码如下:
橘猫吃不胖
从效果图可以看出,元素的class
在basic bigFont
和basic colorFont
来回切换。
数组写法适用于绑定的类个数不确定,类名也不确定的情况。比如class1
、class2
、class3
三个类,元素可能只用1,也可能用1、3,也可能全用,这样的情况就使用数组写法。具体用法如下:
其中,classArr
是在data
中定义的数组,数组中存放的是要用到的类名,涉及到几个类,就在数组中传几个类。
new Vue({...data: {classArr: ["class1", "class2", "class3", ...]}
})
接下来可以通过操作数组的增删改查来修改数组,达到更改类的效果。
例如,还是3个类basic
、bigFont
、colorFont
,新增3个按钮,点击按钮可以动态添加这三个类,默认效果三个类都存在。
三个类具体如下:
.basic {color: red;
}
.bigFont {font-size: 30px;
}
.colorFont {background-color: pink;
}
具体代码如下:
橘猫吃不胖
对象写法适用于绑定的类个数确定,名字也确定,但是要动态的判断是否使用的情况。用法如下:
classObj
是在data
中定义的对象,具体形式如下:
new Vue({...data: {classObj: {class1: true / false,class2: true / false,...}}
})
其中,class1
、class2
…是类名。
例如,3个类basic
、bigFont
、colorFont
,显示bigFont
、colorFont
,不显示basic
,具体代码如下:
橘猫吃不胖
为某个元素添加样式时,也可以使用v-bind:style
(简写:style
)来进行样式上的绑定。
可以为v-bind:style
直接传一个对象,健是样式属性,值是样式值。
示例代码:
橘猫吃不胖
或者在data
中定义v-bind:style
中的对象,具体方式如下:
上面的例子可以写成如下形式:
橘猫吃不胖
可以为v-bind:style
传入数组,数组中是样式对象,具体如下:
styleArr
是样式对象的数组,在data
中定义,具体形式如下:
new Vue({...data: {styleArr: [{属性1: 属性值1,属性2: 属性值2,...}, {属性3: 属性值3,...}...]}
})
示例代码:
橘猫吃不胖
或者可以写成以下形式:
styleArr1
、styleArr2
…是在data
中定义的样式对象
new Vue({...,data: {styleArr1: {属性1: 属性值1,属性2: 属性值2,...},styleArr2: {属性3: 属性值3,...},...}
})
上面的例子可以写成如下形式:
橘猫吃不胖