Vue.js 클래스와 스타일 바인딩되기
Vue.js 클래스와 스타일 바인딩되기
데이터 바인딩은 엘리먼트의 클래스 목록과 인라인 스타일을 조작하기 위해
일반적으로 사용됩니다. 이 두 속성은 v-bind를 사용하여 처리할 수 있습니다.
우리는 표현식으로 최종 문자열을 계산하면 됩니다.
그러나 문자열 연결에 간섭하는 것은 짜증나는 일이며 오류가 발생하기 쉽습니다.
이러한 이류로 Vue는 class와 style에 v-bind를 사용할 때
특별히 향상된 기능을 제공합니다.
표현식은 문자열 이외에 객체 또는 배열을 이용할 수 있습니다.
HTML 클래스 바인딩하기
#객체구문
클래스를 동적으로 토글하기 위해 v-bind:class에 객체를 전달할 수 있습니다.
HTML부분
<div v-bind:class="{ active: isActive }"></div>
위 구문은 active클래스의 존재 여부가 데이터 속성 isActive의 참 속성에
의해 결정되는 것을 의미합니다.
객체에 필드가 더 있으면 여러 클래스를 토글할 수 있습니다.
또한 v-bind:class 디렉티브는 일반 class 속성과 공존할 수 있습니다.
그래서 다음과 같은 템플릿이 가능합니다.
HTML부분
<div class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }">
</div>
그리고 데이터는
JS부분
data: {
isActive: true,
hasError: false
}
아래와 같이 렌더링 됩니다.
<div class="static active"></div>
isActive 또는 hasError가 변경되면 클래스 목록도 그에 따라 업데이트됩니다.
예를 들어, hasError가 true가 되면 클래스 목록은 "static active text-danger"가 됩니다.
바인딩 된 객체는 인라인 일 필요는 없습니다.
<div v-bind:class="classObject"></div>
JS부분
data:{
classObject:{
active: true,
'text-danger': false
}
}
같은 결과로 렌더링 됩니다. 또한 객체를 반환하는 계산된 속성에도 바인딩 할 수 있습니다.
이것은 일반적이며 강력한 패턴입니다.
HTML부분
<div v-bind:class="classObject"></div>
JS부분
data:{
isActive: true,
error: null
},
compted:{
classObject: function(){
return{
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
게시판 목록
퍼블리셔팁
질문은 상단의 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 947 | CSS | 8년 전 | 1560 | ||
| 946 | CSS | 8년 전 | 2225 | ||
| 945 | CSS | 8년 전 | 1738 | ||
| 944 | CSS | 8년 전 | 2164 | ||
| 943 | CSS | 8년 전 | 2233 | ||
| 942 | CSS | 8년 전 | 2202 | ||
| 941 | CSS | 8년 전 | 2020 | ||
| 940 | CSS | 8년 전 | 1760 | ||
| 939 | CSS | 8년 전 | 2265 | ||
| 938 | CSS | 8년 전 | 1584 | ||
| 937 | CSS | 8년 전 | 1663 | ||
| 936 | CSS | 8년 전 | 1778 | ||
| 935 | CSS | 8년 전 | 2381 | ||
| 934 | CSS | 8년 전 | 2462 | ||
| 933 | CSS | 8년 전 | 1814 | ||
| 932 | CSS | 8년 전 | 2275 | ||
| 931 | CSS | 8년 전 | 1855 | ||
| 930 | CSS | 8년 전 | 1884 | ||
| 929 | CSS | 8년 전 | 1813 | ||
| 928 | CSS | 8년 전 | 1513 | ||
| 927 | CSS | 8년 전 | 1554 | ||
| 926 | CSS | 8년 전 | 3126 | ||
| 925 | CSS | 8년 전 | 2092 | ||
| 924 | CSS | 8년 전 | 1714 | ||
| 923 | CSS | 8년 전 | 2130 | ||
| 922 | CSS | 8년 전 | 2158 | ||
| 921 | CSS | 8년 전 | 2342 | ||
| 920 | CSS | 8년 전 | 1666 | ||
| 919 | CSS | 8년 전 | 2507 | ||
| 918 | CSS | 8년 전 | 1815 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기