-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclassStyle.html
142 lines (135 loc) · 3.94 KB
/
classStyle.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Class 与 Style 绑定</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<style>
.title {
color: red;
font-size: 20px;
}
.blue {
color: blue;
}
.small {
font-size: 10px;
}
.selected {
color: green;
}
.bg {
background-color: grey;
}
.love-title {
font-size: 30px;
color: #000;
}
.love-color {
color: red;
}
</style>
</head>
<body>
<div id="app">
<!-- 通过 v-bind 动态切换 class -->
<!-- :class 可动态绑定一个 class,如果 isBlue 为真时,使用 blue 选择器;isSmall 为真时,使用 small 选择器-->
<div class="title" :class="{blue: isBlue, small: isSmall}">{{title}}</div>
<!-- 这个和上面的等价,可以把选择器直接在 data 中 -->
<div class="title" :class="titleClass">{{title}}</div>
<!-- 直接使用计算属性 -->
<div class="title" :class="subTitleClass">{{title}}</div>
<!-- 三元表达式 -->
<div class="title" :class="[isSelected ? 'selected' : '']">{{title}}</div>
<div class="title" :class="[isSelected ? 'selected' : '', 'bg']">{{title}}</div>
<!-- 直接使用 data 中的属性 -->
<div class="title" :class="[isSelected ? 'selected' : '', bgClass]">{{title}}</div>
<!-- lovue 组件使用 class 选择器,外部选择器 love-color 被添加到组件的跟选择器 -->
<lovue class="love-color"></lovue>
<!-- 样式 -->
<div :style="{color: activeColor, fontSize: size + 'px'}">前端小课</div>
<!-- data 属性 -->
<div :style="titleStyle">前端小课</div>
<!-- 计算属性 -->
<div :style="nameStyle">前端小课</div>
<!-- 过滤器添加属性 -->
<div :style="size | nameFStyle">前端小课</div>
<!-- 使用多个样式 -->
<div v-bind:style="[baseStyles, bgStyles]">我是样式属性</div>
</div>
<script>
// 定义一个组件
Vue.component('lovue', {
template: '<p class="love-title">Vue 虚拟实验室 by<span>Lovue</span></p>'
});
const obj = {
el: '#app',
data: function () {
return {
title: '前端小课',
isBlue: true,
isSmall: false,
isSelected: true,
titleClass: {
// blue 与 small 是选择器名
blue: false,
small: true
},
bgClass: {
bg: true
},
activeColor: 'red',
size: 26,
titleStyle: {
color: 'red',
fontSize: '26px'
},
baseStyles: {
color: 'red',
fontSize: '20px'
},
bgStyles: {
backgroundColor: 'blue'
}
}
},
computed: {
subTitleClass: function () {
return {
// blue 和 small 是选择器名称
blue: this.isBlue,
small: this.isSmall
}
},
nameStyle: function () {
return {
color: 'red',
fontSize: '26px'
}
}
},
filters: {
nameFStyle: function (size) {
return {
color: 'red',
fontSize: size + 'px'
}
console.log('size = ', size);
}
},
mounted() {
},
methods: {
clickMe() {
console.log('点我');
},
eventAction() {
console.log('动态参数');
}
}
}
const vm = new Vue(obj);
</script>
</body>
</html>