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>

在这里插入图片描述

使用对象绑定样式

<!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>

在这里插入图片描述

数组语法

<!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>

在这里插入图片描述

用在组件上

当在一个自定义组件上使用 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>

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值