# Class & Style Binding
# Class Binding
# Class Binding Basic
# Input:
<template>
<div>
<button @click="active = !active" :class="{ coolBorder: active }">
Click to change button background color
</button>
</div>
</template>
<script>
export default {
data: function() {
return {
active: false
}
}
}
</script>
<style scoped>
.coolBorder {
background-color: white;
color: black;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Output:
# Class Binding Using Objects
# Input:
<template>
<div :class="divClasses">
<!-- Bind Class with Objects -->
<button @click="foo = !foo">
Make another element change
</button>
</div>
</template>
<script>
export default {
data: function() {
return {
foo: false
}
},
computed: {
divClasses: function() {
return {
cool: this.foo,
active: this.foo
}
}
}
}
</script>
<style scoped>
.cool {
border: Solid 1px #00ff00;
}
.active {
background-color: #00ff00;
}
</style>
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
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
# Output:
# Class Binding Using names
# Input:
<template>
<div :class="BlinkClass">
<input v-model="BlinkClass" type="text" placeholder="Type 'Blink'" />
</div>
</template>
<script>
export default {
data: function() {
return {
BlinkClass: ''
}
}
}
</script>
<style scoped>
.Blink {
animation: blinkingBackground 1s infinite;
}
@keyframes blinkingBackground {
0% {
background-color: #00ff00;
}
100% {
background-color: #1e1d45;
}
}
</style>
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
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
# Output:
# Style Binding
# Style Binding as Object
# Input:
<template>
<div>
<button @click="loading++" type="button">Click Me!</button>
<div class="loading">
<div class="loadingbar" :style="{ width: loading + '%' }">
{{ loading < 100 ? loading : 100 }} %
</div>
</div>
</div>
</template>
<script>
export default {
data: function() {
return {
loading: 67
}
}
}
</script>
<style scoped>
.loading {
max-width: 100%;
}
.loadingbar {
color: #1e1d45;
max-width: inherit;
background-color: rgba(0, 255, 0);
text-align: center;
height: 20px;
box-shadow: rgba(0, 255, 0, 0.6) 0px 0px 7px;
}
</style>
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
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
# Output:
# Style Binding with Computed Properties
# Input:
<template>
<div>
<button @click="loading++" type="button">Click Me!</button>
<div class="loading">
<div class="loadingbar" :style="myStyle">
{{ loading < 100 ? loading : 100 }} %
</div>
</div>
</div>
</template>
<script>
export default {
data: function() {
return {
loading: 80
}
},
computed: {
myStyle: function() {
return {
width: this.loading + '%'
}
}
}
}
</script>
<style scoped>
.loading {
max-width: 100%;
}
.loadingbar {
color: #1e1d45;
max-width: inherit;
background-color: rgba(0, 255, 0);
text-align: center;
height: 20px;
box-shadow: rgba(0, 255, 0, 0.6) 0px 0px 7px;
}
</style>
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
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