[Front-end๐ฆ] #11 1๋ง ์๊ฐ์ ๋ฒ์น + ๋ฐ์ํ
1. 1๋ง ์๊ฐ์ ๋ฒ์น
์ด์ ์งํํ ์์ ์์ @media ๋ฅผ ์ด์ฉํด์ ๋ชจ๋ฐ์ผ ์ฌ์ด์ฆ์ ๋ง์ถ ํ๋ฉด ๊ตฌํ์ ๋ชปํ๊ณ ๋๋ด์, ํด๋น ๋ถ๋ถ๋ถํฐ ์งํํ๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ์ ์ฝ๋์ ๊ด๋ จ๋ ๋ด์ฉ์ #10์ ์ ๋ถ ์ ๋ฆฌํด ๋์๋ค.
1-1. ๊ฐ์ด๋ ๋ฐ๋ผ๊ฐ๊ธฐ
์ค๋๋ ํจ๊ป ์ฒ์๋ถํฐ ํด๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
์ปดํจํฐ ํ๋ฉด์ ๋ง์ถฐ์ ๋์์ธ ์์๋ค ํฝ์
์ ์ ํํ ๋ง์ถ๊ณ ,
@media ํ๊ทธ๋ฅผ ์ด์ฉํด์ max-width: 360px ์ ๋ง์ถ ๋ฐ์ํ ํ์ด์ง๋ฅผ ์๋ณด์๋ค.
tipsโจ
background-position ์ผ๋ก background-image์ ์์น๋ฅผ ์กฐ์ ํ ์ ์๋ค. @media ํ๊ทธ๋ฅผ ๋งจ ๋ค๋ก ๋ฃ์ด์ผ ๋์ํ๊ธฐ ํธํ๋ค.
1-2. develop
๋ณต์ต ๊ฒธ ๋งํฌ์ ๋ถํฐ CSS๊น์ง ํผ์ ๋ค์ ์งํํด ๋ดค๋๋ ๋ฒํผ ์์ด ์๋ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ์์๋๋ฐ, ์์๋ 1๋ฒ์ฒ๋ผ ์ฐ๊ณ , ๋ค์๋ 2๋ฒ์ฒ๋ผ ์ผ๋๋ ์ ์๊ฐ ๋ฎ์์ ์๋จนํ๋๊ฑฐ์๋ค.
1. ๋ถ๋ชจ ์์ { /* ๊ณตํต ์์ฑ */ }
2. ์์ { /* ๋ค๋ฅธ ์์ฑ */ }
์ค๋ ์์ ๊น์ง ๋ฃ๊ณ ๋์์ธ์ ํฝ์ ๋จ์๋ก ๋ง์ถ๋ ๊ฒ๊น์ง๋ ์ค๋ฌด์ ๋ฒ์์ธ ๊ฒ ๊ฐ์์ ์ ์ธํ๊ณ , ๋ ๋ฐ์ํ์ผ๋ก ๋ง๋ค์ด๋ณด๋ ค๊ณ ํ์ผ๋ ์ค๋ฌด์์๋ ์ ์์ฐ์ธ๋ค๊ณ ํ์ฌ ๋ค๋ฅธ ๊ณต๋ถ๋ฅผ ํ๋๊ฒ ๋์ ๊ฒ ๊ฐ์์ ๋์ค์ javascript๋ฅผ ๋ฐฐ์ด ํ์ ๋์ํ๊ฒ develop ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค!!!
2. CSS ์ค๊ณ ๊ธฐ๋ฒ
2-1. OOCSS (Object-Oriented)
๊ฐ์ฒด ์งํฅ - ๊ฐ์ฒด์ data + ๊ธฐ๋ฅ
- ๊ตฌ์กฐ(width, height, padding, margin ...)์ ์คํจ(font, color, ...)์ ๋ถ๋ฆฌ. ๊ตฌ์กฐ๊ฐ ์ฌํ์ฉ์ด ๊ฐ๋ฅํ๋๋ก.
- container ์ contents ๋ถ๋ฆฌ : content style์ด container์ ์ข ์๋์ง ์๋๋ก.
2-2. SMACSS (Scalable and Modular Architecture for CSS)
SMACSS : CSS๋ฅผ ์ญํ ๋ณ๋ก ๋ถ๋ฆฌ
|
1. ๋ฒ ์ด์ค : ํ์ค ์คํ์ผ - ๊ณตํต์ ์ธ font, img, reset, ... style
2. ๋ ์ด์์ : header, main, footer, sidebar ๊ฐ์ ํฐ ํ์ ๊ตฌ์ฑํ๋ ๋ชจ๋์ ๋ํ ๊ท์น. id๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
3. ๋ชจ๋ : layout ์์ ๋ชจ๋ ์์๋ค. id๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๊ณ , ์์ ์ ํ์๋ ์ต์ํ(์์ ์์๋ ๊ฐ๋ฅ). ๋น์ทํ ๋ชจ๋์์๋ ๋ชจ์์ด ๋ค๋ฅด๋ฉด subclass๋ฅผ ๋ง๋ ๋ค. subclass๋ ํ๋ฒ ์ ์ฉ๋๋ฉด ๋ฐ๋์ง ์์.<!-- subclass: btn-long, btn-short --> <a href="" class="btn btn-long">์์ด๋/๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ</a> <a href="" class="btn btn-short">๋ก๊ทธ์ธ</a>
4. ์คํ ์ดํธ : ๊ธฐ์กด ์คํ์ผ์ ๋ฎ์ด์ฐ๊ฑฐ๋ ํ์ฅํ๋๋ฐ ์ฌ์ฉ. javascript๋ฅผ ๋ฃ์๋ค ๋บ๋ค ํ ์ ์๋ค. ๋ ์ด์์, ๋ชจ๋์๋ ๋ถ์ผ ์ ์์. class ์ด๋ฆ์ is ์ ๋์ฌ ์ฌ์ฉ.
.is-active { background-color: bisque; } .is-active a { /* ์ด๋ฏธ ํ์ฑํ ๋ ํญ์ ๋ ํด๋ฆญํ์ง ์๊ฒ */ pointer-events: none; color: tomato; }
5. ํ ๋ง : ์ฌ์ดํธ์ ๋๋์ ์ ๋ฌํ๋ ์ด๋ฏธ์ง, ์์
.mod { border: blue; } /* SMACSS theme */ .mod { border: solid 1px; } /* module */
2-3. BEM (Block, Element, Modifier)
id, ์์ ์ ํ์ ์ฐ์ง ๋ง์. - ๊ฐ์ค์น ๊ณ์ฐ์ ์ํํ๊ฒ ํ๊ธฐ ์ํจ.
block : ์ด๋์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ - class ์ด๋ฆ ๋ช ํํ๊ฒ,
kebab-case
element : block์ ๊ตฌ์ฑํ๋ ์์ -error__link
modifier : block์ด๋ element์ ๋ชจ์ต์ด๋ ์ํ ๋๋ ์์ง์ (์์๊ฐ ํ์ฑํ๋ ์ํ, ์ฌ์ด์ฆ, ์ปฌ๋ฌ ๋ฑ๋ฑ) -btn-move btn-move--size-small
๋ ๋ฒ์งธ ํด๋์ค ์ด๋ฆ์ผ๋ก -- ์ฌ์ฉ!!
3. ๋ก๊ทธ์ธ ์ฐฝ ๋งํฌ์
border-top, bottom ์์ด ์ด์ํด์ ๋ค์ ํ์ธํด๋ดค๋๋ฐ, ์์งค ์บก์ณ์ ๋ฌธ์ ๋ค.
์ค๋์ ๊ณผ์ ๋ 2๋ฒ์์ ๋ฐฐ์ด CSS ์ค๊ณ ๊ท์น, naming ์ ์ ์ฉํด์ ๋ก๊ทธ์ธ ์ฐฝ์ ๋ง๋ค์ด๋ณด๋ ๊ฒ ์ด์๋ค. 5์๋ถํฐ ์งํํ๋๋ฐ, ์์ ๋๋๊ณ ๋ ์์ฌ๊ณ ... 8์๊น์ง ๋ฌ๋ ค์ ๋๋๋ค.
BEM naming์ ์ ์ฉํด๋ดค๋๋ฐ, ๋๋ฌด.... ํด๋์ค ์ด๋ฆ์ด ๊ธธ์ด์..... ํ๋ํ๋ ์น๋ค๊ฐ ์คํ ๋ ๊ฒ ๊ฐ์์ ๊ทธ๋ฅ html์ ์ ์จ๋๊ณ ํ๋ฉด ๋ถํ ํด์ ๋ณต์ฌํ๋ฉด์ ์ ์ฉํ๋ค. ํ์คํ ๋ถ๋ชจ๋ฅผ 2~3๊ฐ depth๋ ๋ช
์ ์ํด๋ ๋๋ ๊ฒ์ ํธํ๋ค. ์ด๋ฏธ ์ด๋ฆ์ ๋ค ๋ค์ด๊ฐ์ ๊ทธ๊ฑฐ๋ ๊ทธ๊ฑฐ๋์ง๋ง
์ฝ๋ฉ์ด ์ฌ๋ฐ์ ๋ ์ฌ๋ผ๊ฐ๋ ๋ฌด์์ ๊ฒฝ์ง์ ์ด๋ฅด๋ฌ์ ๋ด๊ฐ ๋์ ์ํผ์ด๋ผ๊ณ ํ ์ ์๋ ๋
ธ๋ ์ํ์ด๋๊ณ ์ฝ๋ฉํ๋์ง๋ ๋ชจ๋ฅด๊ณ ํ๋ค.
<๋ฌธ์ ์ >
- ๐ js๋ฅผ ์๋ฐฐ์ ๊ธฐ ๋๋ฌธ์ :focus ๋ฅผ ์ด์ฉํด์ ์คํ์ผ์ด ์ ์ ์ฉ๋๋์ง๋ง ์ํํด ๋ณด์๋ค. ์ผ๋ฅธ ๋ฐฐ์์ ๋นจ๊ฐ ๊ธ์จ๊ฐ ์ ๋๋ก ๋์ํ๊ฒ ํ๊ณ ์ถ๋ค.
- โ๏ธ ํฐํธ ์ ์ฉ์ด ์๋จ
[์ด์ ](https://spoqa.github.io/2017/02/15/using-shs-as-webfonts.html) : ๋ฌด๋ฃ MDN์ ์ฌ์ฉํด์ ๊ต์ฅํ ๋๋ฆฌ๋ค๊ณ ํ๋ค. ๋ ์ด์์ ๊ตฌ์ถ์ ๊ณต๋ถํ๋๊ฒ ๋ชฉ์ ์ด๋ผ ์ผ๋จ ๋ค๋ก ๋ฏธ๋ค๋ค.
- ๐ SMACSS ๋ฅผ ์ ์ฉํ๊ณ ์ถ์๋๋ฐ, ์ด๋ค ๊ฒ์ด ์ด๋ค ์์ฑ์ธ์ง ๋ชจ๋ฅด๋ ์ํ๋ก ์ฝ๋๋ฅผ ์ชผ๊ฐ๋ฉด ๋์ค์ ๋ณด๊ธฐ ํท๊ฐ๋ฆด ๊ฒ ๊ฐ๋ค๋ ๋๋์ด ๋ค์๋ค. ์ผ๋จ SMACSS ๋ฅผ ์กฐ๊ธ ๋ ๊ณต๋ถํด์ผ๊ฒ ๋ค.
3. ๋๋์
- ํฝ์ ์ ํํ๊ฒ ๋ง์ถ๋ ๊ฑด ์ ๋ง.. ํ๋ค์๋ค. ์ด๋ค ์์๋ฅผ ์ด์ฉํด์ ํ ์ง๋ ์๋๋ฐ 1~2px ๋ ๋ฐ๊ณ ํ๋ ๊ณผ์ ์ด ๋๋ฌด... ํ๋ค์๋ค. ํฌ๋กฌ extension Perfect Pixel๋ก ์คํฌ๋ฆฐ์ท ํด์ ํฌ๋ช ์ผ๋ก ๋์๋๊ณ ๋น๊ตํ๋ฉด์ ๋ง์ถ์๋๋ฐ ์ด๊ฑด ๋ฐฐ์ฐ๋ ๊ณผ์ ๋์์ ๋ณต์ตํ์ง ์์๋ ๋ ๊ฒ ๊ฐ๋ค.
- ๋ฐฑ์๋์ ์ฒ ํ์ด ๋์ด์์ ๋ง๋ค์ด์ง๊ฒ react.js, angular.js ๋ผ๊ณ ํ์ จ๋๋ฐ, ์ฒซ ๋ ๋ค์ '๋ฐ์ดํฐ'๊ฐ ๊ฐ์ฅ ์ค์ํ๊ณ ๊ทธ ๋ฐ์ดํธ์ ํ๋ฆ์ด ํ๋ก ํธ๋ก ๋์ด์์ ํ๋ก ํธ๊ฐ ์ ๋งํ๋ค๋ ์ด์ผ๊ธฐ์ ๋์ผํด์ ๋๋๋ค.
- ๊ฒฝ๋ ฅ ๊ณต๊ณ ์ ์ง์ํด๋ ๋๋๊ณ ๋ฌผ์ด๋ดค๋ค๊ฐ
๋ด๊ฐ ์์์ฌ๋ฆฐ ์์ ๊ณต์ฑ์ฉ ๊ณต๊ณ ๋ถ์์ ์๊ฐ์ ๊ฐ์ก๋๋ฐ, ๋ด๊ฐ ์ค๋น๊ฐ ๋๋ ์๋๋๋ ๋ด๊ฐ ๊ฒฐ์ ํ๋๊ฒ ์๋๋ค!!! ๋ผ๋ ๋ง์ด ๋๋ฌด ์ธ์๊น์๋ค. ์๊ฒฉ ์๊ฑด๊ณผ ์ฐ๋ ์ฌํญ์ด ์ด๋ป๊ฒ ํด์๋๋์ง๊ฐ ๋๋ฌด ์ ๊ธฐํ๋ค. ์ด์ ๋ถํฐ ์ด๋ ฅ์ ์ค๋นํด์ ๋ค ์ธ๊ฑฐ๋ท!!!!
- SMACSS ๊ฐ์ ๊ตฌ์กฐ๋ก ์ ์์๋ฌ์ ๋์ ๊ฒ ์๋ค๋ ์๊ฐ์ด ๋ค๊ธฐ ๋๋ฌธ์ ํ๋ฃจ์ ํ ํ์ด์ง์ฉ ๋ฒ์ญํ๋ฉด์ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค. ๋งค์ผ์ ๋ฌด๋ฆฌ๊ณ ํ ๋ชฉ ์๊ธฐ ์ ์ ๋ด์ผ๊ฒ ๋ค!!!
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([Front-end๐ฆ] #11 1๋ง ์๊ฐ์ ๋ฒ์น + ๋ฐ์ํ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@ddosang/Front-end-11์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค