Web Development/vue

[콜럼Vue스] 동적 스타일 바인딩

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

동적 스타일 바인딩이란 Vue.js에서 데이터 상태에 따라 HTML 요소에 동적으로 CSS 스타일을 적용하는 방법임. 동적 스타일 바인딩을 사용하면 사용자 입력, 이벤트 발생 등에 따라 실시간으로 스타일을 변경할 수 있음. Vue.js에서는 v-bind:style 또는 :style 디렉티브를 사용해 인라인 스타일을 바인딩할 수 있음


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>06-10 동적 스타일 바인딩</title>
  <style>
    .score { border: solid 1px black; }
    .warning { background-color: skyblue; color: purple; }
    .warnimage { width: 18px; height: 18px; top: 5px; position: relative; }
  </style>
</head>
<body>
  <div id="app">
    <p>1부터 100까지만 입력 가능합니다.</p>
    <div>
      점수: <input type="text" class="score" :class="info" v-model.number="score" />
      <img src="https://contactsvc.bmaster.kro.kr/img/error.png" 
           class="warnimage" 
           v-if="info.warning" 
           title="1부터 100까지만 입력하세요." />
    </div>
  </div>

  <script src="https://unpkg.com/vue@next"></script>
  <script type="text/javascript">
    var vm = Vue.createApp({
      data() {
        return {
          score: 50 // 초기 점수 값
        };
      },
      computed: {
        info() {
          return {
            warning: this.score < 1 || this.score > 100 // 점수가 1 ~ 100 사이인지 확인
          };
        }
      }
    }).mount("#app");
  </script>
</body>
</html>

코드 설명

  1. HTML 구조:
    • 점수를 입력할 수 있는 <input> 요소가 있음. 이 요소에는 기본적으로 score 클래스가 적용됨.
    • 점수가 1부터 100 사이가 아니면 경고 이미지와 함께 경고 스타일이 적용됨.
  2. Vue.js 인스턴스:
    • data(): 기본 점수(score) 값을 관리함. 초기 값은 50으로 설정되어 있음.
    • computed: 계산된 속성 **info()**에서 경고 조건을 계산하여 반환함. 점수가 1보다 작거나 100보다 크면 warning: true로 설정되어 경고 스타일이 적용됨.
  3. 동적 스타일 바인딩:
    • v-bind:class 또는 **:class**를 사용하여, info.warning 값에 따라 경고 스타일을 적용함.
    • v-if="info.warning": 점수가 올바르지 않으면 경고 이미지를 보여줌.

동적 스타일 바인딩 활용

  • 사용자 입력이나 이벤트에 따라 실시간으로 스타일이 변경되므로 인터랙티브한 사용자 경험을 제공할 수 있음.
  • **계산된 속성(Computed Property)**를 사용하여 복잡한 조건에 따라 자동으로 스타일을 업데이트할 수 있음.
  • 동적 스타일 바인딩은 폼 유효성 검사, 동적 테마 변경, 상태에 따른 UI 업데이트 등 다양한 상황에서 유용하게 사용될 수 있음.
728x90
반응형