6. Global Style & Theme

keyword

  • Reset CSS

  • box-sizing ์†์„ฑ

  • word-break ์†์„ฑ

  • Theme

  • ThemeProvider

1. Reset CSS ๋งํฌ

๊ฐ๊ฐ์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๋””ํดํŠธ๋กœ ์ œ๊ณตํ•˜๋Š” ์Šคํƒ€์ผ์„ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด, li์˜ ๋ถˆ๋ › ํฌ์ธํŠธ์™€ body์˜ margin)


2. box-sizing ์†์„ฑ

๋ฐ•์Šค ๋ชจ๋ธ(box model)

๋ชจ๋“  HTML ์š”์†Œ๋Š” ๋ฐ•์Šค ๋ชจ์–‘์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์ด๊ฒƒ์„ ๋ฐ•์Šค ๋ชจ๋ธ(box model)์ด๋ผ ๋ถ€๋ฅธ๋‹ค.

๋ฐ•์Šค ๋ชจ๋ธ์˜ ๊ตฌ์„ฑ ์š”์†Œ

  1. ์ปจํ…์ธ  ์˜์—ญ (Content Area)

  2. ํŒจ๋”ฉ (์•ˆ์ชฝ ์—ฌ๋ฐฑ, Padding)

  3. ํ…Œ๋‘๋ฆฌ (ํ…Œ๋‘๋ฆฌ ์—ฌ๋ฐฑ, Border)

  4. ๋งˆ์ง„ (๋ฐ”๊นฅ ์—ฌ๋ฐฑ, Margin)

box-sizing: border-box ์†์„ฑ ์‚ฌ์šฉ์‹œ border, padding์„ ๊ณ ๋ คํ•ด ๋ฐ•์Šค ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค. width: 200px ์ผ ๊ฒฝ์šฐ, border์™€ padding์ด ๊ฐ๊ฐ 10px์„ ์ฐจ์ง€ํ•œ๋‹ค๋ฉด ์ปจํ…์ธ  ํฌ๊ธฐ๋Š” 160px


3. word-break ์†์„ฑ

word-break ์†์„ฑ์€ ํ…์ŠคํŠธ๊ฐ€ ์ปจํ…์ธ  ์˜์—ญ ๋ฐ–์œผ๋กœ ์˜ค๋ฒ„ํ”Œ๋กœ ํ•  ๋•Œ ์ค„์„ ๋ฐ”๊ฟ€์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

  • keep-all: ํ•œ์ค‘์ผ ํ…์ŠคํŠธ๋Š” ๋‹จ์–ด ๋‹จ์œ„๋กœ ์ค„๋ฐ”๊ฟˆ์„ ์ ์šฉํ•œ๋‹ค.

  • break-all: ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ค„๋ฐ”๊ฟˆ์„ ์ ์šฉํ•œ๋‹ค.


4. Theme

  • ๋””์ž์ธ ์‹œ์Šคํ…œ์˜ ๊ทœ์น™์„ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

  • ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์— ๋Œ€ํ•œ(ex. dark mode) ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • '์˜๋ฏธ' ๋‹จ์œ„๋กœ ์Šคํƒ€์ผ์„ ์ •์˜ํ•œ๋‹ค.

const defaultTheme = {
  colors: {
    background: '#FFF',
    text: '#000',
    primary: '#F00',
    secondary: '#00F',
  },
};

export default defaultTheme;

5. ThemeProvider

<ThemeProvider> ๋ž˜ํผ ์ปดํฌ๋„ŒํŠธ๋Š” Context API๋ฅผ ํ†ตํ•ด ์•„๋ž˜์— ์žˆ๋Š” ๋ชจ๋“  React ์ปดํฌ๋„ŒํŠธ์— ํ…Œ๋งˆ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

Last updated