样式绑定
1、class样式处理
对象语法
我们可以传给 v-bind:class 一个对象,以动态地切换 class:
上面的语法表示 active 这个 class 存在与否将取决于数据 property isActive 的 真实性。
你可以在对象中传入更多字段来动态切换多个 class。此外,v-bind:class 指令也可以与普通的 class attribute 共存。当有如下模板:
// template
class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }">
// 业务逻辑
data: {
isActive: true,
hasError: false
}
结果渲染为:
当 isActive 或者 hasError 变化时,class 列表将相应地更新。例如,如果 hasError 的值为 true,class 列表将变为 "static active text-danger"。
来看一个简单例子,实现切换功能
// css .active { width: 100px; height: 100px; border: 1px solid red; } // template // 业务逻辑 data: { isActive: true }, methods: { change: function () { this.isActive = !this.isActive; // 采用取反的方式实现切换 } }
绑定的数据对象不必内联定义在模板里:
// template
// 业务逻辑
data: {
classObject: {
active: true,
'text-danger': false
}
}
渲染的结果和上面一样。我们也可以在这里绑定一个返回对象的计算属性。这是一个常用且强大的模式:
// 绑定一个返回对象的计算属性。这是一个常用且强大的模式:
数组语法
我们可以把一个数组传给 v-bind:class,以应用一个 class 列表:
// template // 业务逻辑 data: { activeClass: 'active', errorClass: 'text-danger' }
渲染为:
测试文字
如果你也想根据条件切换列表中的 class,可以用三元表达式:
// css .active { width: 100px; height: 100px; border: 1px solid red; } .error { background-color: orange; } // template测试文字// 业务逻辑 data: { flag: true, activeClass: 'active', errorClass: 'error' }, methods: { change: function () { this.flag = !this.flag } }
样式绑定的相关细节:
1、对象绑定可以和数组绑定结合使用
2、class绑定的值可以简化操作(不要写在内联样式当中,造成代码的可读性差)
3、v-bind:class 指令也可以与普通的 class attribute 共存