v-bind 指令被用来响应地更新 HTML 属性。常用来设置 class、style等等。语法规则如下:
<span v-bind:class="classProperty"></span >
其中:v-bind 是 vue 的指令,: 后面的 class 是参数,classProperty 是我们预期要设置的值。
开发中,v-bind 写起来比较繁琐。vue 提供了缩写语法:
<span :class="classProperty"></span >
“:”后面的 class 是参数,classProperty 是我们预期要设置的值。
下面实例将展示 v-bind:class 使用对象来绑定 class 属性。实例代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>学习 VUE 框架</title>
<script type="text/javascript" src="../libs/vue-2.6/vue.js"></script>
<style type="text/css">
.normal {font-size: 18px; font-weight:bold;}
.active {color: #26b955;}
.under-line {border-bottom: solid 3px red;}
</style>
</head>
<body>
<div id="app">
<p v-bind:class="{ active: isActive, 'under-line': underLine }"></p>
<p v-bind:class="classObject"></p>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data: {
isActive: true,
underLine: false,
classObject: {
active: true,
'under-line': false
}
}
});
</script>
</body>
</html>其中:
(1) v-bind:class="{ active: isActive, 'under-line': underLine }" 中,如果 isActive 为 true,则为元素添加 active 样式。如果 underLine 为 true,则为元素添加 under-line 样式。
(2) v-bind:class="classObject" 中的 classObject 在 vue 对象的 data 域中定义的一个对象。
注意:上面两种方式效果一样,均给 <p> 元素添加了 class,class 为 "normal active"。
当然,我们也可以使用缩写语法来实现。DOM代码如下:
<div id="app">
<p :class="{ active: isActive, 'under-line': underLine }"></p>
<p :class="classObject"></p>
</div>下面实例将展示 v-bind:class 指令使用数组来绑定 class 属性。实例代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>学习 VUE 框架</title>
<script type="text/javascript" src="../libs/vue-2.6/vue.js"></script>
<style type="text/css">
.normal {font-size: 18px; font-weight:bold;}
.active {color: #26b955;}
.under-line {border-bottom: solid 3px red;}
</style>
</head>
<body>
<div id="app">
<p v-bind:class="[normal, active, underLine]">
我们可以把一个数组传给 v-bind:class,以应用一个 class 列表</p>
<p v-bind:class="[normal, isActive ? active : '', underLine]">
我们可以把一个数组传给 v-bind:class,以应用一个 class 列表</p>
<p v-bind:class="[normal, {active: isActive}, underLine]">
我们可以把一个数组传给 v-bind:class,以应用一个 class 列表</p>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data: {
isActive: false,
normal: 'normal',
active: 'active',
underLine: 'under-line'
}
});
</script>
</body>
</html>上面实例使用 v-bind:class="[normal, isActive ? active : '', underLine]" 指定多个 class 值,其中 isActive ? active : '' 是一个三目运算符,如果 isActive 为 false,则 class 为空。