# [[BEM (Block Element Modifier)|BEM (Block Element Modifier]] ## ๐Ÿ“Œ Brief Summary BEM(Block Element Modifier)์€ ๋ชจ๋“ˆ์‹์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ถฉ๋Œ ์—†๋Š” UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๊ฒ€์ฆ๋œ CSS ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค [1]. ๊นŠ๊ฒŒ ์ค‘์ฒฉ๋œ ์„ ํƒ์ž ๋Œ€์‹  ํ‰๋ฉด์ ์ด๊ณ  ๋ช…์‹œ์ ์ด๋ฉฐ ์Šค์Šค๋กœ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค ๋ช…๋ช… ๊ทœ์น™์„ ๋„์ž…ํ•˜์—ฌ CSS๋ฅผ ๊ตฌ์กฐํ™”ํ•œ๋‹ค [2, 3]. ์ด๋ฅผ ํ†ตํ•ด ๋Œ€๊ทœ๋ชจ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  CSS์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค [4, 5]. ## ๐Ÿ“– Core 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]. ## ๐Ÿ”— Knowledge Connections - **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*