๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CSS๐Ÿ”ง/๋ฐ˜์‘ํ˜•

CSS Flex

by hyojinny 2022. 11. 7.

 

Flex ์ •์˜
display:flex - ์ต์Šค 10์ดํ•˜์—์„œ ์•ˆ๋จ, ie11์—์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฒ„๊ทธ์ด์Šˆ๊ฐ€ ์žˆ์ง€๋งŒ ๋Œ€์‘๊ฐ€๋Šฅ
- float๋ณด๋‹ค ์œ ์—ฐํ•˜๊ฒŒ ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜ ๊ฐ€๋Šฅ
- ๋ชจ๋ฐ”์ผ, ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ
- ์š”์†Œ์˜ ์ˆœ์„œ๋ณ€๊ฒฝ๋“ฑ ๋ ˆ์ด์•„์›ƒ์˜ ๋ณ€ํ™”๊ฐ€ ๋งŽ์„๊ฒฝ์šฐ ํŽธํ•จ(flex-direction, flex-wrap, order)
- ie11 ์ง€์›์ด 2022๋…„ 6์›”์— ์ข…๋ฃŒ๋˜๋ฉฐ ์•ž์œผ๋กœ ๊ฐœ๋ฐœ๋˜๋Š” ์‹ ๊ทœ์‚ฌ์ดํŠธ๋“ค์€ ie11 ํฌ๋กœ์Šค๋ธŒ๋ผ์šฐ์ง•์„ ํ•˜์ง€์•Š๋Š”๊ฒฝ์šฐ๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ ์žˆ์Œ
์ขŒ์šฐ, ์ƒํ•˜ ๋ฐฐ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ ˆ์ด์•„์›ƒ์— ์‚ฌ์šฉ๊ฐ€๋Šฅ
์ˆ˜์ง์ •๋ ฌ์‹œ flex์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅ(align-items:center)
display:flex ์ด์Šˆ - flex๋กœ ์ปฌ๋Ÿผ๋ ˆ์ด์•„์›ƒ ์žก์„๊ฒฝ์šฐ ์ขŒ์šฐ ์—ฌ๋ฐฑ ์ฃผ๋ฉด flex์•„์ดํ…œ์€ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ฌ(flex-shrink:1์ด๋ฏ€๋กœ)
ex. .box_wrap {display:flex;} ๋‘์ปฌ๋Ÿผ์ผ๊ฒฝ์šฐ
.box_wrap li {width:50%;}
๋‘๋ฒˆ์งธ ์ปฌ๋Ÿผ์—์„œ ์—ฌ๋ฐฑ์ฃผ๋ฉด ์—ฌ๋ฐฑํฌ๊ธฐ๋งŒํผ ๊ฐ€๋กœ๊ฐ€ ์ค„์–ด๋“ฌ(flex-shrink:1์ด๋ฏ€๋กœ) 
.box_wrap li + li {margin-left:40px;}

- flex์•„์ดํ…œ์˜ ๊ฐ€๋กœ๋Š” width๋กœ ์žก๋Š”๊ฒƒ์ด ํŽธํ•จ
์ด์œ : flex-basis์‚ฌ์šฉ์‹œ overflow:hidden ์—†์„๊ฒฝ์šฐ ์ง€์ •ํ•œ ํฌ๊ธฐ๋งŒํผ ์ค„์–ด๋“ค์ง€์•Š์Œ

- ๋ถ€๋ชจ๊ฐ€ flex์ด๋ฉด์„œ flex์•„์ดํ…œ์ผ ๊ฒฝ์šฐ ์ž์‹์š”์†Œ ์ขŒ์šฐ ๋งˆ์ง„, ํŒจ๋”ฉ %์‚ฌ์šฉ์‹œ
๋ถ€๋ชจ๊ฐ€๋กœ๊ฐ€ ์ž์‹์š”์†Œ ๊ฐ€๋กœ๋งŒํผ ์ž๋™์œผ๋กœ ์žกํžˆ์ง€์•Š์Œ
์ด์œ : ๋งˆ์ง„, ํŒจ๋”ฉ %๋Š” ๋ถ€๋ชจ์˜ ๊ฐ€๋กœ๊ธธ์ด ๊ธฐ์ค€์ด๊ณ  flex์š”์†Œ(๋ถ€๋ชจ)์˜ ๊ฐ€๋กœ๋Š” ์ž์‹๋งŒํผ์ด๋ฏ€๋กœ ์„œ๋กœ ์ƒ์ถฉ
ํ•ด๊ฒฐ: ์ž์‹์˜ ๋งˆ์ง„, ํŒจ๋”ฉ์€ px์‚ฌ์šฉ, ๋˜๋Š” ๋ถ€๋ชจ์—์„œ flex-wrap:wrap
์ œ์ด์ฟผ๋ฆฌ ์‚ฌ์šฉ์‹œ ์ด์Šˆ  - display:none์œผ๋กœ ๋ˆ๊ฒฝ์šฐ display:flex๋กœ ๋ณด์—ฌ์ค˜์•ผํ•จ
- ํƒญ๋‚ด์šฉ์ด flex์ผ๊ฒฝ์šฐ ์ œ์ด์ฟผ๋ฆฌ .hide()๋ฉ”์„œ๋“œ๋กœ ๊บผ์•ผํ•จ
์ด์œ : css display:none์‚ฌ์šฉ์‹œ display:block์œผ๋กœ ๋ณด์—ฌ์ง€๋ฏ€๋กœ
2์ค„๊ตฌ์กฐ - flex๊ตฌ์กฐ์—์„œ ํ•œ์ค„์ผ๊ฒฝ์šฐ margin์ ์šฉ์‹œ ์•„์ดํ…œ์˜ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ ๋‹ค
- flex๊ตฌ์กฐ๊ฐ€ ๋‘์ค„(flex-wrap:wrap)์ผ๊ฒฝ์šฐ margin์— ์˜ํ•ด ์•„์ดํ…œ์˜ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค์ง€์•Š์Œ
- flex๊ตฌ์กฐ๋ฅผ ๋‘์ค„๋กœ ํ•˜์—ฌ ์ขŒ์šฐ์—ฌ๋ฐฑ์„ ์ค„๊ฒฝ์šฐ padding์‚ฌ์šฉํ•˜์—ฌ ํฌ๊ธฐ์•ˆ์œผ๋กœ ํฌํ•จ๋˜๊ฒŒ ํ•ด์•ผํ•จ
mafin-auto ๊ฐ€๋Šฅ - flex์•„์ดํ…œ์˜ margin์— auto์ ์šฉ์‹œ flex๋ถ€๋ชจ์˜ ๋์œผ๋กœ ๋ฐ€๋ ค๊ฐ
๋ฒ„๊ทธ - ie11 flex-direction:column ๋ฒ„๊ทธ์žˆ์„๊ฒฝ์šฐ
   flex-wrap:wrap, wrap-reverse๋กœ ๋ฐ€์–ด๋‚ด๋ฆผ
- ie11์€ ํฌ์ง€์…˜์š”์†Œ๋ฅผ flex์•„์ดํ…œ์œผ๋กœ ์ธ์‹ํ•˜๋Š”๊ฒฝ์šฐ์žˆ์Œ(๋ฒ„๊ทธ)

 

 

flex 
์ปจํ…Œ์ด๋„ˆ
(๋ถ€๋ชจ)
display:flex    
justify-content : flex-start    
justify-content : space-between (์–‘์ชฝ ๋์œผ๋กœ ์ •๋ ฌ)  
justify-content : space-around    
justify-content : space-evenly  ( ์š”์†Œ ์–‘์ชฝ๊ฐ„๊ฒฉ์„ ๋˜‘๊ฐ™์ด ๋ฐฐ์น˜) ie11์•ˆ๋จ
align-items:center ํ•œ์ค„ ์ˆ˜์ง์ •๋ ฌ  
align-content:center flex ์•„์ดํ…œ์ด ํ•œ์ค„๋กœ ๋ฐฐ์น˜๋จ ์—ฌ๋Ÿฌ์ค„ ํ•œ๊บผ๋ฒˆ์— ์ˆ˜์ง์ •๋ ฌ
flex-direction:column ์œ„์•„๋ž˜ ๋ฐฐ์น˜  
flex-direction:row-reverse ๋ฐ˜์‘ํ˜•์—์„œ ์š”์†Œ ์ˆœ์„œ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ie11์•ˆ๋จ
flex
์•„์ดํ…œ
(์ž์‹)
align-self:flex-end   ๋ถ€๋ชจ์— flex๋ฅผ ๊ฑธ๋ฉด ํฌ๊ธฐ๊ฐ€ ๋‚ด์šฉ๋งŒํผ ์ค„์–ด๋“ค๊ณ  ๋– ์žˆ๋‹ค. > block ์œผ๋กœ ๋ณ€๊ฒฝ
flex: 0 1 auto 0 ํ™•๋Œ€๋ถˆ๊ฐ€ / 1 ์ถ•์†Œ๊ฐ€๋Šฅ /  ๋ถ€๋ชจ๊ฐ€ ์ž‘์•„์ง€๋ฉด ๊ฐ™์ด ์ž‘์•„์ง
-flex-grow, flex-shrink, flex-basis ์ถ•์•ฝํ˜•    
oreder:0 ๊ฐœ๋ณ„์š”์†Œ์˜ ์ˆœ์„œ๋ณ€๊ฒฝ  

 

 

 

float ์‹น ์ง€์šฐ๊ธฐ 

 

๋ถ€๋ชจ ์š”์†Œ์ธ div.container๋ฅผ Flex Container(ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ)
์ž์‹ ์š”์†Œ์ธ div.item๋“ค์„ Flex Item(ํ”Œ๋ ‰์Šค ์•„์ดํ…œ)

 

.container {
	display: flex;
	/* display: inline-flex; */
}

 

Flex ์•„์ดํ…œ๋“ค์€ ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฐ์น˜๋˜๊ณ , ์ž์‹ ์ด ๊ฐ€์ง„ ๋‚ด์šฉ๋ฌผ์˜ width ๋งŒํผ๋งŒ ์ฐจ์ง€ = float๊ณผ ๋™์ผ

๋‹จ ๋ถ€๋ชจ์˜ ๋†’์ด๊ฐ€ ์‚ด์•„์žˆ์Œ

 

flex๋Š” ๋ฐฉํ–ฅ๊ฐœ๋…์ด ์žˆ๊ธฐ๋•Œ๋ฌธ์— x,y ์ถ•์ด ์กด์žฌ

 

row = float leftrow- reverse = float right 

column : ์œ„์•„๋ž˜ 

column-reverse : ์—ญ์ˆœ ์œ„์•„๋ž˜ 

 

flex-wrap: nowrap; : nowrap ๊ธฐ๋ณธ์„ค์ • , ์•„๋ž˜๋กœ ๋–จ์–ด์ง€์ง€ ์•Š์Œ

flex-wrap: wrap; : ์ค„๋ฐ”๊ฟˆ์•„๋ž˜๋กœ ๋–จ์–ด์ง 

 

 

 

flex-basis: auto; ๊ธฐ๋ณธ๊ฐ’ : ๋‚ด์šฉ๋งŒํผ width / ํŠน์ˆ˜ํ•œ ๋ชฉ์ ์ด์žˆ์„๋•Œ๋งŒ ์‚ฌ์šฉ

flex-grow: 0;  ๊ธฐ๋ณธ๊ฐ’  / ๋Š˜๋ฆฌ๊ธฐ  ์ปค์ง€์ง€ ๋ชปํ•˜๊ฒŒ 

flex-grow: 1;  ๋‚จ์€ ์˜์—ญ์„ ์•Œ์•„์„œ ํ‚ค์›Œ์„œ ์ฑ„์šฐ๊ธฐ 

 

 

flex ์—ฐ์Šต์‚ฌ์ดํŠธ

https://flexboxfroggy.com/#ko

 

์ฐธ๊ณ 

https://studiomeal.com/archives/197

 

์ด๋ฒˆ์—์•ผ๋ง๋กœ CSS Flex๋ฅผ ์ตํ˜€๋ณด์ž

์ด ํŠœํ† ๋ฆฌ์–ผ์€ “์ฐจ์„ธ๋Œ€ CSS ๋ ˆ์ด์•„์›ƒ” ์‹œ๋ฆฌ์ฆˆ์˜ ์ฒซ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ์—์•ผ๋ง๋กœ CSS Flex๋ฅผ ์ตํ˜€๋ณด์ž ์ด๋ฒˆ์—์•ผ๋ง๋กœ CSS Grid๋ฅผ ์ตํ˜€๋ณด์ž ๋ฒŒ์จ๋ถ€ํ„ฐ ์Šคํฌ๋กค์˜ ์••๋ฐ•์ด ๋А๊ปด์ง€๊ณ ,‘์ข€ ํŽธ์•ˆํ•˜๊ฒŒ ๋ˆ„

studiomeal.com

 

๋Œ“๊ธ€