# [[CSS Architecture]] ## πŸ“Œ Brief Summary CSS μ•„ν‚€ν…μ²˜λŠ” 과거의 λ‹¨μˆœν•œ μ‹œκ°μ  μž₯식 κ³„μΈ΅μ—μ„œ λ²—μ–΄λ‚˜, λŒ€κ·œλͺ¨ ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈμ˜ ν™•μž₯μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ 보μž₯ν•˜κΈ° μœ„ν•œ μ—„κ²©ν•œ μ—”μ§€λ‹ˆμ–΄λ§ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€ [1]. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ³΅μž‘ν•΄μ§μ— 따라 ν”νžˆ λ°œμƒν•˜λŠ” μ „μ—­(Global) λ„€μž„μŠ€νŽ˜μ΄μŠ€ 좩돌과 'CSS λΉ„λŒ€ν™”(Bloat)' 같은 기술적 뢀채λ₯Ό λ°©μ§€ν•˜λŠ” 것을 핡심 λͺ©μ μœΌλ‘œ ν•©λ‹ˆλ‹€ [1, 2]. ν˜„λŒ€μ˜ CSS μ„€κ³„λŠ” BEMκ³Ό 같은 μˆ˜λ™μ μΈ 넀이밍 κ·œμΉ™μ—μ„œ μΆœλ°œν•˜μ—¬, CSS Modules, Tailwind CSS와 같이 μŠ€μ½”ν”„(Scope)λ₯Ό κ²©λ¦¬ν•˜κ³  λͺ¨λ“ˆν™”λ₯Ό κ°•μ œν•˜λŠ” μžλ™ν™” 및 μœ ν‹Έλ¦¬ν‹° 기반 μ ‘κ·Όλ²•μœΌλ‘œ μ§„ν™”ν–ˆμŠ΅λ‹ˆλ‹€ [3-5]. ## πŸ“– Core Content ν˜„λŒ€μ˜ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ—μ„œ CSS μ„€κ³„λŠ” "예쁘게" λ§Œλ“œλŠ” 것을 λ„˜μ–΄, μ—¬λŸ¬ νŒ€μ΄ ν˜‘μ—…ν•˜κ³  ν”„λ‘œμ νŠΈκ°€ 컀져도 μ•ˆμ •μ μœΌλ‘œ μ½”λ“œλ₯Ό μœ μ§€λ³΄μˆ˜ν•  수 μžˆλŠ” ꡬ쑰λ₯Ό κ΅¬μΆ•ν•˜λŠ” 데 쀑점을 λ‘‘λ‹ˆλ‹€ [1, 2]. 이λ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ μ‹€λ¬΄μ—μ„œλŠ” λ‹€μŒκ³Ό 같은 ꡬ쑰 섀계 방식과 μ „λž΅μ„ ν™œμš©ν•©λ‹ˆλ‹€. * **BEM (Block Element Modifier) ꡬ쑰:** BEM은 UIλ₯Ό 독립적이고 μž¬μ‚¬μš© κ°€λŠ₯ν•œ '블둝(Block)', 블둝에 μ’…μ†λœ 'μš”μ†Œ(Element)', 그리고 μƒνƒœλ‚˜ λͺ¨μ–‘을 λ³€κ²½ν•˜λŠ” 'μˆ˜μ‹μ–΄(Modifier)'둜 λ‚˜λˆ„μ–΄ λͺ…λͺ…ν•˜λŠ” CSS λ°©λ²•λ‘ μž…λ‹ˆλ‹€ [3, 6-8]. μ„ νƒμžλ₯Ό 평면적(Flat)으둜 μœ μ§€ν•˜μ—¬ κΉŠμ€ DOM μ€‘μ²©μœΌλ‘œ μΈν•œ μ„±λŠ₯ μ €ν•˜λ₯Ό 막고, μŠ€νƒ€μΌμ΄ μ–΄λŠ μ»΄ν¬λ„ŒνŠΈμ— μ†ν•˜λŠ”μ§€ λͺ…ν™•ν•˜κ²Œ μ•Œλ €μ€λ‹ˆλ‹€ [9, 10]. ν•˜μ§€λ§Œ κ·œμΉ™μ„ μ‚¬λžŒμ΄ 직접 μ§€μΌœμ•Ό ν•˜λ―€λ‘œ ν”„λ‘œμ νŠΈκ°€ 컀질수둝 μ‹€μˆ˜κ°€ λ°œμƒν•˜κΈ° 쉽고, μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ 제거(Dead code elimination)ν•˜κΈ° μ–΄λ ΅λ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€ [11]. * **CSS Modulesλ₯Ό ν†΅ν•œ μžλ™ν™”λœ μΊ‘μŠν™”:** CSS ModulesλŠ” 일반적인 CSS(λ˜λŠ” SCSS) 문법을 μž‘μ„±ν•˜λ˜, λΉŒλ“œ μ‹œμ μ— κ³ μœ ν•œ ν•΄μ‹œκ°’μ΄ ν¬ν•¨λœ 클래슀 이름을 μžλ™μœΌλ‘œ μƒμ„±ν•˜μ—¬ 둜컬 μŠ€μ½”ν”„(Local Scoping)λ₯Ό 보μž₯ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€ [12-14]. BEM이 κ°€μ§„ μˆ˜λ™ λ„€μ΄λ°μ˜ ν•œκ³„λ₯Ό ν•΄κ²°ν•˜κ³  μ»΄ν¬λ„ŒνŠΈ κ°„ μŠ€νƒ€μΌ μΆ©λŒμ„ μ›μ²œ μ°¨λ‹¨ν•˜λ―€λ‘œ, λ³΅μž‘ν•œ μ• λ‹ˆλ©”μ΄μ…˜μ΄λ‚˜ μ„Έλ°€ν•œ CSS μ œμ–΄κ°€ ν•„μš”ν•œ ν”„λ‘œμ νŠΈμ—μ„œ μ„ ν˜Έλ©λ‹ˆλ‹€ [15-17]. * **Tailwind CSS와 μœ ν‹Έλ¦¬ν‹° μš°μ„ (Utility-First) μ „λž΅:** TailwindλŠ” `flex`, `pt-4`, `text-gray-500`κ³Ό 같은 단일 λͺ©μ μ˜ μž‘μ€ μœ ν‹Έλ¦¬ν‹° 클래슀λ₯Ό HTMLμ΄λ‚˜ JSX에 직접 μ‘°ν•©ν•˜μ—¬ UIλ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€ [18, 19]. μ„€μ • νŒŒμΌμ— λ””μžμΈ 토큰을 μ •μ˜ν•΄λ‘κΈ° λ•Œλ¬Έμ— μž„μ˜μ˜ μƒ‰μƒμ΄λ‚˜ 간격이 λ¬΄λΆ„λ³„ν•˜κ²Œ λŠ˜μ–΄λ‚˜λŠ” 것을 막아 μ‹œκ°μ  일관성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [18, 20]. μ‚¬μš©λœ 클래슀만 μ΅œμ’… λΉŒλ“œμ— ν¬ν•¨λ˜λ―€λ‘œ λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œλ„ CSS 파일의 크기가 일정 μˆ˜μ€€μ—μ„œ 더 이상 λŠ˜μ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ°•λ ₯ν•œ 이점이 μžˆμŠ΅λ‹ˆλ‹€ [18, 19]. * **μ‹€λ¬΄μ—μ„œμ˜ CSS 관리 및 μ•„ν‚€ν…μ²˜ 톡합 μ „λž΅:** 졜근의 μ—”ν„°ν”„λΌμ΄μ¦ˆ νŒ€λ“€μ€ 단일 κΈ°μˆ μ— 얽맀이지 μ•Šκ³ , λ ˆμ΄μ•„μ›ƒκ³Ό 간격 배치 λ“± 속도와 일관성이 μ€‘μš”ν•œ λΆ€λΆ„μ—λŠ” Tailwind CSSλ₯Ό μ‚¬μš©ν•˜κ³ , κ³ λ„λ‘œ λ³΅μž‘ν•œ μ»΄ν¬λ„ŒνŠΈ μŠ€νƒ€μΌλ§μ—λŠ” CSS Modulesλ‚˜ SCSSλ₯Ό κ²°ν•©ν•˜λŠ” ν•˜μ΄λΈŒλ¦¬λ“œ 접근법을 μ·¨ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€ [21-23]. λ˜ν•œ, 폰트 ν¬κΈ°λ‚˜ 색상 등을 ν”Œλž«νΌμ— μ’…μ†λ˜μ§€ μ•ŠλŠ” 'λ””μžμΈ 토큰(Design Tokens)'으둜 μΆ”μƒν™”ν•˜μ—¬ κ΄€λ¦¬ν•¨μœΌλ‘œμ¨ λ””μžμΈ μ‹œμŠ€ν…œκ³Ό CSS μ•„ν‚€ν…μ²˜λ₯Ό ν•˜λ‚˜λ‘œ ν†΅ν•©ν•©λ‹ˆλ‹€ [24, 25]. ## πŸ”— Knowledge Connections - **Related Topics:** [[BEM (Block Element Modifier)]], [[CSS Modules]], [[Tailwind CSS]], [[Design Tokens]], [[Feature-Sliced Design (FSD)]] - **Projects/Contexts:** [[λŒ€κ·œλͺ¨ μ—”ν„°ν”„λΌμ΄μ¦ˆ ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈ]], [[μ»΄ν¬λ„ŒνŠΈ 기반 μ•„ν‚€ν…μ²˜ (React, Next.js)]], [[λ””μžμΈ μ‹œμŠ€ν…œ ꡬ좕]] - **Contradictions/Notes:** - CSS μ„€κ³„μ—μ„œ BEM은 이름 μΆ©λŒμ„ λ°©μ§€ν•˜λŠ” ν›Œλ₯­ν•œ μˆ˜λ‹¨μœΌλ‘œ μ†Œκ°œλ˜μ§€λ§Œ [3], 졜근 λͺ¨λ˜ ν”„λ‘ νŠΈμ—”λ“œ μƒνƒœκ³„μ—μ„œλŠ” CSS Modulesκ°€ 클래슀 μ΄λ¦„μ˜ 격리λ₯Ό μžλ™μœΌλ‘œ ν•΄κ²°ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— BEM의 μˆ˜λ™μ μΈ 넀이밍 μ»¨λ²€μ…˜μ€ 더 이상 ν•„μˆ˜μ μ΄μ§€ μ•Šλ‹€λŠ” μ‹œκ°μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€ [17, 26, 27]. - Tailwind CSSλŠ” λΉ λ₯Έ 개발 속도와 μΌκ΄€λœ λ””μžμΈ μ‹œμŠ€ν…œμ„ μž₯점으둜 λ‚΄μ„Έμš°μ§€λ§Œ [19], λ™μ‹œμ— HTML λ§ˆν¬μ—…μ΄ μ§€λ‚˜μΉ˜κ²Œ κΈΈμ–΄μ§€λ©° 과거의 '인라인 μŠ€νƒ€μΌ(Inline CSS)'둜 ν‡΄λ³΄ν•˜λŠ” 것 κ°™μ•„ 좔상화 방식에 λ™μ˜ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ°œλ°œμžλ“€μ˜ λΉ„νŒμ μΈ μ˜κ²¬λ„ λΆ„λͺ…ν•˜κ²Œ λŒ€λ¦½ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [20, 28, 29]. --- *Last updated: 2026-04-26*