수련  ›  기초 — 예쁜 사이트로  ›  CH1 / 7
기초 — 예쁜 사이트로 ⏱ 10분 +130 XP

디자인 토큰 이해

색, 타이포, 간격을 흩어진 값이 아니라 이름 붙은 시스템으로 다루는 법을 배웁니다.

🧑‍🏫
멘토 한마디
여기까지 온 것만으로도 이미 어제의 나보다 한 뼘 자랐어요. 끝까지 함께 가요! 🌱

입문 단계에서는 색이나 글자 크기를 필요할 때마다 즉석에서 정했습니다. 그러다 보면 같은 회색인데 어떤 곳은 #888, 다른 곳은 #8a8a8a처럼 미묘하게 어긋나고, 화면이 묘하게 지저분해 보입니다. 이 챕터에서는 그 혼란을 정리하는 핵심 개념인 디자인 토큰(design token)을 배웁니다. 토큰이란 디자인에서 반복되는 결정을 이름 붙여 한곳에 모아 둔 값입니다. 마치 요리에서 양념을 매번 눈대중으로 넣는 대신, 미리 계량한 통에 담아 두고 꺼내 쓰는 것과 같습니다.

왜 값에 이름을 붙이는가

#a78bfa를 사이트 곳곳에 그대로 적어 두면, 브랜드 색을 바꾸고 싶을 때 모든 파일을 뒤져 일일이 고쳐야 합니다. 대신 --color-primary라는 이름을 만들고 그 안에 색을 넣으면, 이름은 그대로 두고 값 하나만 바꿔도 사이트 전체가 따라 바뀝니다. 이름은 '무엇에 쓰는 색인가'라는 의도를 담고, 값은 '실제로 어떤 색인가'를 담습니다. 이 둘을 분리하는 것이 토큰의 본질입니다.

:root {
  --color-primary: #a78bfa;
  --color-text: #1f2937;
  --color-muted: #6b7280;
  --color-bg: #ffffff;
}

.button {
  background: var(--color-primary);
  color: var(--color-bg);
}
CSS에서 :root는 문서 전체의 최상위 요소를 가리킵니다. 여기에 --이름 형태의 커스텀 속성을 선언하면, 모든 자식 요소가 var(--이름)으로 그 값을 꺼내 쓸 수 있습니다.

세 가지 핵심 토큰 묶음

토큰은 보통 세 영역으로 나눕니다. 처음에는 이 세 가지만 정리해도 화면이 눈에 띄게 단정해집니다.

  • 색(color) — 주조색, 본문 텍스트, 흐린 보조 텍스트, 배경, 경계선처럼 역할별로 이름을 붙입니다.
  • 타이포(typography) — 글자 크기와 굵기, 줄 간격을 단계로 정리합니다.
  • 간격(spacing) — 여백과 요소 사이 거리를 일정한 배수로 통일합니다.

간격은 배수로 묶는다

여백을 5px, 7px, 13px처럼 제멋대로 쓰면 리듬이 깨집니다. 보통 4px를 기준 단위로 삼아 그 배수(4, 8, 12, 16, 24, 32)만 사용합니다. 이렇게 정해진 후보 안에서만 고르면 선택이 빨라지고 결과가 일관됩니다. 이런 '정해진 후보 묶음'을 스케일(scale)이라고 부릅니다.

토큰쓰임
--space-28px아이콘과 글자 사이
--space-416px카드 안쪽 여백
--space-624px섹션 사이 간격

타이포 스케일

글자 크기도 마찬가지로 단계를 정합니다. 예를 들어 본문 16px를 기준으로 제목은 24px, 큰 제목은 32px처럼 또렷이 구분되는 몇 단계만 둡니다. 단계가 너무 촘촘하면 위계가 흐려지므로, 차이가 분명한 4~5단계면 충분합니다.

토큰은 디자이너의 취향을 코드로 옮긴 약속입니다. 약속이 한곳에 모여 있으면, 나중에 누구든 그 약속만 바꿔 사이트 전체의 인상을 통째로 바꿀 수 있습니다.
토큰을 만들었다면 반드시 그 토큰만 사용해야 의미가 있습니다. 일부는 var(--color-primary)를 쓰고 일부는 #a78bfa를 직접 적으면, 나중에 값을 바꿀 때 직접 적은 곳이 따라오지 않아 오히려 더 큰 혼란이 생깁니다.
AD

이해도 퀴즈 (10문항)

정답 6개 이상 → +130 XP

배운 내용을 정확히 점검해 보세요. 10문항 중 6문항 이상 맞히면 챕터가 완료되고 경험치(XP)가 적립됩니다. 난이도는 문항마다 ··으로 섞여 있어요.

하 쉬움중 보통상 어려움
Q1.디자인 토큰(design token)을 가장 잘 설명한 것은?
Q2.디자인 토큰을 사용하는 가장 큰 이유는?
Q3.CSS에서 :root에 선언한 --color-primary 값을 실제로 꺼내 쓰는 방법은?
Q4.토큰에서 '이름'과 '값'이 각각 담는 것은?
Q5.CSS에서 :root가 가리키는 것은?
Q6.이 챕터가 정리하는 디자인 토큰의 세 핵심 묶음은?
Q7.간격(spacing) 토큰을 4px의 배수(4, 8, 12, 16...)로 통일하면 좋은 점은?
Q8.4, 8, 12, 16처럼 '정해진 후보 묶음'을 부르는 말은?
Q9.타이포 스케일은 보통 몇 단계 정도면 충분하다고 했나요?
Q10.토큰을 만든 뒤 일부는 토큰을, 일부는 색 값을 직접 적으면 생기는 문제는?

📚 함께 보면 좋은 정보글

정보글
Tailwind 30분 압축
정보글
저작권 걱정 없는 이미지 구하기
AD