July 7, 2025

๐Ÿ’ฅ CSS !important์˜ ๋‚จ์šฉ: ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์Šคํƒ€์ผ์˜ ๋Šช

CSS
์•„ํ‚คํ…์ฒ˜
๋„ค์ด๋ฐ
Lint/Formatter

Summary

!important ํ‚ค์›Œ๋“œ๋ฅผ ๋‚จ์šฉํ•˜๋ฉด CSS ์บ์Šค์ผ€์ด๋“œ ๊ทœ์น™์„ ๋ฌด์‹œํ•˜์—ฌ ์Šคํƒ€์ผ ๊ฐ„์˜ ์šฐ์„ ์ˆœ์œ„ ์ถฉ๋Œ์„ ์•ผ๊ธฐํ•˜๊ณ , ๋””๋ฒ„๊น…์„ ์–ด๋ ต๊ฒŒ ํ•˜๋ฉฐ, ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ €ํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  CSS ์šฐ์„ ์ˆœ์œ„ ๊ทœ์น™์„ ์ดํ•ดํ•˜๊ณ , ์‹œ๋งจํ‹ฑํ•˜๊ณ  ๋ช…ํ™•ํ•œ ํด๋ž˜์Šค ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ CSS Custom Properties๋‚˜ CSS-in-JS์™€ ๊ฐ™์€ ์Šค์ฝ”ํ”„ ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์„ ํ™œ์šฉํ•˜์—ฌ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์Šคํƒ€์ผ์„ ๊ตฌ์ถ•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Why Wrong?

CSS๋Š” '์บ์Šค์ผ€์ด๋“œ(Cascade)'๋ผ๋Š” ํ•ต์‹ฌ ์›์น™์— ๋”ฐ๋ผ ์Šคํƒ€์ผ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ๊ทœ์น™์ด ํ•œ ์š”์†Œ์— ์ ์šฉ๋  ๋•Œ ์–ด๋–ค ๊ทœ์น™์ด '์Šน๋ฆฌ'ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ฒด๊ณ„์ ์ธ ์šฐ์„ ์ˆœ์œ„ ๊ฒฐ์ • ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ์šฐ์„ ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์†Œ๋“ค์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค:

  1. Origin (์ถœ์ฒ˜): ๋ธŒ๋ผ์šฐ์ € ์Šคํƒ€์ผ์‹œํŠธ < ์‚ฌ์šฉ์ž ์Šคํƒ€์ผ์‹œํŠธ < ์ž‘์„ฑ์ž(๊ฐœ๋ฐœ์ž) ์Šคํƒ€์ผ์‹œํŠธ
  2. Specificity (๋ช…์‹œ๋„): ์…€๋ ‰ํ„ฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ตฌ์ฒด์ ์ธ๊ฐ€ (์ธ๋ผ์ธ ์Šคํƒ€์ผ > ID ์…€๋ ‰ํ„ฐ > ํด๋ž˜์Šค/์†์„ฑ/๊ฐ€์ƒ ํด๋ž˜์Šค ์…€๋ ‰ํ„ฐ > ํƒ€์ž…/๊ฐ€์ƒ ์š”์†Œ ์…€๋ ‰ํ„ฐ)
  3. Order (์„ ์–ธ ์ˆœ์„œ): ๋™์ผํ•œ ๋ช…์‹œ๋„๋ฅผ ๊ฐ€์งˆ ๊ฒฝ์šฐ ๋‚˜์ค‘์— ์„ ์–ธ๋œ ๊ทœ์น™์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

!important ํ‚ค์›Œ๋“œ๋Š” ์ด ์บ์Šค์ผ€์ด๋“œ ๊ทœ์น™์„ ๋ฌด์‹œํ•˜๊ณ , ๋ชจ๋“  ์ผ๋ฐ˜์ ์ธ CSS ์„ ์–ธ๋ณด๋‹ค ์ตœ์šฐ์„ ๊ถŒ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ๊ธฐ์ ์œผ๋กœ ํŠน์ • ์Šคํƒ€์ผ์„ ๊ฐ•์ œ๋กœ ์ ์šฉํ•˜๋Š” ๋ฐ ํŽธ๋ฆฌํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

  • ์บ์Šค์ผ€์ด๋“œ ํŒŒ๊ดด: !important๋Š” CSS์˜ ํ•ต์‹ฌ์ธ ์บ์Šค์ผ€์ด๋”ฉ ์›์น™์„ ๋ฌด๋ ฅํ™”์‹œ์ผœ, ์Šคํƒ€์ผ์ด ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”์ง€ ์˜ˆ์ธกํ•˜๊ธฐ ๋งค์šฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Š” ๊ณง 'CSS ์šฐ์„ ์ˆœ์œ„ ์ „์Ÿ'์œผ๋กœ ์ด์–ด์ง€๋ฉฐ, ํŠน์ • ์Šคํƒ€์ผ์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ !important๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๋งค์šฐ ๋ณต์žกํ•˜๊ณ  ๊นจ์ง€๊ธฐ ์‰ฌ์šด ์…€๋ ‰ํ„ฐ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ๋””๋ฒ„๊น…์˜ ์•…๋ชฝ: !important๊ฐ€ ๋‚จ์šฉ๋œ ์ฝ”๋“œ๋Š” ์–ด๋–ค ์Šคํƒ€์ผ์ด ์‹ค์ œ๋กœ ์ ์šฉ๋˜๋Š”์ง€ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ !important๊ฐ€ ๋ถ™์€ ์Šคํƒ€์ผ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด, ํ•ด๋‹น ์Šคํƒ€์ผ์ด ์™œ ์ ์šฉ๋˜์—ˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ด์•ผ ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋ถˆํ•„์š”ํ•œ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ์†Œ๋ชจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์žฌ์‚ฌ์šฉ์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์„ฑ ์ €ํ•ด: ํŠน์ • ์ปดํฌ๋„ŒํŠธ๋‚˜ ์š”์†Œ์— !important๊ฐ€ ๋ถ™์œผ๋ฉด, ํ•ด๋‹น ์Šคํƒ€์ผ์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ธฐ๊ฐ€ ๊ทน๋„๋กœ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. !important๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‚˜์ค‘์— ์ด ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋” ๊ฐ•๋ ฅํ•œ !important๋‚˜ ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์™ธ์—๋Š” ๋ฐฉ๋ฒ•์ด ์—†์–ด์ ธ ์œ ์—ฐ์„ฑ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ: ํ•˜๋‚˜์˜ !important ์„ ์–ธ์ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋‹ค๋ฅธ ์š”์†Œ์˜ ์Šคํƒ€์ผ์—๋„ ์˜ํ–ฅ์„ ์ฃผ๊ฑฐ๋‚˜, ๋‚˜์ค‘์— ์ถ”๊ฐ€๋œ ์Šคํƒ€์ผ๊ณผ์˜ ์ถฉ๋Œ์„ ์ผ์œผ์ผœ ์ „์ฒด UI์˜ ์ผ๊ด€์„ฑ์„ ํ•ด์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์€ ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ˜‘์—…ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์น˜๋ช…์ ์ด๋ฉฐ, ํ”„๋ก ํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜์˜ ๊ฑด์ „์„ฑ์„ ํ•ด์น˜๋Š” ์ฃผ๋ฒ”์ด ๋ฉ๋‹ˆ๋‹ค.

How to Fix?

!important ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ์„ ํ”ผํ•˜๊ณ  CSS์˜ ์บ์Šค์ผ€์ด๋“œ ๋ฐ ๋ช…์‹œ๋„ ์›์น™์„ ์กด์ค‘ํ•˜์—ฌ ์Šคํƒ€์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ทธ ๋ฐฉ๋ฒ•๋“ค์ž…๋‹ˆ๋‹ค:

  1. CSS ๋ช…์‹œ๋„ ์ดํ•ด ๋ฐ ํ™œ์šฉ:
    • ID(a=100), ํด๋ž˜์Šค/์†์„ฑ/๊ฐ€์ƒ ํด๋ž˜์Šค(b=10), ํƒ€์ž…/๊ฐ€์ƒ ์š”์†Œ(c=1)์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์ดํ•ดํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ ์ ˆํ•œ ๋ช…์‹œ๋„๋ฅผ ๊ฐ€์ง„ ์…€๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
    • ๋‹จ์ˆœํžˆ ์Šคํƒ€์ผ์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜๊ธฐ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋†’์€ ๋ช…์‹œ๋„๋ฅผ ๊ฐ€์ง„ ์…€๋ ‰ํ„ฐ(div#container .item.active span.text)๋ฅผ ํ”ผํ•˜์„ธ์š”.
  2. BEM(Block Element Modifier) ๋˜๋Š” ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•๋ก  ์‚ฌ์šฉ:
    • BEM์€ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์˜ ๋ช…ํ™•ํ•œ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์„ ์ œ๊ณตํ•˜์—ฌ CSS ๋ช…์‹œ๋„๋ฅผ ๋‚ฎ๊ณ  ํ‰ํ‰ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์ด๋Š” !important ์—†์ด๋„ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์Šคํƒ€์ผ ์ ์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: .block__element--modifier
  3. CSS Custom Properties (๋ณ€์ˆ˜) ํ™œ์šฉ:
    • ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’(์ƒ‰์ƒ, ํฐํŠธ ํฌ๊ธฐ, ๊ฐ„๊ฒฉ ๋“ฑ)์„ CSS ๋ณ€์ˆ˜๋กœ ์ •์˜ํ•˜์—ฌ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ๊ฐ’์€ ์ผ๋ฐ˜์ ์ธ ์บ์Šค์ผ€์ด๋“œ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฏ€๋กœ !important ์—†์ด๋„ ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ: --primary-color: #007bff; color: var(--primary-color);
  4. ์Šค์ฝ”ํ”„๋“œ(Scoped) CSS ์†”๋ฃจ์…˜ ์ฑ„ํƒ:
    • CSS Modules, Styled Components, Emotion, Vue์˜ scoped CSS, Svelte์˜ scoped CSS ๋“ฑ์€ ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํƒ€์ผ์ด ์ „์—ญ ์Šค์ฝ”ํ”„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ๋กœ์ปฌ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์Šคํƒ€์ผ ์ถฉ๋Œ์„ ์›์ฒœ์ ์œผ๋กœ ๋ฐฉ์ง€ํ•˜๊ณ  !important์˜ ํ•„์š”์„ฑ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์Šคํƒ€์ผ ์ ์šฉ ์ˆœ์„œ ๋ฐ ์œ„์น˜ ๊ณ ๋ ค:
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์—ญ ์Šคํƒ€์ผ, ์ปดํฌ๋„ŒํŠธ๋ณ„ ์Šคํƒ€์ผ, ํ…Œ๋งˆ ์Šคํƒ€์ผ ๋“ฑ CSS ํŒŒ์ผ์˜ ๋กœ๋”ฉ ์ˆœ์„œ์™€ <link> ํƒœ๊ทธ์˜ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์˜๋„ํ•œ ๋Œ€๋กœ ์Šคํƒ€์ผ์ด ์บ์Šค์ผ€์ด๋“œ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์—ญ ์Šคํƒ€์ผ์„ ๋จผ์ € ๋กœ๋“œํ•˜๊ณ , ๊ทธ ํ›„์— ์ปดํฌ๋„ŒํŠธ๋ณ„ ์Šคํƒ€์ผ์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  6. ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์‚ฌ์šฉ ์ž์ œ:
    • ์ธ๋ผ์ธ ์Šคํƒ€์ผ์€ ๊ฐ€์žฅ ๋†’์€ ๋ช…์‹œ๋„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ (ID ์…€๋ ‰ํ„ฐ๋ณด๋‹ค ๋†’์Œ) !important์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์บ์Šค์ผ€์ด๋“œ ๊ทœ์น™์„ ๋ฌด์‹œํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ ์ธ ์Šคํƒ€์ผ๋ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, CSS ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ JavaScript๋กœ ํด๋ž˜์Šค๋ฅผ ํ† ๊ธ€ํ•˜๋Š” ๋ฐฉ์‹์„ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์„ธ์š”.

!important๋Š” ๊ทนํžˆ ์˜ˆ์™ธ์ ์ธ ๊ฒฝ์šฐ(์˜ˆ: ์‚ฌ์šฉ์ž ์ ‘๊ทผ์„ฑ ์„ค์ •, ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ์Šคํƒ€์ผ ๊ฐ•์ œ ์˜ค๋ฒ„๋ผ์ด๋“œ ๋“ฑ)์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋งˆ์ €๋„ ์‚ฌ์šฉ ์ „ ์ถฉ๋ถ„ํ•œ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Before Code (Bad)

/* beforeCode.css */
/* ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ๊ณตํ†ต ์Šคํƒ€์ผ */
.button {
  background-color: blue;
  color: white;
  padding: 10px 20px;
  border: none;
}

/* ํŠน์ • ํŽ˜์ด์ง€๋‚˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฒ„ํŠผ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•˜๋ ค ํ•  ๋•Œ */
/* ์ด ์ฝ”๋“œ๋Š” .button์ด ๋” ์ผ๋ฐ˜์ ์ด๊ฑฐ๋‚˜ ๋‚˜์ค‘์— ์„ ์–ธ๋  ๊ฒฝ์šฐ ์ ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์–ด !important๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. */
.promo-button {
  background-color: red !important; /* ๐Ÿ”ฅ ๋ฌธ์ œ์ : !important ๋‚จ์šฉ */
  font-weight: bold;
}

/* React ์ปดํฌ๋„ŒํŠธ ์˜ˆ์‹œ */
/* PromoButton.js */
import React from 'react';
import './beforeCode.css'; // promo-button ์Šคํƒ€์ผ์„ ํฌํ•จ

function PromoButton() {
  return (
    <button className="button promo-button">
      ์ง€๊ธˆ ๊ตฌ๋งคํ•˜์„ธ์š”!
    </button>
  );
}

export default PromoButton;

After Code (Good)

/* afterCode.css */
/* CommonButton.module.css (CSS Modules ์˜ˆ์‹œ) */
/* .button ํด๋ž˜์Šค๋Š” CommonButton.module.css์— ์ •์˜๋˜์–ด ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. */
.button {
  background-color: blue;
  color: white;
  padding: 10px 20px;
  border: none;
}

/* PromoButton.module.css (CSS Modules ์˜ˆ์‹œ) */
/* .promoButton์€ ์ด ํŒŒ์ผ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๋ฉฐ, ๊ณ ์œ ํ•œ ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. */
.promoButton {
  background-color: red;
  font-weight: bold;
}

/* React ์ปดํฌ๋„ŒํŠธ ์˜ˆ์‹œ */
/* CommonButton.js */
import React from 'react';
import commonStyles from './CommonButton.module.css';

function CommonButton({ children }) {
  return (
    <button className={commonStyles.button}>
      {children}
    </button>
  );
}

export default CommonButton;

/* PromoButton.js */
import React from 'react';
import CommonButton from './CommonButton';
import promoStyles from './PromoButton.module.css';

function PromoButton() {
  return (
    // CommonButton์˜ ์Šคํƒ€์ผ ์œ„์— promoButton์˜ ์Šคํƒ€์ผ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€
    // CSS Modules๋Š” ์ž๋™์œผ๋กœ ๊ณ ์œ ํ•œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ƒ์„ฑํ•˜์—ฌ ์ถฉ๋Œ ๋ฐฉ์ง€
    <CommonButton>
      <span className={promoStyles.promoButton}>์ง€๊ธˆ ๊ตฌ๋งคํ•˜์„ธ์š”!</span>
    </CommonButton>
  );
}

export default PromoButton;

/* ๋˜๋Š” ๋‹จ์ˆœํžˆ ๋” ๋†’์€ ๋ช…์‹œ๋„ (BEM ์ปจ๋ฒค์…˜ ํ™œ์šฉ) */
/* styles.css */
.button {
  background-color: blue;
  color: white;
  padding: 10px 20px;
  border: none;
}

.button--promo { /* Modifier ํด๋ž˜์Šค๋กœ ๋ช…์‹œ๋„๋ฅผ ๋†’์ด์ง€ ์•Š๊ณ  ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํžˆ */
  background-color: red;
  font-weight: bold;
}

/* React ์ปดํฌ๋„ŒํŠธ ์˜ˆ์‹œ */
/* PromoButton.js */
import React from 'react';
import './styles.css';

function PromoButton() {
  return (
    <button className="button button--promo"> {/* ๋‘ ํด๋ž˜์Šค๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉ */} 
      ์ง€๊ธˆ ๊ตฌ๋งคํ•˜์„ธ์š”!
    </button>
  );
}

export default PromoButton;