# [[Tailwind CSS]] ## πŸ“Œ Brief Summary Tailwind CSSλŠ” 미리 μ •μ˜λœ 단일 λͺ©μ μ˜ μœ ν‹Έλ¦¬ν‹° 클래슀(utility-first)λ₯Ό ν™œμš©ν•˜μ—¬ HTMLμ΄λ‚˜ JSX λ‚΄μ—μ„œ 직접 UIλ₯Ό κ΅¬μ„±ν•˜λŠ” CSS ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€ [1-3]. μ»΄ν¬λ„ŒνŠΈμ™€ μŠ€νƒ€μΌ κ°„μ˜ μ»¨ν…μŠ€νŠΈ μ „ν™˜ 없이 개발 속도λ₯Ό 높이고, λ””μžμΈ 토큰을 톡해 μ‹œκ°μ  일관성을 μœ μ§€ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€ [2, 4, 5]. ν•˜μ§€λ§Œ HTML λ§ˆν¬μ—…μ΄ μž₯ν™©ν•΄μ§„λ‹€λŠ” 단점이 μžˆμ–΄, "μœ μ§€λ³΄μˆ˜ κ°€λŠ₯μ„±"κ³Ό "생산성"μ΄λΌλŠ” μΈ‘λ©΄μ—μ„œ κ°œλ°œμžλ“€ μ‚¬μ΄μ—μ„œ ν™œλ°œνžˆ λ…Όμ˜λ˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€ [4, 6, 7]. ## πŸ“– Core Content * **κΈ°λ³Έ κ°œλ… 및 μž‘λ™ 방식:** Tailwind CSSλŠ” `flex`, `pt-4`, `text-gray-500`, `rounded-lg` λ“±κ³Ό 같이 μž‘κ³  νŠΉμ • μ—­ν• λ§Œ μˆ˜ν–‰ν•˜λŠ” ν΄λž˜μŠ€λ“€μ„ μ‘°ν•©ν•˜μ—¬ λ§ˆν¬μ—… λ‚΄μ—μ„œ 직접 μŠ€νƒ€μΌμ„ λΆ€μ—¬ν•©λ‹ˆλ‹€ [2]. μ΄λŠ” 전톡적인 'κ΄€μ‹¬μ‚¬μ˜ 뢄리(Separation of Concerns)' μ›μΉ™λ³΄λ‹€λŠ” 개발의 속도와 λ””μžμΈμ˜ 일관성에 더 큰 비쀑을 λ‘” μœ ν‹Έλ¦¬ν‹° μš°μ„ (Utility-first) νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€ [5]. * **μ£Όμš” μž₯점:** * **λΉ λ₯Έ 개발 속도:** CSS 파일과 λ§ˆν¬μ—… 사이λ₯Ό μ˜€κ°€λŠ” μ»¨ν…μŠ€νŠΈ μ „ν™˜(context switching)이 μ—†μœΌλ©°, 클래슀 이름을 κ³ λ―Όν•  ν•„μš”κ°€ μ—†μ–΄ λΉ λ₯΄κ²Œ ν”„λ‘œν† νƒ€μ΄ν•‘ν•˜κ³  κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2, 8]. λ˜ν•œ, μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚­μ œν•  λ•Œ μ—°κ΄€λœ μŠ€νƒ€μΌλ„ ν•¨κ»˜ μ‚­μ œλ˜λ―€λ‘œ λΆˆν•„μš”ν•œ μ½”λ“œκ°€ 남지 μ•ŠμŠ΅λ‹ˆλ‹€ [4]. * **λ””μžμΈ μ‹œμŠ€ν…œ κ°•μ œ:** 간격, 색상, νƒ€μ΄ν¬κ·Έλž˜ν”Ό λ“±μ˜ 값을 μ„€μ • 파일둜 κ΄€λ¦¬ν•˜μ—¬, λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ 일관성 μ—†λŠ” μž„μ˜μ˜ κ°’(예: 무수히 λ§Žμ€ νšŒμƒ‰ 음영)이 λ¬΄λΆ„λ³„ν•˜κ²Œ μΆ”κ°€λ˜λŠ” 것을 λ°©μ§€ν•©λ‹ˆλ‹€ [4, 7, 8]. * **μ„±λŠ₯ 및 λΉŒλ“œ μ΅œμ ν™”:** JIT(Just-In-Time) μ»΄νŒŒμΌλŸ¬κ°€ μ½”λ“œλ₯Ό μŠ€μΊ”ν•˜μ—¬ μ‹€μ œ μ‚¬μš©λœ 클래슀만 μ΅œμ’… CSS에 ν¬ν•¨μ‹œν‚€κΈ° λ•Œλ¬Έμ—, ν”„λ‘œμ νŠΈ 규λͺ¨κ°€ 컀지더라도 CSS 파일 크기가 일정 μˆ˜μ€€(보톡 5~20kb)μ—μ„œ μœ μ§€λ˜λ©° λ Œλ”λ§ μ„±λŠ₯이 λ›°μ–΄λ‚©λ‹ˆλ‹€ [4, 5, 7]. λ˜ν•œ λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œκ°€ μ—†μ–΄ React Server Components(RSC) λ“± μ΅œμ‹  λ Œλ”λ§ ν™˜κ²½κ³Όλ„ ν˜Έν™˜μ„±μ΄ λ›°μ–΄λ‚©λ‹ˆλ‹€ [9, 10]. * **μ£Όμš” 단점 및 ν•œκ³„:** * **가독성 μ €ν•˜ 및 λ§ˆν¬μ—… λΉ„λŒ€ν™”:** μ—¬λŸ¬ μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€κ°€ κ²ΉμΉ˜λ©΄μ„œ JSX의 `className` 속성이 200자 μ΄μƒμœΌλ‘œ κΈΈμ–΄μ§€κ³  μ½”λ“œκ°€ μ§€μ €λΆ„ν•΄μ§€λŠ” λ“± HTML λ§ˆν¬μ—…μ΄ λΉ„λŒ€ν•΄μ§‘λ‹ˆλ‹€ [4, 7, 11]. * **ν•™μŠ΅ 곑선:** λ°©λŒ€ν•œ μ–‘μ˜ μœ ν‹Έλ¦¬ν‹° 클래슀 λͺ…λͺ… κ·œμΉ™μ„ μ΅ν˜€μ•Ό ν•˜λ―€λ‘œ 초기 μ§„μž… μž₯λ²½κ³Ό ν•™μŠ΅ μ‹œκ°„μ΄ ν•„μš”ν•©λ‹ˆλ‹€ [1, 12]. * **μ œν•œλœ μœ μ—°μ„±κ³Ό λ””μžμΈ μ‹œμŠ€ν…œ 우회:** ν”½μ…€ λ‹¨μœ„μ˜ μ„Έλ°€ν•œ μ œμ–΄κ°€ ν•„μš”ν•œ κ³ μœ ν•œ λ””μžμΈμ„ κ΅¬ν˜„ν•  λ•Œ μ œν•œμ μΌ 수 있으며, 이λ₯Ό ν•΄κ²°ν•˜κ³ μž `w-[347px]`와 같은 μž„μ˜μ˜ κ°’(arbitrary values)을 λ‚¨λ°œν•˜κ²Œ 되면 κ²°κ΅­ λ””μžμΈ μ‹œμŠ€ν…œμ˜ ν†΅μ œμ—μ„œ λ²—μ–΄λ‚˜κ²Œ λ©λ‹ˆλ‹€ [12, 13]. * **싀무적 ν•΄κ²° 및 적용 μ „λž΅:** κΈΈμ–΄μ§€λŠ” 클래슀λͺ…을 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ `clsx`, `tailwind-merge`, CVA(Class Variance Authority)와 같은 라이브러리λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€ [4, 14]. λ˜ν•œ κΈ°μ—… λ‹¨μœ„μ˜ ν”„λ‘œμ νŠΈμ—μ„œλŠ” λ ˆμ΄μ•„μ›ƒ 및 간격 μ„€μ •μ—λŠ” Tailwind의 λΉ λ₯Έ 속도λ₯Ό ν™œμš©ν•˜κ³ , λ³΅μž‘ν•œ μ• λ‹ˆλ©”μ΄μ…˜μ΄λ‚˜ νŠΉμˆ˜ν•œ ꡬ쑰가 ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈμ—λŠ” CSS Modulesλ‚˜ SCSSλ₯Ό κ²°ν•©ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” ν•˜μ΄λΈŒλ¦¬λ“œ μ•„ν‚€ν…μ²˜λ₯Ό 많이 μ±„νƒν•©λ‹ˆλ‹€ [15-17]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Utility-first CSS]], [[CSS Modules]], [[SCSS (Sass)]], [[BEM]], [[λ””μžμΈ μ‹œμŠ€ν…œ (Design System)]], [[CSS-in-JS]] - **Projects/Contexts:** [[Next.js App Router]] (μ„œλ²„ μ»΄ν¬λ„ŒνŠΈμ˜ μ œμ•½μœΌλ‘œ 인해 λŸ°νƒ€μž„ μ½”μŠ€νŠΈκ°€ μ—†λŠ” Tailwindκ°€ 적극 ꢌμž₯λ˜λŠ” μ£Όμš” λ§₯락 [9, 18]), [[μ»΄ν¬λ„ŒνŠΈ 기반 μ•„ν‚€ν…μ²˜]] - **Contradictions/Notes:** λ§Žμ€ κ°œλ°œμžλ“€μ΄ Tailwind의 λΉ λ₯Έ 개발 속도와 λ””μžμΈ 일관성에 찬사λ₯Ό λ³΄λ‚΄λŠ” 반면 [5, 8], 일뢀 κ°œλ°œμžλ“€μ€ 마치 2000λ…„λŒ€μ˜ "인라인 μŠ€νƒ€μΌ(inline css)" μž‘μ„±μœΌλ‘œ νšŒκ·€ν•œ 것 κ°™λ‹€λ©° μΆ”μƒν™”μ˜ λΆ€μž¬μ™€ μ½”λ“œμ˜ λ‚œμž‘ν•¨μ— λΆˆλ§Œμ„ ν‘œν•˜κ³ , CSS Modulesλ‚˜ BEM 같은 방식이 더 κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μœ μ§€ν•œλ‹€κ³  λ°˜λŒ€ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€ [1, 19-21]. --- *Last updated: 2026-04-26*