MDUI문서
llms.txt 링크 복사llms-full.txt 링크 복사이 페이지를 Markdown 형식으로 보기ChatGPT와 이 페이지 내용에 대해 논의하기프로젝트 전체 문서에 대해 ChatGPT와 논의하기
프리셋 색상
사용자 지정 색상
배경화면에서 색상 추출
배경화면을 선택해 주세요
개발 가이드
AI 보조 개발
스타일
다크 모드 다이내믹 컬러 글 스타일링 디자인 토큰
프레임워크와 통합
컴포넌트
함수
독립 패키지

디자인 토큰

디자인 토큰(Design Tokens)은 디자인 시스템을 관리하기 위한 전략입니다.

디자인 시스템의 모든 재사용 가능한 요소(예: 색상, 글꼴, 간격 등)를 독립적인 변수로 추상화하여 전체 디자인 시스템에서 통합적으로 관리하고 적용할 수 있도록 합니다.

mdui는 전역 CSS 사용자 정의 속성을 사용해 디자인 토큰을 구현합니다. 즉, CSS 사용자 정의 속성만 수정하면 모든 mdui 컴포넌트의 스타일을 전역적으로 수정할 수 있습니다. 동시에 직접 개발하는 스타일의 경우에도 CSS 사용자 정의 속성을 우선적으로 참조하여 스타일이 mdui 컴포넌트의 스타일과 통일성을 유지하고, 다이내믹 컬러를 수정할 때 자신의 스타일도 색상 구성표를 동기적으로 업데이트할 수 있도록 하는 것이 좋습니다.

색상

mdui는 라이트 모드와 다크 모드에 대해 각각 한 세트의 CSS 사용자 정의 속성을 제공합니다. 라이트 모드에서 CSS 사용자 정의 속성 이름은 --mdui-color-{name}-light이며, 여기서 {name}은 색상 이름입니다. 다크 모드에서는 --mdui-color-{name}-dark입니다.

또한, mdui는 --mdui-color-{name}이라는 CSS 사용자 정의 속성 세트를 제공합니다. 이 속성은 라이트 모드에서 --mdui-color-{name}-light를 참조하고 다크 모드에서 --mdui-color-{name}-dark를 참조하므로 현재 라이트 모드/다크 모드에 따라 자동으로 색상이 전환됩니다.

일부 색상의 CSS 사용자 정의 속성을 수정해야 하는 경우 --mdui-color-{name}-light--mdui-color-{name}-dark 속성을 동시에 수정해야 합니다. CSS 사용자 정의 속성을 읽을 때는 --mdui-color-{name} 속성을 직접 사용하면 됩니다.

CSS 사용자 정의 속성의 속성값은 RGB 세 가지 색상을 ,로 구분한 값입니다. 다음 예제는 색상 CSS 사용자 정의 속성의 사용법을 보여줍니다:

/* primary 색상값 수정 */
:root {
  --mdui-color-primary-light: 103, 80, 164;
  --mdui-color-primary-dark: 208, 188, 255;
}

/* foo 요소의 배경색을 primary로 설정 */
.foo {
  background-color: rgb(var(--mdui-color-primary));
}

/* bar 요소의 배경색을 불투명도 0.8인 primary로 설정 */
.bar {
  background-color: rgba(var(--mdui-color-primary), 0.8);
}

완전히 새로운 색상 구성표를 만들어야 하는 경우 setColorScheme 함수를 사용하는 것이 좋습니다. 이 함수는 지정된 하나의 색상값을 기반으로 전체 색상 구성표를 생성합니다.

색상명 CSS 사용자 정의 속성 기본값 예시
Primary --mdui-color-primary-light 103, 80, 164
--mdui-color-primary-dark 208, 188, 255
--mdui-color-primary
Primary container --mdui-color-primary-container-light 234, 221, 255
--mdui-color-primary-container-dark 79, 55, 139
--mdui-color-primary-container
On primary --mdui-color-on-primary-light 255, 255, 255
--mdui-color-on-primary-dark 55, 30, 115
--mdui-color-on-primary
On primary container --mdui-color-on-primary-container-light 33, 0, 94
--mdui-color-on-primary-container-dark 234, 221, 255
--mdui-color-on-primary-container
Inverse primary --mdui-color-inverse-primary-light 208, 188, 255
--mdui-color-inverse-primary-dark 103, 80, 164
--mdui-color-inverse-primary
Secondary --mdui-color-secondary-light 98, 91, 113
--mdui-color-secondary-dark 204, 194, 220
--mdui-color-secondary
Secondary container --mdui-color-secondary-container-light 232, 222, 248
--mdui-color-secondary-container-dark 74, 68, 88
--mdui-color-secondary-container
On secondary --mdui-color-on-secondary-light 255, 255, 255
--mdui-color-on-secondary-dark 51, 45, 65
--mdui-color-on-secondary
On secondary container --mdui-color-on-secondary-container-light 30, 25, 43
--mdui-color-on-secondary-container-dark 232, 222, 248
--mdui-color-on-secondary-container
Tertiary --mdui-color-tertiary-light 125, 82, 96
--mdui-color-tertiary-dark 239, 184, 200
--mdui-color-tertiary
Tertiary container --mdui-color-tertiary-container-light 255, 216, 228
--mdui-color-tertiary-container-dark 99, 59, 72
--mdui-color-tertiary-container
On tertiary --mdui-color-on-tertiary-light 255, 255, 255
--mdui-color-on-tertiary-dark 73, 37, 50
--mdui-color-on-tertiary
On tertiary container --mdui-color-on-tertiary-container-light 55, 11, 30
--mdui-color-on-tertiary-container-dark 255, 216, 228
--mdui-color-on-tertiary-container
Surface --mdui-color-surface-light 254, 247, 255
--mdui-color-surface-dark 20, 18, 24
--mdui-color-surface
Surface dim --mdui-color-surface-dim-light 222, 216, 225
--mdui-color-surface-dim-dark 20, 18, 24
--mdui-color-surface-dim
Surface bright --mdui-color-surface-bright-light 254, 247, 255
--mdui-color-surface-bright-dark 59, 56, 62
--mdui-color-surface-bright
Surface container lowest --mdui-color-surface-container-lowest-light 255, 255, 255
--mdui-color-surface-container-lowest-dark 15, 13, 19
--mdui-color-surface-container-lowest
Surface container low --mdui-color-surface-container-low-light 247, 242, 250
--mdui-color-surface-container-low-dark 29, 27, 32
--mdui-color-surface-container-low
Surface container --mdui-color-surface-container-light 243, 237, 247
--mdui-color-surface-container-dark 33, 31, 38
--mdui-color-surface-container
Surface container high --mdui-color-surface-container-high-light 236, 230, 240
--mdui-color-surface-container-high-dark 43, 41, 48
--mdui-color-surface-container-high
Surface container highest --mdui-color-surface-container-highest-light 230, 224, 233
--mdui-color-surface-container-highest-dark 54, 52, 59
--mdui-color-surface-container-highest
Surface variant --mdui-color-surface-variant-light 231, 224, 236
--mdui-color-surface-variant-dark 73, 69, 79
--mdui-color-surface-variant
On surface --mdui-color-on-surface-light 28, 27, 31
--mdui-color-on-surface-dark 230, 225, 229
--mdui-color-on-surface
On surface variant --mdui-color-on-surface-variant-light 73, 69, 78
--mdui-color-on-surface-variant-dark 202, 196, 208
--mdui-color-on-surface-variant
Inverse surface --mdui-color-inverse-surface-light 49, 48, 51
--mdui-color-inverse-surface-dark 230, 225, 229
--mdui-color-inverse-surface
Inverse on surface --mdui-color-inverse-on-surface-light 244, 239, 244
--mdui-color-inverse-on-surface-dark 49, 48, 51
--mdui-color-inverse-on-surface
Background --mdui-color-background-light 254, 247, 255
--mdui-color-background-dark 20, 18, 24
--mdui-color-background
On background --mdui-color-on-background-light 28, 27, 31
--mdui-color-on-background-dark 230, 225, 229
--mdui-color-on-background
Error --mdui-color-error-light 179, 38, 30
--mdui-color-error-dark 242, 184, 181
--mdui-color-error
Error container --mdui-color-error-container-light 249, 222, 220
--mdui-color-error-container-dark 140, 29, 24
--mdui-color-error-container
On error --mdui-color-on-error-light 255, 255, 255
--mdui-color-on-error-dark 96, 20, 16
--mdui-color-on-error
On error container --mdui-color-on-error-container-light 65, 14, 11
--mdui-color-on-error-container-dark 249, 222, 220
--mdui-color-on-error-container
Outline --mdui-color-outline-light 121, 116, 126
--mdui-color-outline-dark 147, 143, 153
--mdui-color-outline
Outline variant --mdui-color-outline-variant-light 196, 199, 197
--mdui-color-outline-variant-dark 68, 71, 70
--mdui-color-outline-variant
Shadow --mdui-color-shadow-light 0, 0, 0
--mdui-color-shadow-dark 0, 0, 0
--mdui-color-shadow
Surface tint --mdui-color-surface-tint-color-light 103, 80, 164
--mdui-color-surface-tint-color-dark 208, 188, 255
--mdui-color-surface-tint-color
Scrim --mdui-color-scrim-light 0, 0, 0
--mdui-color-scrim-dark 0, 0, 0
--mdui-color-scrim

둥근 모서리

mdui는 7가지 크기의 둥근 모서리를 제공합니다. 다음은 이러한 둥근 모서리의 CSS 사용자 정의 속성을 사용하는 예시입니다:

/* extra-small의 둥근 모서리 크기 수정 */
:root {
  --mdui-shape-corner-extra-small: 0.3rem;
}

/* foo 요소의 둥근 모서리를 extra-small로 설정 */
.foo {
  border-radius: var(--mdui-shape-corner-extra-small);
}
CSS 사용자 정의 속성 기본값 예시
--mdui-shape-corner-none 0
--mdui-shape-corner-extra-small 0.25rem
--mdui-shape-corner-small 0.5rem
--mdui-shape-corner-medium 0.75rem
--mdui-shape-corner-large 1rem
--mdui-shape-corner-extra-large 1.75rem
--mdui-shape-corner-full 1000rem

타이포그래피

mdui는 Display large, Display medium, Display small, Headline large, Headline medium, Headline small, Title large, Title medium, Title small, Label large, Label medium, Label small, Body large, Body medium, Body small의 15가지 텍스트 스타일을 제공합니다.

사용 예시는 다음과 같습니다:

/* Body large 텍스트 스타일 수정 */
:root {
  --mdui-typescale-body-large-line-height: 1.6rem;
  --mdui-typescale-body-large-size: 1.2rem;
  --mdui-typescale-body-large-tracking: 0.01rem;
  --mdui-typescale-body-large-weight: 400;
}

/* foo 요소의 텍스트 스타일을 Body large로 설정 */
.foo {
  line-height: var(--mdui-typescale-body-large-line-height);
  font-size: var(--mdui-typescale-body-large-size);
  letter-spacing: var(--mdui-typescale-body-large-tracking);
  font-weight: var(--mdui-typescale-body-large-weight);
}
CSS 사용자 정의 속성 기본값 예시
--mdui-typescale-display-large-line-height 4rem
Display large
--mdui-typescale-display-large-size 3.5625rem
--mdui-typescale-display-large-tracking 0
--mdui-typescale-display-large-weight 400
--mdui-typescale-display-medium-line-height 3.25rem
Display medium
--mdui-typescale-display-medium-size 2.8125rem
--mdui-typescale-display-medium-tracking 0
--mdui-typescale-display-medium-weight 400
--mdui-typescale-display-small-line-height 2.75rem
Display small
--mdui-typescale-display-small-size 2.25rem
--mdui-typescale-display-small-tracking 0
--mdui-typescale-display-small-weight 400
--mdui-typescale-headline-large-line-height 2.5rem
Headline large
--mdui-typescale-headline-large-size 2rem
--mdui-typescale-headline-large-tracking 0
--mdui-typescale-headline-large-weight 400
--mdui-typescale-headline-medium-line-height 2.25rem
Headline medium
--mdui-typescale-headline-medium-size 1.75rem
--mdui-typescale-headline-medium-tracking 0
--mdui-typescale-headline-medium-weight 400
--mdui-typescale-headline-small-line-height 2rem
Headline small
--mdui-typescale-headline-small-size 1.5rem
--mdui-typescale-headline-small-tracking 0
--mdui-typescale-headline-small-weight 400
--mdui-typescale-title-large-line-height 1.75rem
Title large
--mdui-typescale-title-large-size 1.375rem
--mdui-typescale-title-large-tracking 0
--mdui-typescale-title-large-weight 400
--mdui-typescale-title-medium-line-height 1.5rem
Title medium
--mdui-typescale-title-medium-size 1rem
--mdui-typescale-title-medium-tracking 0.009375rem
--mdui-typescale-title-medium-weight 500
--mdui-typescale-title-small-line-height 1.25rem
Title small
--mdui-typescale-title-small-size 0.875rem
--mdui-typescale-title-small-tracking 0.00625rem
--mdui-typescale-title-small-weight 500
--mdui-typescale-label-large-line-height 1.25rem
Label large
--mdui-typescale-label-large-size 0.875rem
--mdui-typescale-label-large-tracking 0.00625rem
--mdui-typescale-label-large-weight 500
--mdui-typescale-label-medium-line-height 1rem
Label medium
--mdui-typescale-label-medium-size 0.75rem
--mdui-typescale-label-medium-tracking 0.03125rem
--mdui-typescale-label-medium-weight 500
--mdui-typescale-label-small-line-height 0.375rem
Label small
--mdui-typescale-label-small-size 0.6875rem
--mdui-typescale-label-small-tracking 0.03125rem
--mdui-typescale-label-small-weight 500
--mdui-typescale-body-large-line-height 1.5rem
Body large
--mdui-typescale-body-large-size 1rem
--mdui-typescale-body-large-tracking 0.009375rem
--mdui-typescale-body-large-weight 400
--mdui-typescale-body-medium-line-height 1.25rem
Body medium
--mdui-typescale-body-medium-size 0.875rem
--mdui-typescale-body-medium-tracking 0.015625rem
--mdui-typescale-body-medium-weight 400
--mdui-typescale-body-small-line-height 1rem
Body small
--mdui-typescale-body-small-size 0.75rem
--mdui-typescale-body-small-tracking 0.025rem
--mdui-typescale-body-small-weight 400

상태 레이어 불투명도

일부 mdui 컴포넌트는 상호작용 시 그 위에 반투명 오버레이를 추가합니다. 예를 들어 <mdui-button> 컴포넌트는 마우스 호버, 포커스, 클릭 또는 드래그 시 반투명 오버레이가 나타납니다. CSS 사용자 정의 속성을 수정하여 이러한 오버레이의 불투명도를 조정할 수 있습니다.

사용 예시는 다음과 같습니다:

/* 상태 레이어 불투명도 수정 */
:root {
  --mdui-state-layer-hover: 0.08;
  --mdui-state-layer-focus: 0.12;
  --mdui-state-layer-pressed: 0.12;
  --mdui-state-layer-dragged: 0.16;
}
CSS 사용자 정의 속성 기본값 예시
--mdui-state-layer-hover 0.08
--mdui-state-layer-focus 0.12
--mdui-state-layer-pressed 0.12
--mdui-state-layer-dragged 0.16

그림자 (음영)

일부 mdui 컴포넌트는 페이지에서의 입체감을 시뮬레이션하기 위해 그림자 효과를 가집니다. CSS 사용자 정의 속성을 수정하여 컴포넌트의 그림자 효과를 조정할 수 있습니다.

사용 예시는 다음과 같습니다:

/* level1 레벨의 그림자 수정 */
:root {
  --mdui-elevation-level1:
    0 0.5px 1.5px 0 rgba(var(--mdui-color-shadow), 19%),
    0 0 1px 0 rgba(var(--mdui-color-shadow), 3.9%);
}

/* foo 요소의 그림자를 level1로 설정 */
.foo {
  box-shadow: var(--mdui-elevation-level1);
}
CSS 사용자 정의 속성 기본값 예시
--mdui-elevation-level0 none
--mdui-elevation-level1 0 0.5px 1.5px 0 rgba(var(--mdui-color-shadow), 19%), 0 0 1px 0 rgba(var(--mdui-color-shadow), 3.9%)
--mdui-elevation-level2 0 0.85px 3px 0 rgba(var(--mdui-color-shadow), 19%), 0 0.25px 1px 0 rgba(var(--mdui-color-shadow), 3.9%)
--mdui-elevation-level3 0 1.25px 5px 0 rgba(var(--mdui-color-shadow), 19%), 0 0.3333px 1.5px 0 rgba(var(--mdui-color-shadow), 3.9%)
--mdui-elevation-level4 0 1.85px 6.25px 0 rgba(var(--mdui-color-shadow), 19%), 0 0.5px 1.75px 0 rgba(var(--mdui-color-shadow), 3.9%)
--mdui-elevation-level5 0 2.75px 9px 0 rgba(var(--mdui-color-shadow), 19%), 0 0.25px 3px 0 rgba(var(--mdui-color-shadow), 3.9%)

애니메이션

mdui 컴포넌트의 애니메이션 타이밍 함수와 지속 시간은 CSS 사용자 정의 속성으로 구성할 수 있습니다.

사용 예시는 다음과 같습니다:

/* standard 타이밍 함수 및 short1 지속 시간 수정 */
:root {
  --mdui-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
  --mdui-motion-duration-short1: 40ms;
}

/* foo 요소의 전환 효과를 standard 타이밍 함수와 short1 지속 시간으로 설정 */
.foo {
  transition: all var(--mdui-motion-duration-short1)
    var(--mdui-motion-easing-standard);
}
타입 CSS 사용자 정의 속성 기본값
타이밍 함수 --mdui-motion-easing-linear cubic-bezier(0, 0, 1, 1)
--mdui-motion-easing-standard cubic-bezier(0.2, 0, 0, 1)
--mdui-motion-easing-standard-accelerate cubic-bezier(0.3, 0, 1, 1)
--mdui-motion-easing-standard-decelerate cubic-bezier(0, 0, 0, 1)
--mdui-motion-easing-emphasized var(--mdui-motion-easing-standard)
--mdui-motion-easing-emphasized-accelerate cubic-bezier(0.3, 0, 0.8, 0.15)
--mdui-motion-easing-emphasized-decelerate cubic-bezier(0.05, 0.7, 0.1, 1)
지속 시간 --mdui-motion-duration-short1 50ms
--mdui-motion-duration-short2 100ms
--mdui-motion-duration-short3 150ms
--mdui-motion-duration-short4 200ms
--mdui-motion-duration-medium1 250ms
--mdui-motion-duration-medium2 300ms
--mdui-motion-duration-medium3 350ms
--mdui-motion-duration-medium4 400ms
--mdui-motion-duration-long1 450ms
--mdui-motion-duration-long2 500ms
--mdui-motion-duration-long3 550ms
--mdui-motion-duration-long4 600ms
--mdui-motion-duration-extra-long1 700ms
--mdui-motion-duration-extra-long2 800ms
--mdui-motion-duration-extra-long3 900ms
--mdui-motion-duration-extra-long4 1000ms

반응형 브레이크포인트

mdui는 일련의 반응형 브레이크포인트를 제공하며, 이러한 브레이크포인트는 CSS 사용자 정의 속성으로 구성할 수 있습니다. 사용 예시는 다음과 같습니다:

/* sm 브레이크포인트 값 수정 */
:root {
  --mdui-breakpoint-sm: 560px;
}

이러한 CSS 사용자 정의 속성은 CSS 미디어 쿼리 내에서 사용할 수 없다는 점에 유의하세요. 다음은 잘못된 예시입니다:

/* 잘못된 사용법. 미디어 쿼리에서는 CSS 사용자 정의 속성을 사용할 수 없습니다 */
@media (min-width: var(--mdui-breakpoint-sm)) {
}

JavaScript에서 브레이크포인트 판단이 필요한 경우 breakpoint 함수를 사용합니다.

CSS 사용자 정의 속성 기본값
--mdui-breakpoint-xs 0px
--mdui-breakpoint-sm 600px
--mdui-breakpoint-md 840px
--mdui-breakpoint-lg 1080px
--mdui-breakpoint-xl 1440px
--mdui-breakpoint-xxl 1920px
이 페이지의 목차