# [[CSS Variables|CSS Variables]] ## πŸ“Œ Brief Summary CSS Variables(μ‚¬μš©μž μ§€μ • 속성, Custom Properties)은 JavaScript 없이도 동적인 μŠ€νƒ€μΌ μ œμ–΄λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” λͺ¨λ˜ CSS의 ν‘œμ€€ κΈ°λŠ₯μž…λ‹ˆλ‹€. κ³Όκ±° Sass와 같은 μ „μ²˜λ¦¬κΈ°(Preprocessor)에 μ˜μ‘΄ν•΄μ•Ό ν–ˆλ˜ λ³€μˆ˜ κΈ°λŠ₯을 CSS μžμ²΄μ— λ‚΄μž₯ν•˜μ—¬, λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œλ₯Ό μ΅œμ†Œν™”ν•˜λ©΄μ„œλ„ 전역적인 ν…Œλ§ˆ(Theming) 관리 및 μƒνƒœ 기반 μŠ€νƒ€μΌλ§μ„ μ‰½κ²Œ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€. 특히 λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ””μžμΈ 토큰을 κ΅¬ν˜„ν•˜κ³  μœ μ§€λ³΄μˆ˜ν•˜κΈ° μ‰¬μš΄ μ•„ν‚€ν…μ²˜λ₯Ό κ΅¬μΆ•ν•˜λŠ” 데 핡심적인 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. ## πŸ“– Core Content * **λͺ¨λ˜ CSS ν‘œμ€€μœΌλ‘œμ˜ 진화와 동적 μŠ€νƒ€μΌλ§:** CSS μ‚¬μš©μž μ§€μ • 속성은 κ³Όκ±° μ „μ²˜λ¦¬κΈ°μ˜ μ „μœ λ¬Όμ΄μ—ˆλ˜ λ³€μˆ˜ κΈ°λŠ₯을 ν‘œμ€€ CSS에 λ„μž…ν•œ μ£Όμš” κ°œμ„  μ‚¬ν•­μž…λ‹ˆλ‹€ [1]. 이λ₯Ό 톡해 JavaScript의 κ°œμž… 없이도 동적인 μŠ€νƒ€μΌλ§μ΄ κ°€λŠ₯ν•΄μ‘ŒμœΌλ©°, μ»¨ν…Œμ΄λ„ˆ 쿼리와 ν•¨κ»˜ 순수 CSS의 λΆ€ν₯(Renaissance)을 μ΄λ„λŠ” 핡심 기술둜 자리 μž‘μ•˜μŠ΅λ‹ˆλ‹€ [2, 3]. * **λ””μžμΈ 토큰(Design Tokens) κ΅¬ν˜„μ˜ 핡심:** μ›Ή ν™˜κ²½μ—μ„œ λ””μžμΈ 토큰을 μ½”λ“œλ‘œ κ΅¬ν˜„ν•  λ•Œ CSS λ³€μˆ˜κ°€ 적극적으둜 ν™œμš©λ©λ‹ˆλ‹€ [4]. 효과적인 λ””μžμΈ μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜κΈ° μœ„ν•΄ CSS λ³€μˆ˜λŠ” 주둜 3단계 계측 ꡬ쑰λ₯Ό κ°€μ§‘λ‹ˆλ‹€ [5]. 1. **κΈ€λ‘œλ²Œ 토큰 (Primitives):** μ»¨ν…μŠ€νŠΈ μ—†λŠ” μ›μ‹œ κ°’ (예: `--blue-500: #3b82f6`) 2. **별칭/μ‹œλ§¨ν‹± 토큰 (Alias):** μ˜λ―Έμ™€ λͺ©μ μ„ λΆ€μ—¬ν•œ κ°’ (예: `--color-primary: var(--blue-500)`) 3. **μ»΄ν¬λ„ŒνŠΈ 토큰:** νŠΉμ • UI μš”μ†Œμ— μ’…μ†λœ κ°’ (예: `--button-bg: var(--color-primary)`) 이와 같이 λ³€μˆ˜λ₯Ό μ°Έμ‘° μ—°κ²°ν•˜λŠ” 방식을 톡해, μ‹œλ§¨ν‹± ν† ν°μ˜ κ°’λ§Œ κ΅μ²΄ν•˜μ—¬ μ†μ‰½κ²Œ ν…Œλ§ˆ λ³€κ²½(닀크 λͺ¨λ“œ λ“±)을 μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [6]. * **μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•œ λͺ¨λ˜ μ•„ν‚€ν…μ²˜μ™€μ˜ κ²°ν•©:** κΈ€λ‘œλ²Œ λ‹¨μœ„μ—μ„œ ν…Œλ§ˆ λ³€μˆ˜λ₯Ό CSS μ‚¬μš©μž μ§€μ • μ†μ„±μœΌλ‘œ κ΄€λ¦¬ν•˜κ³ , κ°œλ³„ μ»΄ν¬λ„ŒνŠΈμ˜ μŠ€νƒ€μΌμ€ CSS Modulesλ₯Ό 톡해 κ²©λ¦¬ν•˜λŠ” ν•˜μ΄λΈŒλ¦¬λ“œ μ•„ν‚€ν…μ²˜κ°€ 효율적인 싀무 μ ‘κ·Όλ²•μœΌλ‘œ ꢌμž₯λ©λ‹ˆλ‹€ [7, 8]. CSS λ³€μˆ˜λŠ” CSS Modules와 κ²°ν•©ν•˜μ—¬ λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œλ₯Ό μ΅œμ†Œν™”ν•˜λ©΄μ„œλ„ 동적인 μŠ€μ½”ν”„ μŠ€νƒ€μΌλ§μ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€ [2]. λ˜ν•œ CSS Modules λ‹¨λ…μœΌλ‘œλŠ” JavaScript의 μƒνƒœ(State) 데이터λ₯Ό μŠ€νƒ€μΌμ— 직접 μ£Όμž…ν•˜κΈ° μ–΄λ ΅λ‹€λŠ” 단점이 μ‘΄μž¬ν•˜λŠ”λ°, CSS μ‚¬μš©μž μ§€μ • 속성을 인라인으둜 μ „λ‹¬ν•¨μœΌλ‘œμ¨ 이 ν•œκ³„λ₯Ό μš°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [9]. λ‚˜μ•„κ°€ Linaria와 같은 Zero-Runtime CSS-in-JS ν™˜κ²½μ—μ„œλŠ” 정적 CSSλ₯Ό λΉŒλ“œ νƒ€μž„μ— μΆ”μΆœν•˜κ³  동적 μƒνƒœ μ œμ–΄λŠ” CSS λ³€μˆ˜μ— μœ„μž„ν•˜μ—¬ λ Œλ”λ§ μ„±λŠ₯을 μ΅œμ ν™”ν•©λ‹ˆλ‹€ [10]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Design Tokens|Design Tokens]], [[CSS Modules|CSS Modules]], [[Zero-Runtime CSS-in-JS|Zero-Runtime CSS-in-JS]] - **Projects/Contexts:** [[Design Systems|Design Systems]], [[Frontend Architecture|Frontend Architecture]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ CSS μ‚¬μš©μž μ§€μ • 속성은 SCSS와 같은 κΈ°μ‘΄ μ „μ²˜λ¦¬κΈ°μ˜ 정적 λ³€μˆ˜λ‚˜, λŸ°νƒ€μž„ λ‹¨κ³„μ—μ„œ μŠ€νƒ€μΌμ„ μ£Όμž…ν•˜λŠ” κΈ°μ‘΄ CSS-in-JSκ°€ μ§€λ‹Œ μ„±λŠ₯ μ €ν•˜ 문제λ₯Ό λ™μ‹œμ— 극볡할 수 μžˆλŠ” 이상적인 λŒ€μ•ˆμœΌλ‘œ ν‰κ°€λ°›μŠ΅λ‹ˆλ‹€ [1, 10]. --- *Last updated: 2026-04-26*