Skip to content

CSS๋ฐฉ๋ฒ•๋ก (OOCSS, SMACSS)

  • Web
  • Html
  • Css

March 04, 2023

CSS๋ฐฉ๋ฒ•๋ก (OOCSS, SMACSS)

๐ŸŸก CSS ์ •์˜์™€ ์—ญํ• 

  • Html๋ฌธ์„œ์˜ ์Šคํƒ€์ผ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด
  • ๋ฌธ์„œ์˜ ๊ตฌ์กฐ์™€ ์Šคํƒ€์ผ์„ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ html์˜ ๊ฐ ์š”์†Œ๋ฅผ ๊พธ๋ฏธ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๐ŸŸก CSS ๋“ฑ์žฅ ์ด์ „

  • ๊ฐ ํƒœ๊ทธ๋งˆ๋‹ค ์ง์ ‘ style๋กœ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•ด์•ผํ–ˆ์Œ.
  • ๊ฐ™์€ ์Šคํƒ€์ผ ์š”์†Œ๋ฅผ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ์ค‘๋ณต ์‚ฌ์šฉํ•˜๋ฉด, ํ•˜๋‚˜๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ์š”์†Œ์— ๋ฐ˜๋ณต ์ˆ˜์ • ํ•„์š”.
  • Html์€ ๋ฌธ์„œ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ, ์ง์ ‘ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋žŒ์งํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์—†์Œ.

๐ŸŸก CSS์˜ ๋ฌธ์ œ์ 

  • ๋ชจ๋“  CSS๋Š” ์ „์—ญ๋ฒ”์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ ์šฉ๋˜๋ฏ€๋กœ, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์š”์†Œ๋“ค์˜ ์Šคํƒ€์ผ๋ง์— ์„œ๋กœ ๊ฐ„์„ญ ๋ฐ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • CSSํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ €์žฅํ•œ ํ›„ ์—ฐ๊ฒฐํ•˜์—ฌ๋„ ๊ฐ๊ฐ์˜ CSS ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ธ html์—์„œ๋Š” ๋ชจ๋“  ์Šคํƒ€์ผ๋ง์ด ๋™์ผํ•œ ๋ฒ”์œ„์•ˆ์— ์กด์žฌํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ํฐ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.
  • ์›น์‚ฌ์ดํŠธ๊ฐ€ ์ ์  ๋ณต์žกํ•˜๊ฒŒ ์ œ์ž‘๋˜๋ฉด์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•œ CSS์ž‘์„ฑ์ด ์–ด๋ ค์›Œ์กŒ๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 'CSS๋ฐฉ๋ฒ•๋ก ' ์ด ๋‚˜์˜ค๊ธฐ ์‹œ์ž‘ํ•˜์˜€๋‹ค.

๐ŸŸ  OOCSS

  • 'Object Oriected CSS'์˜ ์ค„์ž„๋ง๋กœ '๊ฐ์ฒด์ง€ํ–ฅ CSS'๋ผ๊ณ ๋„ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์Œ.
  • Nicole Sullivan(๋‹ˆ์ฝœ ์„ค๋ฆฌ๋ฐ˜)์ด ์ œ์ฐฝ.
์ฃผ์š” ๋ฐœ์ƒ
  1. ๋ ˆ๊ณ ์™€ ๊ฐ™์ด ์ž์œ ๋กœ์šด ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ์˜ ์ง‘ํ•ฉ์„ ๋งŒ๋“ ๋‹ค.
  2. ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์กฐํ•ฉํ•ด ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ ๋‹ค.
  3. ์ด ๊ฒฝ์šฐ ์‹ ๊ทœ ํŽ˜์ด์ง€ ์ œ์ž‘์‹œ์—๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€์ ์ธ CSS๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Œ.

๐Ÿ”ธ ๋ ˆ๊ณ ์™€ ๊ฐ™์€ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ 2๊ฐ€์ง€ ์›์น™ ๐Ÿ”ธ

  1. Structure(๊ตฌ์กฐ)์™€ Skin(ํ™”๋ฉด)์„ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • Structure(๊ตฌ์กฐ) : width, height, padding, margin ๋“ฑ์ด ์žˆ๋‹ค.
  • Skin(ํ™”๋ฉด) : color, font, background, box-shadow ๋“ฑ์ด ์žˆ๋‹ค.
  1. Container(์ปจํ…Œ์ด๋„ˆ)์™€ Content(์ฝ˜ํ…์ธ )๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • Container๋Š” '์˜์—ญ', Content๋Š” '๋ชจ๋“ˆ'
  • ํŠน์ •ํ•œ ์ฝ˜ํ…์ธ ๋Š” ์˜์—ญ์— ์ง€๋‚˜์น˜๊ฒŒ ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค = ๋ชจ๋“ˆ์€ ๊ฐ€๋Šฅํ•œ ํŠน์ •ํ•œ ์˜์—ญ์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

๐Ÿ”ธ ๊ฒฐ๋ก  ๐Ÿ”ธ

  • OOCSS์˜ ์—ญ์‚ฌ๋Š” ๋งค์šฐ ๊ธธ๊ณ , ๋ช…ํ™•ํ•˜๊ฒŒ ๊ทœ์น™์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ๋„ ๋งŽ์ง€๋Š” ์•Š์Œ.
  • ๋‹ค๋ฅธ CSS๋ฐฉ๋ฒ•๋ก ๋“ค๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” OOCSS๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๊ฐœ์„ ํ•œ ๊ฒƒ์ž„.
  • ํ˜„์žฌ OOCSS ํ•œ ๊ฐ€์ง€๋กœ CSS์„ค๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ํ˜„์‹ค์ ์ด์ง€ ์•Š์Œ.

๐Ÿ”ต SMACSS

  • 'Scalable and Modular Architecture for CSS'์˜ ์ค„์ž„๋ง.
  • Jonathan Snook(์กฐ๋‚˜๋‹จ ์Šค๋ˆ…)์ด ์ œ์ฐฝ
  • CSS์ฝ”๋“œ๋ฅผ ๊ฐ๊ฐ์˜ ์—ญํ• ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•œ ๊ฒƒ์ด ํŠน์ง•(base,layout,module,state,theme)
1. Base(๋ฒ ์ด์Šค) ๊ทœ์น™
  • ํ”„๋กœ์ ํŠธ์˜ ํ‘œ์ค€ ์Šคํƒ€์ผ ์ •์˜(๋ฐฐ๊ฒฝ ์ƒ‰ ๋“ฑ ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ)
  • Reset CSS / Nomalize CSS ์ ์šฉ.

โ€ฃ Reset CSS๋ž€?

  • ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์˜ ๋‚ด์žฅ ์Šคํƒ€์ผ์„ ์—†์• ๋Š” ๊ธฐ๋ฒ•์œผ๋กœ, ์•„๋ฌด๋Ÿฐ ์Šคํƒ€์ผ์ด ์—†๋Š” ์ƒํƒœ์—์„œ ์Šคํƒ€์ผ๋ง์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋จ. h1 ~ h6, p, em ๋“ฑ ๊ฐ ํƒœ๊ทธ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์Šคํƒ€์ผ์„ ๋ชจ๋‘ ์—†์•ค๋‹ค.
  • ๊ฐ ๋ธŒ๋ผ์šฐ์ € ๋ณ„ ๋ฒ„๊ทธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋‚˜, ์—…๋ฐ์ดํŠธ ๋ถˆํ•„์š”.

โ€ฃ Nomalize CSS๋ž€?

  • ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋™๋“ฑํ•œ ์Šคํƒ€์ผ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ•. Reset CSS์™€๋Š” ๋‹ฌ๋ฆฌ ๊ธฐ์กด ์Šคํƒ€์ผ์€ ์œ ์ง€ํ•˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ๋ณ„ ๋‹ค๋ฅธ ์Šคํƒ€์ผ๋งŒ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์‹.
  • ๋ธŒ๋ผ์šฐ์ €์˜ ์—…๋ฐ์ดํŠธ์— ๋”ฐ๋ผ ์ƒˆ๋กญ๊ฒŒ ์ ์šฉ๋˜๋Š” ๋‚ด์žฅ์Šคํƒ€์ผ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊พธ์ค€ํ•œ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ํ•„์š”.
2. Layout(๋ ˆ์ด์•„์›ƒ) ๊ทœ์น™
  • ํ—ค๋”์˜์—ญ, ๋ฉ”์ธ์˜์—ญ, ์‚ฌ์ด๋“œ๋ฐ”, ํ‘ธํ„ฐ ๋“ฑ ์›น์‚ฌ์ดํŠธ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ํฐ module์— ๊ด€ํ•œ ๊ทœ์น™.
  • ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ํŠน์ • ํŽ˜์ด์ง€์—์„œ ํ•œ ์ฐจ๋ก€๋งŒ ์‚ฌ์šฉ ๋˜๋ฏ€๋กœ id selector ๋ฅผ ํ™œ์šฉํ•œ ์Šคํƒ€์ผ๋ง์„ ํ—ˆ์šฉํ•จ.
  • ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ์—๋Š” class selector๋ฅผ ์ด์šฉ.
3. Module(๋ชจ๋“ˆ) ๊ทœ์น™
  • Module์€ Title, Button, Card, Nav ๋“ฑ ์ผ๋ฐ˜์ ์ธ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ„.
  • ๋ชจ๋“  Module์€ ๋ ˆ์ด์•„์›ƒ ๊ทœ์น™ ์•ˆ์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ์„ ๊ฐ€์ •ํ•œ๋‹ค.
  • ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ์— ์‚ฝ์ž…ํ•˜๋”๋ผ๋„ ํ˜•ํƒœ๊ฐ€ ํ‹€์–ด์ง€๊ฑฐ๋‚˜ ๋‹ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ. (= ํŠน์ • ์ฝ˜ํ…์ธ ์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ์ž‘์„ฑํ•ด์•ผํ•จ.)
4. State(์ƒํƒœ) ๊ทœ์น™
  • ๊ธฐ์กด ์Šคํƒ€์ผ์„ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ธฐ์กด ์Šคํƒ€์ผ์„ ์™„์ „ํžˆ ๋ฎ์–ด์”Œ์›Œ State ์Šคํƒ€์ผ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” !important ์‚ฌ์šฉ๋„ ๊ถŒ์žฅํ•จ.
  • State๋Š” Layout ๋˜๋Š” Module์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Œ.
  • State๊ทœ์น™์— ๋”ฐ๋ฅธ class์ด๋ฆ„์€ ๋ชจ๋‘ is- ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ ํ‘œํ˜„.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์˜์กด
5. Theme(ํ…Œ๋งˆ) ๊ทœ์น™
  • ์‚ฌ์ดํŠธ ๋‚ด ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ์ƒ‰์ƒ, ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ผ์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ.
  • ๊ธฐ์กด์˜ ๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ๋ง์ด ๋ฎ์–ด์“ฐ๊ธฐ์˜ ๋Œ€์ƒ. ( ex / ๋‹คํฌ๋ชจ๋“œ, ํ…Œ๋งˆ์ปฌ๋Ÿฌ ๋ณ€๊ฒฝ ๋“ฑ)
  • Theme๊ทœ์น™์— ๋”ฐ๋ฅธ class์ด๋ฆ„์€ ๋ชจ๋‘ theme- ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ.

๐Ÿ”น ๊ฒฐ๋ก  ๐Ÿ”น

  • ํ”„๋กœ์ ํŠธ์—์„œ ๊ณ ๋ คํ•ด์•ผํ•  ๋Œ€๋ถ€๋ถ„์˜ CSS๊ทœ์น™์„ ํฌํ•จ
  • ๊ฐ ๊ทœ์น™์ด ์—„๊ฒฉํ•˜์ง€ ์•Š์•„ ์œ ์—ฐํ•˜๋‚˜, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š” ์ง€๋‚˜์น˜๊ฒŒ ์œ ์—ฐํ•œ ๊ทœ์น™์œผ๋กœ ์ธํ•ด ์‹ค์ œ ์ฝ”๋“œ์˜ ์ง€์นจ์œผ๋กœ ์‚ผ๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ.
  • Module๊ทœ์น™์— OOCSS๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ BEM๊ทœ์น™์„ ์ผ๋ถ€ ์ ์šฉํ•˜๋Š” ๋“ฑ ๋‹ค๋ฅธ CSS ์„ค๊ณ„๊ธฐ๋ฒ•๊ณผ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ.

์ถœ์ฒ˜ : ์šฐ์•„ํ•œํ…Œํฌ - ๐Ÿ‘‰๐Ÿป ๋™๋™์˜ CSS๋ฐฉ๋ฒ•๋ก (์˜์ƒ)

Previous Post

CSS๋ฐฉ๋ฒ•๋ก (BEM ๋ฐ ๊ธฐํƒ€)

CSS๋ฐฉ๋ฒ•๋ก (BEM ๋ฐ ๊ธฐํƒ€)
Next Post

Github ์‚ฌ์šฉ๋ฒ•(1)

Github ์‚ฌ์šฉ๋ฒ•(1)

ยฉ 2023 Haeun Choi

  • Github
  • Contact