Spacing
Spacing (간격)
간격 스케일(space scale)과 스케일링 옵션의 개요예요.
출처: 문서
간격 스케일 (Space scale)
간격 값은 9단계 스케일에서 파생되며, margin과 padding 같은 props에 사용돼요. 이 props는 아래 스케일의 단계에 대응하는 "1"부터 "9"까지의 숫자 문자열을 받아요.
1
2
3
4
5
6
7
8
9
| Step | Base value |
|---|---|
| 1 | 4px |
| 2 | 8px |
| 3 | 12px |
| 4 | 16px |
| 5 | 24px |
| 6 | 32px |
| 7 | 40px |
| 8 | 48px |
| 9 | 64px |
Space scale 토큰
Space scale 토큰은 CSS 변수로도 접근할 수 있어요. 이 토큰들을 사용해 커스텀 컴포넌트를 스타일링하면 테마의 나머지 부분과 일관된 모습을 유지할 수 있어요.
/* Space scale */
var(--space-1);
var(--space-2);
var(--space-3);
var(--space-4);
var(--space-5);
var(--space-6);
var(--space-7);
var(--space-8);
var(--space-9);
스케일링 (Scaling)
레이아웃에 영향을 주는 값(간격, 폰트 크기, 줄 높이)은 Theme에 정의된 scaling 값에 따라 서로 상대적으로 스케일돼요. 이 설정으로 앱 전체에서 UI 밀도를 균일하게 조절할 수 있어요.
<Theme scaling="100%">
<Card variant="surface">
<Flex gap="3" align="center">
<Avatar size="3" src={person.image} fallback={person.name} />
<Box>
<Text as="div" size="2" weight="bold">
{person.name}
</Text>
<Text as="div" size="2" color="gray">
Approved invoice <Link>#3461</Link>
</Text>
</Box>
</Flex>
</Card>
</Theme>
90%
Danilo Sousa
Approved invoice
95%
Danilo Sousa
Approved invoice
100%
Danilo Sousa
Approved invoice
105%
Danilo Sousa
Approved invoice
110%
Danilo Sousa
Approved invoice
스케일링 계수 (Scaling factor)
스케일링 계수 토큰은 --scaling CSS 변수로 접근할 수 있어요. 앱에서 다른 스케일링 계수를 사용해야 한다면, 이 토큰을 커스텀 스타일에서 사용해 테마의 나머지 부분과 일관되게 만들 수 있어요.
.MyCustomComponent {
width: calc(200px * var(--scaling));
}
더 알아보기 (Learn more)
- 간격은 4px 배수 기반의 9단계(
--space-1~--space-9)이고,scaling으로 전체 밀도를 조절할 수 있어요.