--- id: wiki-2026-0508-bem-block-element-modifier title: BEM (Block Element Modifier) category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[BEM (Block Element Modifier)|BEM (Block Element Modifier]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) BEM(Block Element Modifier)์€ ๋ชจ๋“ˆ์‹์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ถฉ๋Œ ์—†๋Š” UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๊ฒ€์ฆ๋œ CSS ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค [1]. ๊นŠ๊ฒŒ ์ค‘์ฒฉ๋œ ์„ ํƒ์ž ๋Œ€์‹  ํ‰๋ฉด์ ์ด๊ณ  ๋ช…์‹œ์ ์ด๋ฉฐ ์Šค์Šค๋กœ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค ๋ช…๋ช… ๊ทœ์น™์„ ๋„์ž…ํ•˜์—ฌ CSS๋ฅผ ๊ตฌ์กฐํ™”ํ•œ๋‹ค [2, 3]. ์ด๋ฅผ ํ†ตํ•ด ๋Œ€๊ทœ๋ชจ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  CSS์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค [4, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **BEM์˜ ๊ตฌ์กฐ ๋ฐ ๋ช…๋ช… ๊ทœ์น™:** * BEM์€ ๋…๋ฆฝ์ ์œผ๋กœ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์ปดํฌ๋„ŒํŠธ์ธ '๋ธ”๋ก(Block)', ๋ธ”๋ก์— ์ข…์†๋˜์–ด ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์—†๋Š” ํ•˜์œ„ ์š”์†Œ์ธ '์—˜๋ฆฌ๋จผํŠธ(Element)', ๊ทธ๋ฆฌ๊ณ  ๋ชจ์–‘์ด๋‚˜ ์ƒํƒœ์˜ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” '๋ชจ๋””ํŒŒ์ด์–ด(Modifier)'๋กœ ๊ตฌ์„ฑ๋œ๋‹ค [3, 6, 7]. * ์—˜๋ฆฌ๋จผํŠธ๋Š” ์ด์ค‘ ๋ฐ‘์ค„(`__`)๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ (์˜ˆ: `card__title`), ๋ชจ๋””ํŒŒ์ด์–ด๋Š” ์ด์ค‘ ํ•˜์ดํ”ˆ(`--`)์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค(์˜ˆ: `button--primary`) [6-8]. * **BEM์˜ ์žฅ์  ๋ฐ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๊ธฐ์—ฌ:** * ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„(Low Coupling)์™€ ๋†’์€ ์‘์ง‘๋„(High Cohesion)๋ฅผ ์ด‰์ง„ํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฒฉ๋ฆฌํ•˜๊ณ , ์Šคํƒ€์ผ์ด ๊นŠ์€ DOM ์ค‘์ฒฉ์— ์˜์กดํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ ๋‹ค [5, 9]. * ํ‰๋ฉด์ ์ธ(flat) ์„ ํƒ์ž ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ € CSS ์—”์ง„์˜ ๊ด‘๋ฒ”์œ„ํ•œ ํŠธ๋ฆฌ ํƒ์ƒ‰์„ ๋ฐฉ์ง€ํ•˜๋ฏ€๋กœ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์— ์œ ๋ฆฌํ•˜๋‹ค [9, 10]. * ํด๋ž˜์Šค ์ด๋ฆ„ ์ž์ฒด๊ฐ€ ๋ฌธ์„œ ์—ญํ• ์„ ํ•˜์—ฌ(Self-documenting) ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๋„ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์–ด๋А ์ปดํฌ๋„ŒํŠธ์˜ ์–ด๋–ค ๋ณ€ํ˜•์ธ์ง€ ์ฆ‰์‹œ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŒ€ ํ˜‘์—…๊ณผ ์•ˆ์ „ํ•œ ๋ฆฌํŒฉํ† ๋ง์„ ๋•๋Š”๋‹ค [9, 11, 12]. * **ํ•œ๊ณ„ ๋ฐ ๋‹จ์ :** * ๊ฐ€์žฅ ํฐ ์ทจ์•ฝ์ ์€ ๊ทœ์œจ ์ค€์ˆ˜๋ฅผ ์ „์ ์œผ๋กœ '์‚ฌ๋žŒ์˜ ๊ฐ•์ œ(human enforcement)'์— ์˜์กดํ•œ๋‹ค๋Š” ์ ์ด๋‹ค [5, 13, 14]. * ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋กœ ๋ช…๋ช… ๊ทœ์น™์ด ์œ„๋ฐ˜๋˜๊ฑฐ๋‚˜ ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ๋ธ”๋ก ์ด๋ฆ„์ด ์ถฉ๋Œํ•  ์œ„ํ—˜์ด ์กด์žฌํ•œ๋‹ค [13, 15]. * ํด๋ž˜์Šค ์ด๋ฆ„์ด ๊ธธ๊ณ  ์žฅํ™ฉํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ(verbosity), ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ๋“œ ์ฝ”๋“œ(dead code)๋ฅผ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ž๋™์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ  ์ œ๊ฑฐํ•˜๊ธฐ ์–ด๋ ต๋‹ค [12-14]. * **์‹ค๋ฌด ํ™œ์šฉ ๋ฐ ํ˜„๋Œ€์  ๋Œ€์•ˆ๊ณผ์˜ ๋น„๊ต:** * ์žฅํ™ฉํ•œ ํด๋ž˜์Šค๋ช… ์ž‘์„ฑ์˜ ๋ถˆํŽธํ•จ์€ Sass๋‚˜ Less ๊ฐ™์€ CSS ์ „์ฒ˜๋ฆฌ๊ธฐ์˜ ์ค‘์ฒฉ(nesting) ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค [16, 17]. * ์ตœ๊ทผ์˜ React ๋“ฑ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ๋Š” BEM์ด ํ•ด๊ฒฐํ•˜๋ ค ํ–ˆ๋˜ ์ „์—ญ CSS ์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ ์ž๋™์œผ๋กœ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” [[CSS Modules|CSS Modules]]๊ฐ€ ์„ ํ˜ธ๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค [18, 19]. * ๊ทธ๋Ÿฌ๋‚˜ ๊ณต์œ  ์œ ํ‹ธ๋ฆฌํ‹ฐ, ์ „์—ญ ๋””์ž์ธ ์‹œ์Šคํ…œ, ํ˜น์€ ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ…Œ๋งˆ๋ฅผ ๋ฎ์–ด์จ์•ผ ํ•˜๋Š” ํ™”์ดํŠธ๋ผ๋ฒจ(whitelabel) ์•ฑ ํ™˜๊ฒฝ ๋“ฑ์—์„œ๋Š” BEM์˜ ๋ช…์‹œ์  ๊ตฌ์กฐ๊ฐ€ ์—ฌ์ „ํžˆ ๋งค์šฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค [19-21]. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[CSS Modules|CSS Modules]], Tailwind CSS, CSS-in-JS, [[CSS Architecture|CSS Architecture]] - **Projects/Contexts:** ๋Œ€๊ทœ๋ชจ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ ์œ ์ง€๋ณด์ˆ˜, ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ UI ์„ค๊ณ„, [[แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ท แ„€แ…ฎแ„Žแ…ฎแ†จ|๋””์ž์ธ ์‹œ์Šคํ…œ ๊ตฌ์ถ•]] - **Contradictions/Notes:** BEM์€ ๋ช…์‹œ์ ์ด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์Šคํƒ€์ผ๋ง์„ ์ œ๊ณตํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜์ง€๋งŒ [1, 9], ์ธ๊ฐ„์˜ ์ˆ˜๋™ ๊ด€๋ฆฌ์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ช…ํ™•ํ•œ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค [5, 14]. ์ด๋กœ ์ธํ•ด ์˜ค๋Š˜๋‚ ์˜ ์‹ค๋ฌด์—์„œ๋Š” ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ์ž๋™์œผ๋กœ ๊ณ ์œ  ํด๋ž˜์Šค๋ช…์„ ๋ณด์žฅํ•˜๋Š” CSS Modules๋‚˜, ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ [[Tailwind CSS|Tailwind CSS]]์™€ ์ข…์ข… ๋น„๊ต๋˜๊ฑฐ๋‚˜ ์ƒํ˜ธ ๋ณด์™„์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค [8, 21-23]. --- *Last updated: 2026-04-26* ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์—†์Œ - **์ •์ฑ… ๋ณ€ํ™”:** ์—†์Œ ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*