VUE 样式绑定

操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是属性,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。

绑定 HTML Class

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<style>
	.active {background-color: #0F0;}
</style>
</head>
<body>
	<div id="app">
		<span v-bind:class="{ active: isActive }">Hello VUE Class</span>
	</div>
<script>
var obj = {
	isActive:true,
	foo: '<font color="red">Hello Html Fragment</font>'
}

var vm = new Vue({
  el: '#app',
  data: obj
})
</script>
</body>
</html>

VUE 样式绑定

使用对象绑定样式

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<style>
	.active {background-color: #0F0;}
	.text-danger {color: #F00;}
</style>
</head>
<body>
	<div id="app">
		<span v-bind:class="classObject">Hello VUE Class</span>
	</div>
<script>
var obj = {
	classObject: {
	   active: true,
	   'text-danger': true
	 },
	foo: '<font color="red">Hello Html Fragment</font>'
}

var vm = new Vue({
  el: '#app',
  data: obj
})
</script>
</body>
</html>

VUE 样式绑定

数组语法

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<style>
	.active {background-color: #0F0;}
	.text-danger {color: #F00;}
</style>
</head>
<body>
	<div id="app">
		<span v-bind:class="[activeClass, errorClass]">Hello VUE Class</span>
	</div>
<script>
var obj = {
	activeClass:'active',
	errorClass:'text-danger',
	foo: '<font color="red">Hello Html Fragment</font>'
}

var vm = new Vue({
  el: '#app',
  data: obj
})
</script>
</body>
</html>

VUE 样式绑定

用在组件上

当在一个自定义组件上使用 class 属性时,这些类将被添加到该组件的根元素上面。这个元素上已经存在的类不会被覆盖。

例如,如果你声明了这个组件:

Vue.component('my-component', {
  template: '<p class="foo bar">Hi</p>'
})

然后在使用它的时候添加一些 class:

<my-component class="baz boo"></my-component>

HTML 将被渲染为:

<p class="foo bar baz boo">Hi</p>

对于带数据绑定 class 也同样适用:

<my-component v-bind:class="{ active: isActive }"></my-component>

当 isActive 为 truthy[1] 时,HTML 将被渲染成为:

<p class="foo bar active">Hi</p>

绑定内联样式

对象语法
v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
	<div id="app">
		<span v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">Hello VUE Class</span>
	</div>
<script>
var obj = {
	activeColor:'red',
	fontSize:'12',
	foo: '<font color="red">Hello Html Fragment</font>'
}

var vm = new Vue({
  el: '#app',
  data: obj
})
</script>
</body>
</html>

VUE 样式绑定
VUE 样式绑定