Flex ์ •๋ฆฌ

J.yeonยท2023๋…„ 11์›” 20์ผ
0
post-thumbnail

Flexbox๋ž€?

flexbox ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์˜ ์•„์ดํ…œ ๊ฐ„ ๊ณต๊ฐ„ ๋ฐฐ๋ถ„๊ณผ ๊ฐ•๋ ฅํ•œ ์ •๋ ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ 1์ฐจ์› ๋ ˆ์ด์•„์›ƒ ๋ชจ๋ธ
(์œ ๋™์ ์œผ๋กœ ๊ฐ ์š”์†Œ๋“ค์„ ๋ฐฐ์น˜ํ•˜๋Š” ๊ธฐ๋ฒ•)

*flex๋Š” ์ปจํ…์ธ  ์•„์ดํ…œ์„ ๊ฐ€๋กœ ์ •๋ ฌํ•  ๋•Œ ๋“ฑ, 1์ฐจ์› ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„์— ์šฉ์ดํ•˜๋‹ค.




Flexbox ์‚ฌ์šฉ๋ฒ• ๋ฐ ๊ตฌ์กฐ

Flexbox๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ •๋ ฌ์‹œํ‚ค๊ณ ์žํ•˜๋Š” ์š”์†Œ์˜ ๋ถ€๋ชจ์š”์†Œ์— display: flex; ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
(๋ถ€๋ชจ์š”์†Œ๊ฐ€ inline์š”์†Œ๋ผ๋ฉด inline-flex)

๊ตฌ์„ฑ : flex item(์ž์‹์š”์†Œ) & flex-container(๋ถ€๋ชจ์š”์†Œ)




Flex Container ๋ถ€๋ชจ ์†์„ฑ

์†์„ฑ ์˜๋ฏธ
display container ์ •์˜
flex-direction flex items์˜ ์ฃผ์ถ• ์„ ํƒ
flex-wrap flex items ์ค„๋ฐ”๊ฟˆ ์„ค์ •
flex-flow flex-direction, flex-wrap ๋‹จ์ถ•
justify-content ์ฃผ์ถ•(์ˆ˜ํ‰)์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ• ์„ ํƒ
align-content ๊ต์ฐจ์ถ•(์ˆ˜์ง) ์ •๋ ฌ ๋ฐฉ๋ฒ• ์„ ํƒ
align-items items์˜ ๊ต์ฐจ์ถ• ์ •๋ ฌ ๋ฐฉ๋ฒ• ์„ ํƒ(1์ค„)


flex-direction

row : ์ขŒ์šฐโ†’ ์ˆ˜ํ‰ ์ •๋ ฌ (๊ธฐ๋ณธ๊ฐ’)

column : ์œ„์•„๋ž˜โ†“ ์ˆ˜์ง ์ •๋ ฌ

row-reverse : ์šฐ์ขŒโ† ์ˆ˜ํ‰ ์ •๋ ฌ

column-reverse : ์•„๋ž˜์œ„โ†‘ ์ˆ˜์ง ์ •๋ ฌ

*๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ์ฃผ์ถ•๊ณผ ๊ต์ฐจ์ถ•์ด ๋‹ฌ๋ผ์ง์œผ๋กœ ์œ ์˜!
(Items ์ˆœ์„œ๋ฅผ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘๊ฑฐ๋‚˜ ์ˆ˜์ง์œผ๋กœ ์„ค์ • ํ•  ๊ฒฝ์šฐ)



flex-wrap

flex container ๋„ˆ๋น„๋ณด๋‹ค items์˜ ๋„ˆ๋น„๊ฐ€ ํฐ ๊ฒฝ์šฐ, ํ•œ์ค„ ๋˜๋Š” ์—ฌ๋Ÿฌ์ค„๋กœ ํ‘œํ˜„ํ• ์ง€ ์„ค์ •

nowrap : 1ํ–‰ ๋ฐฐ์น˜ (๊ธฐ๋ณธ๊ฐ’)
-๊ฐ items ํญ์€ container ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ๋กœ ์ถ•์†Œ๋จ

wrap : ๋ณต์ˆ˜ํ–‰ ๋ฐฐ์น˜
-items ํญ ํ•ฉ๊ณ„๊ฐ€ container๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, ์•„๋ž˜๋กœ ๋–จ์–ด์ ธ ๋ฐฐ์น˜๋จ (์ขŒ-์šฐ, ์œ„-์•„๋ž˜)

wrap-reverse : wrap๊ณผ ๋™์ผํ•˜์ง€๋งŒ ์•„๋ž˜-์œ„๋กœ ๋ฐฐ์น˜๋จ



justify-content

flex item ์ˆ˜ํ‰ ์ •๋ ฌ

flex-start : start ์ขŒ์ธก ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ (๊ธฐ๋ณธ๊ฐ’)

flex-end : end ์šฐ์ธก ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
-์š”์†Œ์˜ ์ˆœ์„œ๋Š” ๋ฐ”๋€Œ์ง€์•Š์Œ (reverse X)

center : container์˜ ์ค‘์•™์— ์ •๋ ฌ

space-between : ์ฒซ๋ฒˆ์งธ&๋งˆ์ง€๋ง‰ item์ด ์ขŒ์šฐ ์ธก๋ฉด์— ๋”ฑ ๋ถ™์–ด ์ •๋ ฌ๋˜๊ณ  ๋‚˜๋จธ์ง€ item๊ณผ ๊ท ์ผํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ์ •๋ ฌ

space-around : ๋ชจ๋“  item์ด ๊ท ์ผํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ์ •๋ ฌ

space-evenly : item ์‚ฌ์ด์™€ ์–‘ ๋์ด ๊ท ์ผํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ์ •๋ ฌ (IE์ง€์›X)



align-content

flex item ์ˆ˜์ง ์ •๋ ฌ (2์ค„ ์ด์ƒ)

stretch : ๊ท ์ผํ•˜๊ฒŒ ๋ถ„๋ฐฐ๋œ ๊ณต๊ฐ„์— ์ •๋ ฌ (๊ธฐ๋ณธ๊ฐ’)
-ํ–‰์ด ๋–จ์–ด์ ธ ์žˆ์Œ

flex-start : flex container์˜ start๊ธฐ์ค€์œผ๋กœ ์Œ“์•„์„œ ์ •๋ ฌ

flex-end : flex container์˜ end๊ธฐ์ค€์œผ๋กœ ์Œ“์•„์„œ ์ •๋ ฌ

center : flex container ์ค‘์•™์— ์Œ“์•„์„œ ์ •๋ ฌ

space-between : ์ฒซ๋ฒˆ์งธ item์€ ์ƒ๋‹จ, ๋งˆ์ง€๋ง‰ item์€ ํ•˜๋‹จ์— ๋ฐฐ์น˜๋˜๊ณ  ๋‚˜๋จธ์ง€ ํ–‰์€ ๊ณต๊ฐ„ ์•ˆ์— ๊ท ์ผํ•˜๊ฒŒ ์ •๋ ฌ

space-around : ๋ชจ๋“  item์ด ๊ณต๊ฐ„ ์•ˆ์— ๊ท ์ผํ•˜๊ฒŒ ์ •๋ ฌ



align-items

container ์ˆ˜์ง ๋ฐฉ์–‘์œผ๋กœ flex item ์ •๋ ฌ (1์ค„)

stretch : container๋†’์ด์— ๋งž๊ฒŒ item ๋†’์ด๊ฐ€ ๋Š˜์–ด๋‚จ (๊ธฐ๋ณธ๊ฐ’)

flex-start : flex container์˜ start๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  item ์ •๋ ฌ

flex-end : flex container์˜ end๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  item ์ •๋ ฌ

center : flex container ์ค‘์•™์— ๋ชจ๋“  item ์ •๋ ฌ

baseline : flex container์˜ baseline์„ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  item ์ •๋ ฌ
-items์˜ ํฌ๊ธฐ์— ์ƒ๊ด€์—†์ด ์•ˆ์˜ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ค€



Flex Item ์ž์‹ ์†์„ฑ

์†์„ฑ ์˜๋ฏธ
order flex item์˜ ์ˆœ์„œ ๊ฒฐ์ •
flex-grow flex item์˜ ๋„ˆ๋น„ ๋น„์œจ(์ฆ๊ฐ€)
flex-shrink flex item์˜ ๋„ˆ๋น„ ๋น„์œจ(๊ฐ์†Œ)
flex-basis flex item์˜ ๊ธฐ๋ณธ ๋„ˆ๋น„
flex flex-grow, flex-shrink, flex- basis์˜ ๋‹จ์ถ•
align-self ๊ต์ฐจ์ถ•์—์„œ์˜ Item์ •๋ ฌ ๋ฐฉ๋ฒ•


order

flex item์˜ ๋ฐฐ์น˜ ์ˆœ์„œ ์„ค์ •

html์„ ๊ฑด๋“œ๋ฆด ํ•„์š” ์—†์ด order์†์„ฑ์œผ๋กœ ๊ฐ„๋‹จํžˆ ์žฌ๋ฐฐ์น˜ ๊ฐ€๋Šฅ

<div class="flex-container">
	<div style="order: 2">1</div>
	<div style="order: 3">2</div>
	<div style="order: 1">3</div>
	<div style="order: 5">4</div>
	<div style="order: 4">5</div>
</div>

flex-grow

flex item์˜ ๋„ˆ๋น„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋Š˜๋ฆด์ง€์— ๋Œ€ํ•œ(ํ™•์žฅ) ๋น„์œจ์„ ์„ค์ •

๊ธฐ๋ณธ๊ฐ’ 0, ์–‘์˜ ์ •์ˆ˜๊ฐ’๋งŒ ๊ฐ€๋Šฅ

<div class="flex-container">
	<div class="flex-item" style="flex-grow: 4">1</div>
	<div class="flex-item" style="flex-grow: 2">2</div>
	<div class="flex-item" style="flex-grow: 1">3</div>
	<div class="flex-item" style="flex-grow: 1">4</div>
	<div class="flex-item" style="flex-grow: 1">5</div>
</div>
<!-- ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์€ ๋‚˜๋จธ์ง€ ํ•ญ๋ชฉ๋ณด๋‹ค 4๋ฐฐ ๋” ์ปค์ง€๊ณ , 
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ด ์žˆ์„ ๋•Œ ๋‘ ๋ฒˆ์งธ ํ•ญ๋ชฉ์€ ๋‚˜๋จธ์ง€ ํ•ญ๋ชฉ๋ณด๋‹ค 2๋ฐฐ ๋” ์ปค์ง„๋‹ค-->

flex-shrink

flex item์˜ ๋„ˆ๋น„๋ฅผ ์–ผ๋งˆ๋‚˜ ์ค„์ผ์ง€์— ๋Œ€ํ•œ(์ถ•์†Œ) ๋น„์œจ์„ ์„ค์ •

๊ธฐ๋ณธ๊ฐ’ 1, ์–‘์˜ ์ •์ˆ˜๊ฐ’๋งŒ ๊ฐ€๋Šฅ
0์œผ๋กœ ์ฃผ๋ฉด ์ถ•์†Œ๋˜์ง€์•Š๊ณ  ์›๋ž˜์˜ ๋„ˆ๋น„๋ฅผ ์œ ์ง€!

<div class="flex-container">
	<div class="flex-item" style="flex-shrink: 2">1</div>
	<div class="flex-item">2</div>
	<div class="flex-item">3</div>
	<div class="flex-item">4</div>
	<div class="flex-item">5</div>
</div>

flex-basis

flex item์˜ ๋„ˆ๋น„ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •

๊ธฐ๋ณธ๊ฐ’ auto, px์ด๋‚˜ %๋“ฑ์˜ ๋‹จ์œ„ ์‚ฌ์šฉ

<div class="flex-container">
	<div class="flex-item" style="flex-basis: 250px">1</div>
	<div class="flex-item">2</div>
	<div class="flex-item">3</div>
	<div class="flex-item">4</div>
	<div class="flex-item">5</div>
</div>

flex

grow, shrink, basis ๋‹จ์ถ• ์†์„ฑ

๊ธฐ๋ณธ๊ฐ’ 0 1 auto

<div class="flex-container">
	<div class="flex-item">1</div>
	<div class="flex-item">2</div>
	<div class="flex-item" style="flex: 1 0 50px">3</div>
	<div class="flex-item">4</div>
	<div class="flex-item">5</div>
</div>

align-self

flex item ์ˆ˜์ง๋ฐฉํ–ฅ์œผ๋กœ ์ •๋ ฌ

๊ธฐ๋ณธ๊ฐ’ auto, align-tiems์†์„ฑ๋ณด๋‹ค ์šฐ์„ ์ ์œผ๋กœ ๊ฐ๊ฐ์˜ ๊ฐœ๋ณ„ item์„ ์ •๋ ฌ




๐Ÿ’กFlex์˜ z-index?

z-index ์†์„ฑ์€ ์ผ๋ฐ˜์ ์œผ๋กœ position ์†์„ฑ์ด static์ด ์•„๋‹Œ ์š”์†Œ์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” z-index๊ฐ€ ์š”์†Œ์˜ ์Œ“์ž„ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ, position ์†์„ฑ์ด static์ธ ๊ฒฝ์šฐ์—๋Š” ์Œ“์ž„ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, display: flex๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์š”์†Œ์˜ ์ž์‹ ์š”์†Œ๋“ค์ด Flex Container๋กœ์„œ ์ƒˆ๋กœ์šด ์Œ“์ž„ ๋งฅ๋ฝ์„ ํ˜•์„ฑํ•œ๋‹ค. Flex Container ๋‚ด์˜ ์ž์‹ ์š”์†Œ๋“ค์€ Flex Item์ด ๋˜๋ฉฐ, ์ด๋“ค ๊ฐ„์˜ ์Œ“์ž„ ์ˆœ์„œ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์„œ ํ๋ฆ„์—์„œ์˜ ์Œ“์ž„ ์ˆœ์„œ์™€๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. Flex Container ๋‚ด์˜ Flex Item์€ Flex Context ๋‚ด์—์„œ๋งŒ ์Œ“์ด๋ฏ€๋กœ, z-index๊ฐ€ ๋” ์‰ฝ๊ฒŒ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” Flex Container๊ฐ€ ์Œ“์ž„ ์ปจํ…์ŠคํŠธ๋ฅผ ํ˜•์„ฑํ•˜๊ณ  ๊ทธ ๋‚ด์—์„œ๋Š” z-index๊ฐ€ ์ข€ ๋” ์ž์œ ๋กญ๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Flex Container๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ position: relative๋‚˜ position: absolute๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ z-index๋ฅผ ํ†ตํ•ด ์š”์†Œ๋“ค์˜ ์Œ“์ž„ ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” Flex Container๊ฐ€ ์ƒˆ๋กœ์šด ์Œ“์ž„ ์ปจํ…์ŠคํŠธ๋ฅผ ํ˜•์„ฑํ•˜๋ฉด์„œ ์ผ๋ฐ˜์ ์ธ ์Œ“์ž„ ๊ทœ์น™๊ณผ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

profile
๊ฐœ๋ธ”๋ฆฌ์…” ๊ฟˆ๊พธ๋Š” ํผ๋ธ”์˜ ๊ฐœ๋ฐœ๊ณต๋ถ€๐Ÿšถโ€โ™€๏ธ ์ฒœ์ฒœํžˆ ๊ฑธ์–ด๊ฐ€๋Š” ์ค‘

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด