Web Development/vue

[콜럼Vue스] CSS 클래스 바인딩

쟤리 2024. 10. 10. 08:28
728x90
반응형

Vue.js에서 CSS 클래스를 바인딩하는 방법은 두 가지가 있음:

  1. CSS 클래스명 문자열을 바인딩하는 방법
  2. true/false 값을 가진 객체를 바인딩하는 방법

CSS 클래스명 문자열을 바인딩하는 방법

이 방법은 데이터나 속성에 CSS 클래스명을 문자열로 할당하여 v-bind:class 혹은 **:class**로 바인딩하는 방식임. 데이터에서 CSS 클래스명을 문자열로 설정한 후, 이를 요소에 바인딩할 수 있음.

<body>
  <div id="app">
    <button :class="[ myColor, myLayout ]">테스트 버튼</button>
  </div>
  
  <script src="https://unpkg.com/vue"></script>
  <script type="text/javascript">
    var vm = Vue.createApp({
      data() {
        return {
          myColor: "buttonColor",
          myLayout: "buttonLayout"
        }
      }
    }).mount("#app");
  </script>
</body>

 

  • 이 방식에서 클래스명 문자열을 배열로 바인딩하여 여러 클래스를 동시에 적용할 수 있음.
  • 3항 연산자를 이용해 특정 조건에 따라 클래스를 동적으로 적용할 수도 있음.
<input type="checkbox" v-model="isMyLayout"> 레이아웃 적용 여부
<button :class="[myColor, isMyLayout ? myLayout : '']">테스트 버튼</button>

 

  • isMyLayout의 값에 따라 myLayout 클래스의 적용 여부가 결정됨.
  • 3항 연산자 a ? b : c의 형태로 조건에 따라 클래스를 적용할 수 있음.

true/false 값을 가진 객체를 바인딩하는 방법

이 방법은 클래스명을 객체의 속성명으로 사용하고, true/false 값에 따라 해당 클래스가 적용되도록 바인딩하는 방식임. 여러 개의 클래스를 동적으로 적용할 때 유용함.

<button :class="{ bColor: setColor, bLayout: setAlign, bBorder: setBorder }">버튼1</button>
<input type="checkbox" v-model="setColor"> 색상
<input type="checkbox" v-model="setAlign"> 정렬, 크기
<input type="checkbox" v-model="setBorder"> 테두리선

 

  • setColor, setAlign, **setBorder**의 값이 true일 때 각각 bColor, bLayout, bBorder 클래스가 적용됨.
  • **객체 표기법(Object Literal)**을 사용하여 클래스를 바인딩함.

객체를 미리 생성하여 바인딩하는 방법

객체를 매번 즉석에서 생성하지 않고, 데이터 초기화 시 미리 객체를 생성해두면 코드가 더 간결하고 관리하기 쉬움.

<button :class="myStyle">버튼1</button>
<input type="checkbox" v-model="myStyle.bColor"> 색상
<input type="checkbox" v-model="myStyle.bLayout"> 정렬, 크기
<input type="checkbox" v-model="myStyle.bBorder"> 테두리선

 


정적 클래스와 동적 클래스 함께 사용

Vue에서는 정적 클래스와 동적 클래스를 함께 사용할 수 있음. 예를 들어, 클래스 속성을 하드코딩한 상태에서 동적으로 클래스의 변경을 추가할 수 있음.

<button class="staticBorder" :class="myColor">테스트 버튼</button>

**class="staticBorder"**는 항상 적용되고, **:class="myColor"**로 동적으로 클래스를 추가할 수 있음.

 


  1. CSS 클래스명 문자열 바인딩: 배열 형태로 클래스를 바인딩하거나 3항 연산자와 조합하여 조건에 따라 동적으로 클래스를 적용함.
  2. true/false 객체 바인딩: 객체의 속성명을 클래스명으로 사용하여, 속성 값이 true일 때만 해당 클래스를 적용함.
  3. 객체를 미리 생성하여 바인딩: 객체를 미리 초기화하여 사용하면 유지보수 및 코드 가독성이 향상됨.
  4. 정적 클래스와 동적 클래스 혼용: 정적 클래스를 항상 적용하면서, 동적으로 클래스를 추가할 수 있음.

이러한 바인딩 방법을 통해 Vue.js에서 더 동적이고 관리하기 쉬운 CSS 클래스 적용이 가능해짐.

728x90
반응형