Muscardinus
Class Bind 본문
728x90
class를 Vue Instance의 데이터 혹은 다른 값에 따라서 동적으로 바꾸고 싶을 때가 있을 것이다.
그럴 경우,
<div id="app">
<label> <input type="checkbox" v-model="isPurple" /> Purple </label>
<div class="circle" :class="{ purple: isPurple }">Hi!</div>
</div>
.purple{
background-color: #767DEA;
}
이와 같이 :class를 선언하고 내부에 하나의 객체를 넣으면 된다.
그리고 원하는 class이름과 그에 따른 조건을 넣어주면 된다.
이러면, isPurple가 true일때, class에는 circle와 purple의 class가 적용될 것이다.
하지만, 더 많은 class를 동적으로 바꾸고 싶을 때가 있다. 이럴 때, computed를 사용하는 것이 좋다.
let vm = Vue.createApp({
data() {
return {
isPurple: false,
};
},
computed: {
circle_classes() {
return { purple: this.isPurple };
},
},
}).mount('#app');
<!DOCTYPE >
<html>
<head>
<title>VueJS Course</title>
<link rel="stylesheet" type="text/css" href="main.css" />
</head>
<body>
<div id="app">
<label> <input type="checkbox" v-model="isPurple" /> Purple </label>
<div class="circle" :class="circle_classes">Hi!</div>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script src="app.js"></script>
</body>
</html>
마지막으로, 만약 더 많은 class에 대해서 동적으로 받고 싶으면, 배열을 쓰는 방법도 있다.
<!DOCTYPE >
<html>
<head>
<title>VueJS Course</title>
<link rel="stylesheet" type="text/css" href="main.css" />
</head>
<body>
<div id="app">
<label> <input type="checkbox" v-model="isPurple" /> Purple </label>
<select name="" id="" v-model="selectedColor">
<option value="">White</option>
<option value="text-black">Black</option>
<option value="text-orange">Orange</option>
</select>
<div class="circle" :class="[selectedColor, circle_classes]">Hi!</div>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script src="app.js"></script>
</body>
</html>
let vm = Vue.createApp({
data() {
return {
isPurple: false,
selectedColor: '',
};
},
computed: {
circle_classes() {
return { purple: this.isPurple };
},
},
}).mount('#app');
728x90
'FrontEnd > Vue' 카테고리의 다른 글
Conditional Rendering (0) | 2021.12.29 |
---|---|
Style Binding (0) | 2021.12.29 |
Computed (0) | 2021.12.29 |
v-on (0) | 2021.12.28 |
v-bind (0) | 2021.12.28 |
Comments