Class 与 Style 绑定
数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式(
称为行内样式、行间样式,是通过标签的Style属性来设置)
。因为class
和style
都是 attribute,我们可以和其他 attribute 一样使用v-bind
将它们和动态的字符串绑定。但是,在处理比较复杂的绑定时,通过拼接生成字符串是麻烦且易出错的。因此,Vue 专门为class
和style
的v-bind
用法提供了特殊的功能增强。除了字符串外,表达式的值也可以是对象或数组。
一、绑定 HTML class
1.1、绑定对象
我们可以给 :class( v-bind:class 的缩写 )传递一个对象来动态切换 class:
<div :class="{ active: isActive }"></div>
上面的语法表示active
是否存在取决于数据属性isActive
的真假值。
:class
指令也可以和一般的class
attribute 共存。
const isActive = ref(true) const hasError = ref(false)
举下这个例子:
<div class="static" :class="{ active: isActive, 'text-danger': hasError }" ></div>
渲染的结果:
<div class="static active"></div>
当isActive
或者hasError
改变时,class 列表会随之更新。举例来说,如果hasError
变为true
,class 列表也会变成"static active text-danger"
。
绑定的对象并不一定需要写成内联字面量的形式,也可以直接绑定一个对象:
const classObject = reactive({ active: true, 'text-danger': false })
<div :class="classObject"></div>
这也会渲染出相同的结果。我们也可以绑定一个返回对象的计算属性。这是一个常见且很有用的技巧:
const isActive = ref(true) const error = ref(null) const classObject = computed(() => ({ active: isActive.value && !error.value, 'text-danger': error.value && error.value.type === 'fatal' }))
<div :class="classObject"></div>
标签:Style,Vue,const,vuejs,绑定,error,ref,class,isActive From: https://www.cnblogs.com/zuoyang/p/17071401.html