v-bind를 사용하여 CSS에 대한 Vue3 상태

Photo by Jeffrey Leung on Unsplash.



애플리케이션을 더 동적으로 만들기 위해 Vue는 동적 상태를 템플릿 내부의 마크업에 연결할 수 있도록 합니다.

예를 들어 특정 기준이 충족되는 경우에만 요소에 클래스를 적용할 수 있습니다. 그러나 구성 요소 상태가 스타일 태그의 CSS 속성에 직접 적용될 수도 있다는 사실을 알고 계셨습니까?

스타일 태그는 동적 CSS 속성 값을 활성화하는 v-bind()라는 CSS 함수와 호환됩니다. 당면한 주제를 더 자세히 살펴 보겠습니다.

<template>
  <div class="custom-wrapper">
    <Box v-for="i in 35" :key="i" />
  </div>  
</template>

<script setup>
import Box from "./components/Box.vue"
</script>

<style scoped>
.custom-wrapper {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  max-width: 1260px;
  gap: 10px;
}
</style>

App.vue라는 주요 부분의 코드는 위에 나와 있습니다. 아래에서 이 구성 요소의 일부로 Box.vue 파일로 가져오는 App.vue 구성 요소에 대한 코드를 볼 수 있습니다.

<template>
    <div class="custom-box"></div>
</template>

<style scoped>
.custom-box {
    display: inline-flex;
    height: 50px;
    width: 50px;
    background: gray;
}

.is-done {
    background: #ffcd05;
}
</style>


이 구성 요소를 살펴보면 매우 간단합니다. 이 상자를 만들기 위해 클래스div와 일부 스타일이 있는 custom-box만 있으면 됩니다. 이 구성 요소에 몇 가지 동적 CSS 속성 값을 제공하는 방법을 살펴보겠습니다.

먼저 color라는 새 속성을 설정해야 합니다. 이 속성의 기본값은 문자열 값#ffcd05입니다.

<script setup>
defineProps({
    color: {
        type: String,
        default: "#ffcd05"
    },
})
</script>


이제 스타일 태그 내에서 이 속성color을 활용하고 아래와 같이 배경색 속성에 할당할 수 있습니다.

<style scoped>
/* code omitted */
.is-done {
    background: v-bind(color); /* previous value: #ffcd05 */
}
</style>


결과적으로 이제 v-bind() 메서드를 활용하고 color 의 정적 값을 갖는 대신 #ffcd05 속성을 전달할 수 있습니다. 그런 다음 Box 구성 요소는 우리가 속성으로 제공하는 색상을 동적으로 수신합니다.

실제 값이 해시된 사용자 지정 속성으로 어셈블되기 때문에 CSS는 정적으로 유지됩니다. 인라인 스타일은 사용자 지정 속성을 구성 요소의 루트 요소에 적용하는 데 사용되며 소스 값이 변경되면 반응적으로 업데이트됩니다.



결론


v-bind() CSS 함수는 CSS 값을 동적 구성 요소 상태에 연결하기 위한 단일 파일 구성 요소<style> 태그에서 지원됩니다. Vue 구성 요소에서 반응성을 유지하는 재미있고 쉬운 방법입니다.

좋은 웹페이지 즐겨찾기