๐ก CSS ์ ์์ ์ญํ
- Html๋ฌธ์์ ์คํ์ผ์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ธ์ด
- ๋ฌธ์์ ๊ตฌ์กฐ์ ์คํ์ผ์ ๋ณ๋๋ก ๋ถ๋ฆฌํ์ฌ html์ ๊ฐ ์์๋ฅผ ๊พธ๋ฏธ๋ ์ญํ ์ ํ๋ค.
๐ก CSS ๋ฑ์ฅ ์ด์
- ๊ฐ ํ๊ทธ๋ง๋ค ์ง์ style๋ก ์คํ์ผ์ ์ง์ ํด์ผํ์.
- ๊ฐ์ ์คํ์ผ ์์๋ฅผ ์ฌ๋ฌ ํ์ด์ง์์ ์ค๋ณต ์ฌ์ฉํ๋ฉด, ํ๋๋ฅผ ์์ ํ ๋๋ง๋ค ๋ชจ๋ ์์์ ๋ฐ๋ณต ์์ ํ์.
- Html์ ๋ฌธ์๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ฏ๋ก, ์ง์ ์คํ์ผ์ ์ง์ ํ๋ ๊ฒ์ ๋ฐ๋์งํ๋ค๊ณ ๋ณผ ์ ์์.
๐ก CSS์ ๋ฌธ์ ์
- ๋ชจ๋ CSS๋ ์ ์ญ๋ฒ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์ฉ๋๋ฏ๋ก, ๊ฐ๊ธฐ ๋ค๋ฅธ ์์๋ค์ ์คํ์ผ๋ง์ ์๋ก ๊ฐ์ญ ๋ฐ ์ํฅ์ ์ค ์ ์๋ค.
- CSSํ์ผ์ ๋ถ๋ฆฌํ์ฌ ์ ์ฅํ ํ ์ฐ๊ฒฐํ์ฌ๋ ๊ฐ๊ฐ์ CSS ํ์ผ์ ์ฝ์ด๋ค์ธ html์์๋ ๋ชจ๋ ์คํ์ผ๋ง์ด ๋์ผํ ๋ฒ์์์ ์กด์ฌํ๊ฒ ๋๋ฏ๋ก ํฐ ์๋ฏธ๊ฐ ์๋ค.
- ์น์ฌ์ดํธ๊ฐ ์ ์ ๋ณต์กํ๊ฒ ์ ์๋๋ฉด์ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ CSS์์ฑ์ด ์ด๋ ค์์ก๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 'CSS๋ฐฉ๋ฒ๋ก ' ์ด ๋์ค๊ธฐ ์์ํ์๋ค.
๐ OOCSS
- 'Object Oriected CSS'์ ์ค์๋ง๋ก '๊ฐ์ฒด์งํฅ CSS'๋ผ๊ณ ๋ ๋ถ๋ฅผ ์ ์์.
- Nicole Sullivan(๋์ฝ ์ค๋ฆฌ๋ฐ)์ด ์ ์ฐฝ.
์ฃผ์ ๋ฐ์
- ๋ ๊ณ ์ ๊ฐ์ด ์์ ๋ก์ด ์กฐํฉ์ด ๊ฐ๋ฅํ ๋ชจ๋์ ์งํฉ์ ๋ง๋ ๋ค.
- ํด๋น ๋ชจ๋์ ์กฐํฉํด ์๋ก์ด ํ์ด์ง๋ฅผ ๋ง๋ ๋ค.
- ์ด ๊ฒฝ์ฐ ์ ๊ท ํ์ด์ง ์ ์์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ถ๊ฐ์ ์ธ CSS๋ฅผ ๋ง๋ค ํ์๊ฐ ์์.
๐ธ ๋ ๊ณ ์ ๊ฐ์ ๋ชจ๋์ ๋ง๋ค๊ธฐ ์ํ 2๊ฐ์ง ์์น ๐ธ
- Structure(๊ตฌ์กฐ)์ Skin(ํ๋ฉด)์ ๋ถ๋ฆฌํ๋ค.
- Structure(๊ตฌ์กฐ) : width, height, padding, margin ๋ฑ์ด ์๋ค.
- Skin(ํ๋ฉด) : color, font, background, box-shadow ๋ฑ์ด ์๋ค.
- 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๋ฐฉ๋ฒ๋ก (์์)

