///
Search
๐ŸŽจ

CSS: Layout, Box Model, Position, FlexBox

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์— ๋Œ€ํ•ด ํ•™์Šตํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์š”!

์ฐธ๊ณ  ๋งํฌ

โ€ข
โ€ข
โ€ข
โ€ข