# [[CSS Architecture|CSS Architecture]] ## ๐Ÿ“Œ Brief Summary CSS ์•„ํ‚คํ…์ฒ˜๋Š” ๊ณผ๊ฑฐ์˜ ๋‹จ์ˆœํ•œ ์‹œ๊ฐ์  ์žฅ์‹ ๊ณ„์ธต์—์„œ ๋ฒ—์–ด๋‚˜, ๋Œ€๊ทœ๋ชจ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ์˜ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์—„๊ฒฉํ•œ ์—”์ง€๋‹ˆ์–ด๋ง ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค [1]. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณต์žกํ•ด์ง์— ๋”ฐ๋ผ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์ „์—ญ(Global) ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถฉ๋Œ๊ณผ 'CSS ๋น„๋Œ€ํ™”(Bloat)' ๊ฐ™์€ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ ๋ชฉ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค [1, 2]. ํ˜„๋Œ€์˜ CSS ์„ค๊ณ„๋Š” BEM๊ณผ ๊ฐ™์€ ์ˆ˜๋™์ ์ธ ๋„ค์ด๋ฐ ๊ทœ์น™์—์„œ ์ถœ๋ฐœํ•˜์—ฌ, [[CSS Modules|CSS Modules]], [[Tailwind CSS|Tailwind CSS]]์™€ ๊ฐ™์ด ์Šค์ฝ”ํ”„(Scope)๋ฅผ ๊ฒฉ๋ฆฌํ•˜๊ณ  ๋ชจ๋“ˆํ™”๋ฅผ ๊ฐ•์ œํ•˜๋Š” ์ž๋™ํ™” ๋ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ๋ฒ•์œผ๋กœ ์ง„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค [3-5]. ## ๐Ÿ“– Core Content ํ˜„๋Œ€์˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ CSS ์„ค๊ณ„๋Š” "์˜ˆ์˜๊ฒŒ" ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์—ฌ๋Ÿฌ ํŒ€์ด ํ˜‘์—…ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ ธ๋„ ์•ˆ์ •์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์œ ์ง€๋ณด์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค [1, 2]. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‹ค๋ฌด์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ ์„ค๊ณ„ ๋ฐฉ์‹๊ณผ ์ „๋žต์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. * **[[BEM (Block Element Modifier)|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|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|Design Tokens]])'์œผ๋กœ ์ถ”์ƒํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๋””์ž์ธ ์‹œ์Šคํ…œ๊ณผ CSS ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค [24, 25]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[BEM (Block Element Modifier)|BEM (Block Element Modifier]], CSS Modules, Tailwind CSS, [[Design Tokens|Design Tokens]], [[Feature-Sliced Design (FSD)|Feature-Sliced Design (FSD]] - **Projects/Contexts:** ๋Œ€๊ทœ๋ชจ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ, ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜ (React, [[Next.js|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*