Skip to content

문양 배경 시스템 ​

lh-ui-plus는 국풍 시적인 문양 배경 시스템을 제공하여, 6가지 프리셋 문양 패턴을 지원하며 CSS 변수 (bg-pattern)나 컴포넌트의 bgPattern prop으로 적용합니다. 라이트/다크 모드 전환은 또 다른 독립 기능이며, 문서 끝의 「라이트/다크 모드」를 참고하세요.

프리셋 문양 ​

시스템에 내장된 6가지 문양:

문양명CSS 변수설명
없음--lh-pattern-none기본값, 문양 없음
柳叶 (버들잎)--lh-pattern-willow가늘고 긴 버들잎, 적당한 밀도
祥云 (상서로운 구름)--lh-pattern-cloud펼쳐진 상서로운 구름, 유려하게 흐름
水波 (물결)--lh-pattern-water미세하게 움직이는 잔물결, 겹겹이 쌓임
雪花 (눈꽃)--lh-pattern-snow육각 눈꽃, 가지가 갈라짐
梅花 (매화)--lh-pattern-plum다섯 잎이 펼쳐지고, 꽃밥이 또렷함
竹叶 (대나무잎)--lh-pattern-bamboo바늘잎 형태의 대나무잎, 어우러짐

사용 방법 ​

ConfigProvider로 전역 구성 ​

vue
<template>
  <LhConfigProvider :theme-vars="{ 'bg-pattern': 'var(--lh-pattern-willow)' }">
    <LhButton>기본</LhButton>
    <LhButton type="primary">주요</LhButton>
  </LhConfigProvider>
</template>

문양 적용 범위 제어 (patternComponents 허용 목록) ​

기본적으로 전역 bg-pattern은 어떤 컴포넌트에도 적용되지 않으며, patternComponents 허용 목록으로 명시적으로 켜야 합니다:

vue
<script setup lang="ts">
import { ref } from 'vue'

const visible = ref(false)
</script>

<template>
  <LhConfigProvider
    :theme-vars="{ 'bg-pattern': 'var(--lh-pattern-cloud)' }"
    :pattern-components="['button', 'input']"
  >
    <!-- 버튼과 입력 상자에 문양이 적용되고, Dialog에는 적용되지 않습니다 -->
    <LhButton>문양 버튼</LhButton>
    <LhInput placeholder="문양 입력 상자" />
    <LhDialog v-model="visible">이 대화상자에는 문양이 없습니다</LhDialog>
  </LhConfigProvider>
</template>

컴포넌트 수준의 문양 구성 ​

컴포넌트 자체가 bgPattern prop이나 themeVars로 설정한 문양은 허용 목록의 제한을 받지 않습니다:

vue
<template>
  <LhButton :bg-pattern="'var(--lh-pattern-bamboo)'">
    이 버튼은 항상 문양이 있습니다
  </LhButton>
</template>

문양 불투명도 사용자 정의 ​

vue
<template>
  <LhConfigProvider
    :theme-vars="{
      'bg-pattern': 'var(--lh-pattern-snow)',
      'bg-pattern-opacity': '0.3',
      'bg-pattern-color': 'rgba(255, 0, 0, 0.2)',
    }"
  >
    <LhButton>사용자 정의 불투명도</LhButton>
  </LhConfigProvider>
</template>

CSS 변수 참고 ​

변수명설명기본값
--lh-bg-pattern문양 배경 URLnone
--lh-bg-pattern-repeat문양 바둑판 배열 모드repeat
--lh-bg-pattern-size문양 크기40px
--lh-bg-pattern-opacity문양 불투명도0.15
--lh-bg-pattern-color문양 색상var(--lh-decoration-color, rgba(184, 134, 11, 0.12))
--lh-bg-pattern-blend문양 혼합 모드soft-light

라이트/다크 모드 ​

문양 시스템 자체는 CSS 변수로 제어되며, 라이트/다크 모드와 서로 영향을 주지 않습니다. 라이트/다크 모드는 useLhTheme 컴포저블로 전환합니다 (data-theme 속성에 기록):

vue
<script setup lang="ts">
import { useLhTheme } from '@lh-ui/vue3'

const { theme, toggleTheme, setTheme } = useLhTheme()

// 라이트/다크 테마 전환
function onToggle() {
  toggleTheme()
}
</script>

<template>
  <div>
    <LhButton @click="onToggle">
      {{ theme === 'dark' ? '라이트로 전환' : '다크로 전환' }}
    </LhButton>
  </div>
</template>

테마 변수 우선순위 ​

컴포넌트가 최종적으로 사용하는 CSS 변수는 다음 우선순위로 병합됩니다 (후자가 전자를 덮어씁니다):

  1. ConfigProvider 전역 themeVars (가장 낮은 우선순위)
  2. ConfigProvider의 컴포넌트별 componentTheme[컴포넌트명]
  3. 컴포넌트 자체의 themeVars prop
  4. 컴포넌트 자체의 bgPattern prop (가장 높은 우선순위)

bg-pattern 변수의 경우 추가로 patternComponents 허용 목록의 제어를 받습니다: 허용 목록에 있는 컴포넌트만 전역으로 구성된 bg-pattern을 적용합니다.

국풍의 아름다움으로 코드의 토대를 세웁니다