Coding Archive

[ HTML & CSS ] ๋ ˆ์ด์•„์›ƒ์˜ ํ•ต์‹ฌ, flexbox ๋ณธ๋ฌธ

๐Ÿ’ป Programming/HTML & CSS

[ HTML & CSS ] ๋ ˆ์ด์•„์›ƒ์˜ ํ•ต์‹ฌ, flexbox

์ฝ”๋“ฑ์–ด 2023. 3. 29. 00:27

 

โšพ๏ธ flex ๋ž€?

flex๋Š” ์œ ์—ฐํ•œ ๋ ˆ์ด์•„์›ƒ์„ ์žก๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์ด๋‹ค.

1์ฐจ์›์  ๋ ˆ์ด์•„์›ƒ์„ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 


 

๐Ÿ“ flex์˜ ํŠน์ง•

flex๋Š” ๋ถ€๋ชจ์™€ ์ž์‹ ํƒœ๊ทธ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ๋ถ€๋ชจ ์š”์†Œ(flex-container)์™€ ์ž์‹ ์š”์†Œ(flex-item)์— ์ ์šฉํ•˜๋Š” ์†์„ฑ์ด ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค.

flex๋Š” ๊ฐ๊ฐ์˜ item์— ๋ถ€์—ฌํ•˜๋Š” ๊ฒŒ ์•„๋‹Œ ๋ถ€๋ชจ container์— ์†์„ฑ์„ ๋ถ€์—ฌํ•œ๋‹ค.

 

flex-container์˜ ์†์„ฑ : flex-direction, flex-wrap, justify-content, align-items, align-content ๋“ฑ

flex-item์˜ ์†์„ฑ : flex, flex-grow, flex-shrink, flex-basis, align-self, order, z-index ๋“ฑ

 


 

๐Ÿ“ flex-container์˜ ์†์„ฑ

1๏ธโƒฃ flex-direction

container ๋‚ด item์„ ๋ฐฐ์น˜ํ•  ๋•Œ ์ฃผ์ถ• ๋ฐ ๋ฐฉํ–ฅ์„ ์ง€์ •ํ•œ๋‹ค.

row : ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ, ์ฃผ์ถ•์ด ํ–‰ ๋ฐฉํ–ฅ์œผ๋กœ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋กœ ๋ฐฐ์น˜

row-revers : ์ฃผ์ถ•์ด ํ–‰ ๋ฐฉํ–ฅ์œผ๋กœ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๋กœ ๋ฐฐ์น˜

column : ์ฃผ์ถ•์ด ์—ด ๋ฐฉํ–ฅ์œผ๋กœ ์œ„์—์„œ ์•„๋ž˜๋กœ ์„ธ๋กœ ๋ฐฐ์น˜

column-reverse : ์ฃผ์ถ•์ด ์—ด ๋ฐฉํ–ฅ์œผ๋กœ ์•„๋ž˜์—์„œ ์œ„๋กœ ์„ธ๋กœ ๋ฐฐ์น˜

 

 

2๏ธโƒฃ justify-content

์ฃผ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ •๋ ฌํ• ์ง€ ์ง€์ •ํ•œ๋‹ค.

flex-start : ์‹œ์ž‘์ ์—,  center : ๊ฐ€์šด๋ฐ,  flex-end : ๋์ ์—,

space-between : ์‚ฌ์ด์—, space-around : ๋‘˜๋ ˆ์—, space-evenly : ๊ท ๋“ฑํ•˜๊ฒŒ

 

 

3๏ธโƒฃ align-items, align-content

์ˆ˜์ง ๋ฐฉํ–ฅ(๊ต์ฐจ์ถ•)์„ ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ •๋ ฌํ• ์ง€ ์ง€์ •ํ•œ๋‹ค.

align-items : ํ•œ ์ค„์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ

stretch : ๊ธฐ๋ณธ๊ฐ’-๋Š˜์–ด๋‚œ, baseline : ์ปจํ…์ธ ๋ฅผ ๊ธฐ์ค€์œผ๋กœ,

flex-start : ์‹œ์ž‘์ ์—,  center : ๊ฐ€์šด๋ฐ,  flex-end : ๋์ ์—

 

align-content : ๊ต์ฐจ ์ถ•์˜ ์•„์ดํ…œ๋“ค์ด ์—ฌ๋Ÿฌ ์ค„์ผ ๋•Œ ์ •๋ ฌ

· justify-content ์†์„ฑ๋“ค๊ณผ ๋™์ผ

· flex-wrap:wrap; ์ธ ์ƒํƒœ์—์„œ ์‚ฌ์šฉ

 


 

๐Ÿ“ flex-item์— ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ

1๏ธโƒฃ flex-basis

๊ธฐ๋ณธ๊ฐ’์€ auto๋กœ, flex-item์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

· ์ถ•์˜ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ์ ๊ณผ ๋‚ด๋ถ€ ์ฝ˜ํ…์ธ ์— ๋”ฐ๋ผ ์œ ์—ฐํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค๋Š” ์ ์ด width, height์™€ ๋‹ค๋ฅด๋‹ค.

· flex-basis ๊ฐ’ ์ ์šฉ ์‹œ row์ผ ๊ฒฝ์šฐ width ๊ฐ’์ด ๋ฌด์‹œ๋˜๋ฉฐ, column์ผ ๊ฒฝ์šฐ height ๊ฐ’์ด ๋ฌด์‹œ๋œ๋‹ค.

· ๊ธฐ๋ณธ์ ์œผ๋กœ px์ด๋‚˜ em ๋“ฑ์˜ ๋‹จ์œ„๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

2๏ธโƒฃ flex-grow

item์ด container ๋‚ด๋ถ€์—์„œ ํ• ๋‹น๋ฐ›๋Š” ๊ณต๊ฐ„์˜ ์ •๋„๋ฅผ ์ง€์ •ํ•œ๋‹ค.

· item๋“ค์ด ๋ชจ๋‘ ๊ฐ™์€ flex-grow ๊ฐ’์„ ๊ฐ€์ง€๋ฉด, ๋‚ด๋ถ€์—์„œ ๋™์ผํ•œ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.

· ์ค‘์š”ํ•œ ๊ฒƒ์€ ์—ฌ๋ฐฑ์˜ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ์ธ๋ฐ ํ•˜๋‚˜์˜ ์ž์‹์š”์†Œ์— flex-grow๊ฐ’์„ 2๋ฅผ ์คฌ๋‹ค๊ณ  2๋ฐฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ

๋‹ค๋ฅธ ์ž์‹์š”์†Œ๋ณด๋‹ค ๋‘ ๋ฐฐ์˜ ์—ฌ๋ฐฑ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค.

· ๊ฐ’์„ 0์„ ์ฃผ๋ฉด ๋Š˜์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

 

3๏ธโƒฃ flex-shrink

item์˜ ํฌ๊ธฐ๋ฅผ ๊ณ ์ •ํ•˜๊ฑฐ๋‚˜ ์ถ•์†Œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

· ๊ฐ’์„ 0์„ ์ค„ ๊ฒฝ์šฐ ์ค„์–ด๋“ค์ง€ ์•Š๋Š”๋‹ค.

 

 

4๏ธโƒฃ align-self

๋ถ€๋ชจ์˜ align-items ์†์„ฑ์„ ๋ฎ๊ณ  flex-item์—๊ฒŒ ๊ฐœ๋ณ„์ ์ธ align-items ์†์„ฑ์„ ๋ถ€์—ฌํ•œ๋‹ค.

· ๊ธฐ๋ณธ๊ฐ’์€ stretch์ด๋‹ค.

 

 

5๏ธโƒฃ order

flex-item๋“ค์˜ ์ˆœ์„œ๋ฅผ ์ˆ˜์˜ ํฌ๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค.

· ์ˆ˜๊ฐ€ ์ ์„์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. (์Œ์ˆ˜๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ)

 

 

6๏ธโƒฃ flex (๋‹จ์ถ•์†์„ฑ)

flex: flex-grow flex-shrink flex-basis

/* ๋Š˜์–ด๋‚˜๊ณ , ์ค„์–ด๋“ค๊ณ , ๊ธฐ๋ณธ๊ฐ’ */
flex: 1 1 100px;
/* ๋Š˜์–ด๋‚˜์ง€๋„ ์•Š๊ณ , ์ค„์–ด๋“ค์ง€๋„ ์•Š๊ณ , ๊ธฐ๋ณธ๊ฐ’ */
flex: 0 0 100px;

 


 

์‹ค์Šต์œผ๋กœ ์ข€ ๋” ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•ด ๋ณด์ž..!

 

๐Ÿ“ flex-item ์†์„ฑ ์‹ค์Šต ( flex-grow, flex-shrink, flex-basis )

 

flex-basis: auto;  item๋“ค์˜ ํฌ๊ธฐ(์ฝ˜ํ…์ธ  ํฌ๊ธฐ)๋งŒํผ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์žกํžŒ๋‹ค.

flex-grow: 1; ์—ฌ๋ฐฑ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ ๋”ํ•ด์ง„๋‹ค. (๊ธฐ๋ณธ๊ฐ’์€ 0)

์„ธ ๋ฒˆ์งธ ๋ฐ•์Šค์— grow ๊ฐ’ 1์„ ์ฃผ๋ฉด basis ๊ฐ’์— ์—ฌ๋ฐฑ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ ๋”ํ•ด์ ธ ๋‚จ์€ ๊ณต๊ฐ„์„ ํ˜ผ์ž์„œ ์ฐจ์ง€ํ•œ๋‹ค.

๋ชจ๋“  ๋ฐ•์Šค์— grow ๊ฐ’ 1์„ ์ฃผ๋ฉด ๋‚จ์€ ๊ณต๊ฐ„์„ ๋˜‘๊ฐ™์ด ๋‚˜๋ˆ ์„œ ์ฐจ์ง€ํ•œ๋‹ค.

๊ฐ๊ฐ์˜ ๋ฐ•์Šค ๋‚ด๋ถ€์˜ ํฌ๊ธฐ(์ปจํ…์ธ  ํฌ๊ธฐ)๋งŒํผ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์žกํžˆ๊ธฐ ๋•Œ๋ฌธ์—,

๊ฐ™์€ grow ๊ฐ’์„ ์คฌ์–ด๋„ ์ปจํ…์ธ  ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ฐ’์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

flex-basis: 100px; ์•„๋ž˜์™€ ๊ฐ™์ด basis ๊ฐ’์„ ํŠน์ • ๋‹จ์œ„๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

flex-basis: auto; ๋‹ค์‹œ basis ๊ฐ’์„ ์ปจํ…์ธ  ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์žกํžˆ๋„๋ก

auto๋กœ ์„ค์ •ํ•ด container์— ๊ฝ‰ ์ฐจ๋„๋ก ๋งŒ๋“ค์–ด ์ค€๋‹ค.

์ด ์ƒํƒœ์—์„œ ๋ฏธ๋‹ˆ์–ธ ํ•œ ๋ช…์ด ๋” ์ถ”๊ฐ€๋œ๋‹ค๋ฉด??

 

๋ฐ•์Šค๋“ค์˜ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ ๋˜๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” flex-shrink๊ฐ€ ์ˆจ์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—!

 ๊ธฐ๋ณธ๊ฐ’์ด 1์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ฐ•์Šค๋“ค์ด ๊ฐ™์€ ๋น„์œจ๋กœ ์ค„์–ด๋“ ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚์ ธ ๋‚˜๊ฐ€๊ฒŒ ๋˜๋Š”๋ฐ ์™œ์ผ๊นŒ??

๊ฐ๊ฐ์˜ ๋ฐ•์Šค์— min-width๊ฐ’์ด auto๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒŒ ์ˆจ๊ฒจ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ž์‹ ์ปจํ…์ธ (๋ฏธ๋‹ˆ์–ธ)๋ณด๋‹ค ์ž์‹ (๊ฐ๊ฐ์˜ ๋ฏธ๋‹ˆ์–ธ ๋ฐ•์Šค)์„ ๋” ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์—†๊ฒŒ min-width ๊ฐ’์ด ๋ง‰๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด min-width๊ฐ’์— 0์„ ์ฃผ๋ฉด ์‚์ ธ ๋‚˜๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

์ฒ˜์Œ์— flex-basis๋ฅผ 0์„ ์ค˜๋„ ๋ณ€ํ•จ์ด ์—†๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” min-width ๊ฐ’์ด ์ด๋ฏธ auto๋กœ ์ˆจ๊ฒจ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด min-width์— 0์„ ์ฃผ๊ฒŒ ๋˜๋ฉด basis 0์ด ๋จน๋Š”๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ปจํ…์ธ  ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด ๊ท ๋“ฑํ•˜๊ฒŒ ์‚ผ๋“ฑ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค! (๋ชจ๋‘ grow๊ฐ’ 1์„ ์ฃผ๋ฉด ๋œ๋‹ค.)

์ž์‹ํ•˜๋‚˜๊ฐ€ ์ปค์ง€๋ฉด ๋ถ€๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ๋ถ€๋ชจ๊ฐ€ ์ปค์ง€๋ฉด ๋‚˜๋จธ์ง€ ์ž์‹๋“ค์ด ๊ฐ™์ด ์ปค์ง„๋‹ค. (๋ถ€๋ชจ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด ๋ฌด์กฐ๊ฑด ์ปค์ง„๋‹ค)

align-items: stretch ๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด์–ด์„œ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ์ž์‹๋“ค์ด ๋ถ€๋ชจ ๊ธฐ์ค€์œผ๋กœ ๋Š˜์–ด๋‚œ๋‹ค.

์„ธ ๋ฒˆ์งธ ๋ฐ•์Šค์— margin-top๊ณผ bottom์— ๋ชจ๋‘ auto๋ฅผ ์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐ•์Šค๋“ค์—๋„ margin-top๊ณผ bottom์— auto๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋Ÿฐ ์ •๋ ฌ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ๋ฐ•์Šค์—๋Š” margin-bottom์— auto๋ฅผ  margin-top์— 0์„ ์คฌ๋‹ค.

flex๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋‹ค์–‘ํ•œ ์ •๋ ฌ๋“ค์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค!

 

 


 

 

๋ชจ๋“  ์ •๋ ฌ์€ ๋งˆ์ง„์ด ๊ธฐ๋ณธ์ด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๊ณ ,

flex๋ฅผ ํ†ตํ•ด ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ณ  ๋‹ค์–‘ํ•˜๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

Comments