CSS-flex(๐Ÿ”ฅ)

Taehee Kimยท2022๋…„ 4์›” 13์ผ
0

CSS

๋ชฉ๋ก ๋ณด๊ธฐ
9/15
post-thumbnail

๐Ÿ“Œ flex๋ž€?

flex box์•ˆ์˜ item๋“ค์„ ์ •๋ ฌ ๋ฐ ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•œ ์†์„ฑ
๊ธฐ์กด์˜ float, inline-block์—์„œ flex๋กœ ๋ฐœ์ „!
(IE 11์ด์ƒ๋งŒ ์ง€์›ํ•˜๊ณ  ์žˆ๊ณ , ์•ž์œผ๋กœ flex ์‚ฌ์šฉ์ด ๋” ๋Œ€์ค‘ํ™”๋  ์ˆ˜๋„ ์žˆ๋‹ค!!!!)

๋น„๋ก flex ์‚ฌ์šฉ์ด ๋” ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ๊ทธ๋ž˜๋„ ์•„์ง๊นŒ์ง€ FE ๊ฐœ๋ฐœ์ž๋ผ๋ฉด float๊ณผ inline-block ์„ค์ •์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ต์ˆ™ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค!!! ๐Ÿ‘€


๐Ÿ“Œ flex ๊ตฌ์„ฑ

flex๋Š” ๋ถ€๋ชจ ์š”์†Œ์˜ container์™€ item๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.
flex ์†์„ฑ๋“ค์€ ๋ถ€๋ชจ ์š”์†Œ๋“ค์— ์ ์šฉํ•œ๋‹ค.



๐Ÿ“Œ flex container(๋ถ€๋ชจ)์— ์ ์šฉ๋˜๋Š” ์†์„ฑ

1) display: flex

- width๋Š” ๋‚ด์šฉ๋ฌผ๋งŒํผ, height๋Š” containerํฌ๊ธฐ๋งŒํผ ์ฐจ์ง€


2) flex-direction

- ๊ธฐ๋ณธ ๋ฐฐ์—ด ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•œ๋‹ค.


3) flex-wrap

wrap์œผ๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ์ž์‹์š”์†Œ๊ฐ€ ๋ถ€๋ชจ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ๋” ํฌ๋”๋ผ๋„ container์˜ width๋‚˜ height์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ•์ œ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š๋„๋ก ํ•˜์ž!

- no wrap: item์ด container ๋„˜์–ด๊ฐ
- wrap: ์ค„ ๋ฐ”๊ฟˆ ์ผ์–ด๋‚จ
- wrap-reverse: ์ค„๋ฐ”๊ฟˆ + ์œ„/์•„๋žซ์ค„ ์œ„์น˜ ๋ฐ”๋€œ


๐ŸŒผ ์„ค์ •๊ฐ’ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ: https://codepen.io/enxaneta/full/adLPwv

4) justify-content

- main axis๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐ€๋กœ์ถ•์œผ๋กœ ์ •๋ ฌ

[์„ค์ • ๊ฐ’]
- flex-start: ์ปจํ…Œ์ด๋„ˆ ๋งจ ์œ„์ชฝ ์ƒ๋‹จ
- flex-end: ์ปจํ…Œ์ด๋„ˆ ๋งจ ์•„๋ž˜ ์œ„์น˜
- center: ๊ฐ€์šด๋ฐ ์œ„์น˜
- space-between: ์•„์ดํ…œ๋“ค ์‚ฌ์ด๊ฐ€ ๊ท ์ผํ•˜๊ฒŒ ์œ„์น˜
- space-around: ์•„์ดํ…œ ๋‘˜๋ ˆ๋ฅผ ๊ท ์ผํ•˜๊ฒŒ ์œ„์น˜(์—ฌ๋ฐฑ์˜ ํฌ๊ธฐ๊ฐ€ ๋™์ผํ•˜๊ฒŒ)
- space-evenly: ์•„์ดํ…œ ์‚ฌ์ด์™€ ๋‘˜๋ ˆ ๋ชจ๋‘ ๊ท ์ผํ•˜๊ฒŒ ๋ฐฐ์น˜ํ•˜์ง€๋งŒ, IE์™€ edge์—์„œ๋Š” ์ง€์› X -> ์‚ฌ์šฉ ๊ฑฐ์˜ X


5) align-items

item๋“ค์ด ํ•œ ์ค„๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉ
cross axis๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ˆ˜์ง์ถ• ์ •๋ ฌ
[์„ค์ • ๊ฐ’]
- stretch: ์œ„์•„๋ž˜๋กœ ๊ฝ‰ ์ฐจ๊ฒŒ
- flex-start: ๋งจ์œ„๋กœ
- flex-end: ๋งจ์•„๋ž˜๋กœ
- center: ๊ฐ€์šด๋ฐ ์ •๋ ฌ
- baseline: ํฐํŠธ์˜ baseline์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ

โญ์š”์†Œ์˜ ๊ฐ€์šด๋ฐ ์ •๋ ฌโญ
justify-content: center;
align-items:center;


6) align-content

item๋“ค์ด ์—ฌ๋Ÿฌ ์ค„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉ/ ํ•œ ์ค„์ด๋ฉด ์•„๋ฌด ํšจ๊ณผ X
๊ผญ flex-wrap: wrap;์„ ์„ค์ •

cross axis๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ˆ˜์ง์ถ• ์ •๋ ฌ
[์„ค์ • ๊ฐ’]
- stretch: ์œ„์•„๋ž˜๋กœ ๊ฝ‰ ์ฐจ๊ฒŒ
- flex-start: ๋งจ์œ„๋กœ
- flex-end: ๋งจ์•„๋ž˜๋กœ
- center: ๊ฐ€์šด๋ฐ ์ •๋ ฌ
- baseline: ํฐํŠธ์˜ baseline์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ


7) flex-flow

- flex- direction๊ณผ flex-wrap์˜ ์ถ•์•ฝํ˜•
- flex- flow: flex-direction ๊ฐ’, wrap ์„ค์ •
- flex-flow: row wrap : ๋ณดํ†ต ์ด๋ ‡๊ฒŒ ์…‹๋šœ์…‹๋šœ๋กœ ๋ฌถ์–ด์„œ ๋ฐ”๋กœ ์„ค์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„๋‘๊ธฐ!



๐Ÿ“Œ flex items(์ž์‹)์— ์ ์šฉ๋˜๋Š” ์†์„ฑ

1) flex-basis (๊ธฐ๋ณธ๊ฐ’ auto)

item์˜ ๋„ˆ๋น„/๋†’์ด๋ฅผ ์กฐ์ • (rows๋Š” ๋„ˆ๋น„, column๋Š” ๋†’์ด์— ํ•ด๋‹น)

- (๊ธฐ๋ณธ๊ฐ’) auto / content, px, em, %, 0..
- auto: ๋‚ด๊ฐ€ ์ง์ ‘ ์„ค์ •ํ•œ width๊ฐ’์œผ๋กœ ์ ์šฉ๋จ
- auto์ž„์—๋„ width ์„ค์ •์ด ์—†๋‹ค๋ฉด content ํฌ๊ธฐ๋กœ ์ž๋™์œผ๋กœ ์ ์šฉ๋จ

- ๋งŒ์•ฝ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋‹ค๊ฐ€(๋„ˆ๋น„๊ฐ€ ๋ณด๋‹ค ์ž‘์•„์ง€๋ฉด) ๊ธ€์”จ๊ฐ€ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€๊ฒŒ ๋˜๋ฉด, ํŠ€์–ด๋‚˜๊ฐ„ ํ…์ŠคํŠธ๊ฐ€ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿด ๋• word-warp:break-word css ์„ค์ •์„ ํ•ด์ค˜์•ผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ค„๋ฐ”๊ฟˆ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.


2) flex-grow (๊ธฐ๋ณธ๊ฐ’: 0)

- flex-basis๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ๋Š˜๋ ค์ฃผ๊ธฐ!
- 0๋ณด๋‹ค ํฐ ์ˆ˜๋ฅผ ๋„ฃ์–ด์•ผ ํ•จ
- (๊ธฐ๋ณธ๊ฐ’) flex-grow: 0 --> ๊ทธ๋ƒฅ ๋‚ด๊ฐ€ ์ •ํ•œ flex-basis๋Œ€๋กœ ๋„ˆ๋น„๊ฐ€ ๊ฒฐ์ •๋จ
- flex-grow: 1 ---> ์—ฌ๋ฐฑ๊นŒ์ง€ ๊ฝ‰ ์ฑ„์›Œ์ง

* flex-grow๋Š” item ๊ฐ๊ฐ ์„ค์ •์ด ๊ฐ€๋Šฅ
class.nth-of-child(1) {flex-grow: 1}
class.nth-of-child(2) {flex-grow: 2}
class.nth-of-child(3) {flex-grow: 1}

3) flex-shrink (๊ธฐ๋ณธ๊ฐ’: 1)

- flex-basis๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ค„์ด๊ธฐ!
- ๊ธฐ๋ณธ๊ฐ’: 1 ---> ๊ทธ๋ž˜์„œ flex๊ฐ€ ๊ธฐ๋ณธ์ ์„ ์ฐฝ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ์ž‘์•„์ง€๋Š” ์ด์œ ์ž„
- flex-shrink: 1 ---> ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋„ˆ๋น„๊ฐ€ ์ž๋™์œผ๋กœ ์ค„์–ด๋“ ๋‹ค.
- flex-shrink: 0 ---> ์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ ์ƒ๊ด€ ์—†์ด flex-basis์˜ ๋„ˆ๋น„๊ฐ€ ์ค„์–ด๋“ค์ง€ X (๊ณ ์ •)


4) order

- ์•„์ดํ…œ๋“ค์„ ์‹œ๊ฐ์ ์œผ๋กœ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ์†์„ฑ!
- ์‹œ๊ฐ์ ์œผ๋กœ๋งŒ ๋ฐ”๋€Œ๊ณ , ๋งˆํฌ์—… ๊ตฌ์กฐ ์ƒ ๋ณ€ํ™”๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๊ธฐ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ! ๊ทธ๋ ‡๊ฒŒ ๋•Œ๋ฌธ์— ์ฒญ๊ฐ์ •์• ์ธ๋“ค์€ ์ธ์ง€ํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ์ฃผ์˜ํ•ด์„œ ์“ฐ๊ธฐ!!

.item:nth-child(1) { order: 3; } / A /
.item:nth-child(2) { order: 1; } / B /
.item:nth-child(3) { order: 2; } / C /

0๊ฐœ์˜ ๋Œ“๊ธ€