一、绑定HTML Class
1. 对象语法
我们可以传给 v-bind:class
一个对象,以动态地切换 class:
<div v-bind:class="{ active: isActive }">这是测试一</div>
又或者:
<div class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }" ></div>
当 isActive
或者 hasError
变化时,class 列表将相应地更新。
甚至可以用如下方法:
<div v-bind:class="classObject"></div>
data: { isActive: false, isError: true }, computed: { classObject: function () { return { active: this.isActive && !this.isError, 'text-danger': this.isError } }
整体代码参考:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>VUE简单示范</title> <script type="text/javascript" src="../js/vue.js" charset="utf-8"></script> </head> <body> <div id="app-6"> <div v-bind:class="{ active: isActive }">这是测试一</div> <div v-bind:class="classObject">这是测试二</div> </div> <script> var app6 = new Vue({ el: '#app-6', data: { isActive: false, isError: true }, computed: { classObject: function () { return { active: this.isActive && !this.isError, 'text-danger': this.isError } } } }) </script> <style> .active { color:#FF0000;} .text-danger { font-size:100px;} </style> </body> </html>
2. 数组语法
如果你也想根据条件切换列表中的 class,可以用三元表达式:
<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>
这样写将始终添加 errorClass
,但是只有在 isActive
是 true 时才添加 activeClass
。
二、绑定内联样式
1. v-bind:style
的对象语法
对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS property 名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名:
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: { activeColor: 'red', fontSize: 30 }
直接绑定到一个样式对象通常更好,这会让模板更清晰:
<div v-bind:style="styleObject"></div>
data: { styleObject: { color: 'red', fontSize: '13px' } }
2. 数组语法
<div v-bind:style="[baseStyles, overridingStyles]"></div>
3. 整体代码参考
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>VUE简单示范</title> <script type="text/javascript" src="../js/vue.js" charset="utf-8"></script> </head> <body> <div id="app-6"> <div v-bind:class="{ active: isActive }">这是测试一</div> <div v-bind:class="classObject">这是测试二</div> <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">这是测试三</div> <div v-bind:style="styleObject">这是测试四</div> </div> <script> var app6 = new Vue({ el: '#app-6', data: { isActive: false, isError: true, activeColor: 'red', fontSize: 30, styleObject: { color: 'red', fontSize: '13px' } }, computed: { classObject: function () { return { active: this.isActive && !this.isError, 'text-danger': this.isError } } } }) </script> <style> .active { color:#FF0000;} .text-danger { font-size:100px;} </style> </body> </html>
本文参考:
https://cn.vuejs.org/v2/guide/class-and-style.html#%E7%BB%91%E5%AE%9A%E5%86%85%E8%81%94%E6%A0%B7%E5%BC%8F