开发者学堂课程【Vue.js 入门与实战:veu 中通过属性绑定为元素设置 class 类样式】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/586/detail/8137
veu 中通过属性绑定为元素设置 class 类样式
目录
一、 使用class样式
二、 代码
一、使用 class 样式:
1. 数组
<h1 :class="['red'
,
'thin']">这是一个邪恶
的
H1</h1>
2. 数组中使用三元表达式
<h1 :class="['red', "thin', isactive? 'active' : ‘’]”>这是一个邪恶的H1</h1>
3. 数组中嵌套对象
<h1 :class="['red', 'thin'
,
{'active': isactive}]">这是一个邪恶的H1</h1>
4. 直接使用对象
<h1 :class="{red:true
,
italic:true, active:true
,
thin:true}">这是一个邪恶的H1</h1>
学习 Vue 里面如何使用样式,在网页中如果写样式有两种写法:第一种直接写行内的内联样式;第二种可以把内联样式抽离为一个单独的 class 类,这样通过 class 来进行引用。先来看如何在 Vue 中使用 class 进行样式设置。
这里总结了有四种使用方式:
第一种直接使用数组,这个’red’和这个’thin’以数的形式作为两个字符串,’red’是一个类,’thin’也是一个类,当前这个h1就有两个类,就得通过中括号形式来把这两个类以数组里面的每一项给它含进去。构建一个 html。
先写个类:.red{color:red;}
即红色字体;thin {font-weight: 200;}
即200瘦体;.
italic{font-style:italic;}
即斜体;.
active{letter-spacing: 0.5em;}
即0.5间距。
通过简写即:(冒号),这时候只写red则会报错,因为找不到这个变量,没有定义。
这时候通过数组的形式,比如用’thin’,这时候是以字符串穿过去的,这样是可以的。但是如果不以字符串的形式则把它当成一个变量去找,将找不到。所以在用类的时候,类名必须用单引号包起来,如果想用多个类,加逗号继续往后拼就行了。
active 只有为true的时候才能被应用,只有当前被选中才有这个类,这里面在 data中定义一个 flag 默认等于 true,如果 flag 为 true 的话,应该添加这一类。如果flag 不写引号,它会去 data 里面找 flag,它也是变量,并且能找到。
所以这里是当前为 ture,可以看出字符间距间距比较宽一些,如果改为 false,字符间距就窄了。
由于写三元表达式比较麻烦,在这里面直接写表达式不好,所以就可以把三元表达式改造成这种对象的形式。
这里的前两个类都会被运用到,当然第三个类通过一个对象,对象里面有个键,就是类名,键的值就是 flag 标志,这个标志为 true,就会运用这个类,如果这个 flag为 false,就不会运用这个类。
最后直接使用对象:class,还是对 class 做了属性绑定,在这里面并没有传数组,而且直接传了一个对象。对象里面前面是类名,后面是为 true 或者为 false。
为 true 那么这个类就会被应用到元素上,如果为 false 就不会被应用了。
classObj 是一个属性的引用,引用在 classObj: {
red
: true, thin, italic: false, active: false }
属性上,这个属性指向后面的对象,就相当于间接的放了一个对象。然后保存、刷新,是没有问题的。
以上就是 Vue 里面通过 class 属性绑定的形式为元素添加类样式,总共介绍了4种方式。
二、代码:
<head>
<meta charset="UPr-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src=" . /lib/vue-2.4.0.js"></script>
<style>
.red {
color:red;
}
.thin {
font-weight: 200;
}
.italic{
font-style:italic;
}
.active{
letter-spacing: 0.5em;
}
</style>
</head>
<body>
<div id=”app”>
<!--<h1 class=”red thin”>这是一个很大很大的H1,大到你无法想象!!!</h1>-->
<!--第一种使用方式,直接传递一个数组,注意:这里的class需要使用v-bind做数据绑定-->
<!--<h1 :class=”[‘thin’,’italic’]”>这是一个很大很大的H1,大到你无法想象!!!</h1>-->
<!--在数组中使用三元表达式-->
<!--<h1 :class=”[‘thin’, ’italic’, flag?‘active’:’’]”>这是一个很大很大的H1,大到你无法想象!!!</h1>-->
<!--在数组中使用 对象来代替三元表达方式,提高代码的可读性-->
<!--<h1 :class=”[‘thin’, ’italic’, {‘active’:flag} ]”>这是一个很大很大的H1,大到你无法想象!!!</h1>-->
<!--在为class使用v-bind绑定对象的时候,对象的属性是类名,由于对象的属性可带引号,也可不带引号,所以这里没写引号;属性的值是一个标识符-->
<h1 :class=”classObj”>这是一个很大很大的H1,大到你无法想象!!!</h1>
</div>
<script>
//创建vue 实例,得到ViewMode1
var vm= new vue ({
el: ‘#app’,
data: {
flag: true,
classObj: { red: true, thin, italic: false, active: false }
},
methods: {}
});
</script>
</body>
输出为:
1:
2:
3:
4: