Layout๋ฅผ ์์์ผ ํ๋ ์ด์
ํ๋ฉด์ ๊ตฌ์ฑ์ ์ํ๋ ๋๋ก ๋ฐฐ์นํ๊ณ ์ถ๋ค๋ฉด?
์นํ์ด์ง์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ CSS ์ง์์ ์ฐ์ ์ ์ผ๋ก ์๊ณ ์ถ๋ค๋ฉด?
์ด ๋ฌธ์๋ฅผ ๋ณด๊ณ ๋๋ฉด
Box Model, Position, FlexBox์ ๋ํด์ ์ดํดํ๊ณ , ๋ ์ด์์์ ๊ตฌ์ฑํด๋ณผ ์ ์๋ค.
๋ ์ด์์
css ํ๋กํผํฐ๋ ์ฝ 500๊ฐ๊ฐ ๋์ ์ ๋๋ก ๊ต์ฅํ ๋ฐฉ๋ํฉ๋๋ค. ๊ทธ css ํ๋กํผํฐ๋ฅผ ์ฒ์๋ถํฐ ๋ชจ๋ ์๋ ค๊ณ ํ๋ฉด ๋์ด ์์ ํ
๋ฐ์. ๋ญ๋ ์ง ์ด๋ ค์ธ ์๋ก ์ ๋ต์ด ํ์ํฉ๋๋ค. ์์ฃผ ์ฌ์ฉํ๋ css ํ๋กํผํฐ๋ค์ด ์ด๋ค ๊ฒ์ธ์ง ์๋ค๋ฉด ํจ์ฌ ๋ช
ํํด์ง๊ฒ ์ฃ ?
https://chromestatus.com/metrics/css/popularity ์ด ๋งํฌ๋ ํฌ๋กฌ์์ ์ ๊ณตํ๋ ํฌ๋กฌ์์ ์์ฃผ ์ฌ์ฉ๋๋ css ํ๋กํผํฐ ๋ญํน์ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค. ๊ฐ์ฅ ์์์ ์๋ ๊ฒ๋ค์ ๋ ์ด์์๊ณผ ๊ด๋ จ๋ ๊ฐ์
๋๋ค. ๋ ์ด์์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด์๊ฒ ๊พธ๋ฉฐ์ฃผ๋๊ฑด ์ฌ๋ฌ ๋์์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ๋ฅํ์ง๋ง, ๋ ์ด์์์ ์ง์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์
๋๋ค.
Box Model
๋ ์ด์์์ ์ด๋ฃจ๋ 2๊ฐ์ง ๊ธฐ๋ณธ ๊ฐ๋
์ ํฌ๊ธฐ์ ์์น์
๋๋ค.
์ด ํฌ๊ธฐ๋ฅผ ์ ํ๋๋ฐ ์ค์ํ ๊ฐ๋
์ด Box Model์
๋๋ค. ๋ชจ๋ HTML์ element๋ ์ฌ๊ฐํ ๋ฐ์ค์ ํํ๋ฅผ ๊ฐ์ง๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ ๊ฐ์ง๋๋ค.
์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์์์๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ค๋ก ์ด๋ฃจ์ด์ง ์๋ฆฌ๋จผํธ๊ฐ ๊ตฌ์ฑ
๋ณดํต css์์ box model๋ฅผ ๋ค๋ฃฐ ๋ ๊ณ ๋ฏผ์ด ๋๋ ์ง์ ์ ๋ฐ๋ก ๊ฒน์ณ์ง๋ ๋ถ๋ถ์
๋๋ค.
์ธ์ ํ ๋ ๊ฐ์ block element๊ฐ ์๋ก ๋ค๋ฅธ margin์ ๊ฐ์ง๊ณ ์๋ค๋ฉด?
ํฐ ๊ฐ์ ๊ฐ์ง margin๊ฐ์ด ๊ณต์ ๋์ด ์ฌ์ฉ๋จ
10px + 20px = 20px
์ธ์ ํ ๋ ๊ฐ์ inline element์ margin์?
๊ฐ๊ฐ์ margin ์ ํฉ์ผ๋ก ํํ๋๋ค.
10px + 20px = 30px
margin, padding์ ๋ค์ํ ์ถ์ฝํ๊ธฐ๋ฒ
margin : 0px 0px 0px 10px; (top , right , bottom, left)
margin : 10px; (๋ค๊ฐ์ ๋ถ๋ฉด์ด ๋ชจ๋ 10px)
margin : 10px 15px; (top, bottom ์ 10px , right, left๋ 15px)
Plain Text
๋ณต์ฌ
์ค์ ๋ ์ด์์์ ๋ง๋ค ๋, ๋ณธ์ธ์ด ์ํ๋ ๋๋ก ๋์ํ์ง ์๋๋ค๋ฉด, ๊ผญ MDN์ ํตํด ํด๋น ์์ฑ์ ๋ํด์ ํ์ตํด๋ณด๊ณ ๋์ด๊ฐ์ฃผ์ธ์.
Position
position์ element๋ฅผ ์ด๋ป๊ฒ ๋ฐฐ์นํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ํฌ๊ฒ 4๊ฐ์ง์ ์ํ๊ฐ ์์ต๋๋ค.
โข
static
โข
absolute
โข
relative
โข
fixed
1) static
๋ชจ๋ element ์ default ๊ฐ์
๋๋ค. ๋ฌธ์์ ํ๋ฆ๋๋ก ์์น๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค.
2) relative
์๋ ์์น์ ์๋์ ์ธ ์์น
relative ์์ฑ์ ์ค์ ์ฌ์ฉ์,
absolute์์ฑ์ ๊ฐ์ง ์์์ ๊ธฐ์ค์ ์ผ๋ก ๋ ๋ง์ด ํ์ฉ๋ฉ๋๋ค.
3) absolute
์ ๋์ ์ธ ์์น์ด๋ฉฐ ๋ฌธ์์ ํ๋ฆ์์ ์ ์ธ.
๊ธฐ์ค์ ์ ์์element ์ค static ์์ฑ์ด ์๋ element
์์น์ค์ ์ top, bottom ์ค ํ ๊ฐ์ left, right ์ค ํ๊ฐ๋ฅผ ์ ํํด์ ์ค์
4) fixed
์ง์ ํ ์ ๋์ ์ธ ์์น๋ฅผ ์ฐจ์ง
๋ฌธ์์ ํ๋ฆ์์ ์ ์ธ.
viewport(๋ณด์ด๋ ํ๋ฉด)๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น๊ฐ์ ๊ฐ์ง
Flex Box
๋๋ถ๋ถ์ ์นํ์ด์ง์ ๋ ์ด์์ ๊ตฌ์ฑ์ ์-์๋์ ์์ง ๊ตฌ์ฑ์
๋๋ค. ๋ ์ด์์์ ๊ตฌ์ฑํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์์๋ค์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋ก ํํ๋ก ํ์๋๋ฉฐ ์ด๋ ์์์ ์๋๋ก ์์ด๊ธฐ ๋๋ฌธ์ ์์ง ๊ตฌ์ฑ์ ์๋์ ์ผ๋ก ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
ํ์ง๋ง ์ํ๊ตฌ์ฑ์ ๊ฒฝ์ฐ๋ ์ํฉ์ด ์กฐ๊ธ ๋ค๋ฆ
๋๋ค.
๋ฌธ์ ๋ ์ํ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ์์ฑ์ด ๋ช
ํํ์ง ์์๊ธฐ ๋๋ฌธ์ธ๋ฐ, ๊ทธ๋์ ๋ง์ ๊ฒฝ์ฐ <table>๋ float ํน์ inline-block ๋ฑ์ ๋์์ ๋ฐ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ๋ฒ๋ค์ ๋๋ถ๋ถ ์ํ ๋ ์ด์์ ๊ตฌ์ฑ์ ์ฐจ์ ์ฑ
์ด์์ต๋๋ค. ๊ทธ๋์ ๋ง์ ์์ง๋์ด๋ค์ ์ฐ๊ตฌ ๊ฒฐ๊ณผ Flex(Flexible Box)๋ผ๋ ๋ช
ํํ ๊ฐ๋
์ ์ด์ฉํ์ฌ ๋ ์ด์์์ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์์์ ๋ ์ด์์ ๊ตฌ์ฑ์ ์ํด FlexBox๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
Flex๋ ์์์ ํฌ๊ธฐ๊ฐ ๋ถ๋ถ๋ช
ํ๊ฑฐ๋ ๋์ ์ธ ๊ฒฝ์ฐ์๋, ๊ฐ ์์๋ฅผ ์ ๋ ฌํ ์ ์๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ฅํ๋ฉด ํ๋ฉด์ ui์ ์ค์ ํ ๋ FlexBox๋ก ๊ตฌ์ฑํ๋ ์ฐ์ต ํด๋ณด์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
FlexBox์ ๋ํ ์ดํด๋ฅผ ๋๊ธฐ ์ํ ์๋น์ค๋ ์์ต๋๋ค.
์ฌ์ดํธ์์ ๊ฒ์์ฒ๋ผ flex layout์ ๋ํด ํ์ตํด๋ณผ ์ ์์ด์!
์ฐธ๊ณ ๋งํฌ
โข
โข
โข
โข