[JAYโŒจ๏ธCSS] ์‹ค๋ฌด๋ฅผ ์œ„ํ•ด ์ž‘์„ฑํ•˜๋Š” CSS flex ํ•ต์‹ฌ ์ •๋ฆฌ

2023. 3. 8. 22:32ใ†html&css

๋ฐ˜์‘ํ˜•

 

 

์‹ค๋ฌด๋ฅผ ์œ„ํ•ด ์ž‘์„ฑํ•˜๋Š” CSS flex ํ•ต์‹ฌ ์ •๋ฆฌ

1๏ธโƒฃ flex์˜ ๊ตฌ์กฐ
  • flexbox๋Š” ํ–‰๊ณผ ์—ด ํ˜•ํƒœ๋กœ ํ•ญ๋ชฉ ๋ฌด๋ฆฌ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ์ผ์ฐจ์› ๋ ˆ์ด์•„์›ƒ.
  • ๊ณต๊ฐ„์— ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์ถ•์†Œ๋˜๊ฑฐ๋‚˜ ์—ฌ๋ฐฑ์˜ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ๋ณ€ํ˜•๋œ๋‹ค. ์ฆ‰ ์œ ์—ฐํ•œ ๋น„์œจ๋กœ ์‚ฌ์ด์ฆˆ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ธฐ๋Šฅ!
  • ๋ถ€๋ชจ ์š”์†Œ๋Š” flex-container ์ž์‹ ์š”์†Œ๋Š” flex-item

 

 

flex์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ (์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : ์œ„๋‹ˆ๋ธŒ)
flex์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ (ํ•ด๋‹น ์ด๋ฏธ์ง€ ์ถœ์ฒ˜๋Š” ์œ„๋‹ˆ๋ธŒ ์ˆ˜์—… ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.)

 

 

 

 

2๏ธโƒฃ flex-direction
  • ์•„์ดํ…œ์„ ๋ฐฐ์น˜ํ•  ๋•Œ ์ฃผ์ถ•๊ณผ ๋ฐฉํ–ฅ์„ ์ง€์ •!
  • โžก๏ธ row ๊ธฐ๋ณธ๊ฐ’. ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ๋ฐฐ์น˜.
  • โฌ‡๏ธ column ์œ„์—์„œ ์•„๋ž˜๋กœ ๋ฐฐ์น˜.
  • โฌ…๏ธ row-reverse ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ ๋ฐฐ์น˜.
  • โฌ†๏ธ column-reverse ์•„๋ž˜์—์„œ ์œ„๋กœ ๋ฐฐ์น˜.

 

 

 

3๏ธโƒฃ  Justify-content
  • row, column์˜ ์ฃผ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์น˜.
  • flex-start ๊ธฐ๋ณธ ๊ฐ’, ์‹œ์ž‘ ์ถ• ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์น˜.
  • flex-end ๋งˆ์ง€๋ง‰ ์ถ• ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์น˜.
  • center ๊ฐ€์šด๋ฐ ๋ฐฐ์น˜.
  • space-between ์–‘ ๋ ๊ธฐ์ค€ ์š”์†Œ๋“ค๋งŒ ๋™์ผํ•œ ๊ฐ„๊ฒฉ์„ ๋‘๊ณ  ๋ฐฐ์น˜.
  • space-around ์–‘ ๋์— ์š”์†Œ๋“ค๊ณผ ๋™์ผํ•œ ๊ฐ„๊ฒฉ 1๊ฐœ๋ฅผ ๋‘๊ณ  ๋ฐฐ์น˜.
  • space-evenly ์–‘ ๋์— ๊ฐ๊ฐ ์š”์†Œ๋“ค๊ณผ ๋™์ผํ•œ ์—ฌ๋ฐฑ์„ ๋„ฃ์–ด ๋ฐฐ์น˜

 

justify-content ๋ ˆ์ด์•„์›ƒ
justify-content ๋ ˆ์ด์•„์›ƒ

 

๐Ÿ’ก space-around ์™€ space-evenly์˜ ์ฐจ์ด?
์š”์†Œ ์‚ฌ์ด์— ๊ณ„์‚ฐ๋œ ๋™์ผํ•œ ์—ฌ๋ฐฑ์„ ์–‘ ๋์—๋„ ํ• ๋‹นํ•  ๋•Œ
space-around ๋Š” ์—ฌ๋ฐฑ 1๊ฐœ ํฌ๊ธฐ๋ฅผ ์–‘ ๋์— ๋ฐฐ์น˜. ์ฆ‰ 50%์”ฉ ์—ฌ๋ฐฑํฌ๊ธฐ ํ• ๋‹น.
space-evenly ๋Š” ์ฒ˜์Œ๊ณผ ๋์— ๊ฐ๊ฐ 1๊ฐœ์”ฉ ์—ฌ๋ฐฑํฌ๊ธฐ๋ฅผ ํ• ๋‹น.

 

 

 

4๏ธโƒฃ  align-items, align-content
  • align-items ๊ต์ฐจ ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์น˜.
  • align-content flex-wrap:wrap ์ธ ๊ฒฝ์šฐ ๊ต์ฐจ ์ถ• ์•„์ดํ…œ๋“ค์ด ์—ฌ๋Ÿฌ ์ค„์ผ๋•Œ ์‚ฌ์šฉ.

 

 

 

5๏ธโƒฃ  flex-wrap
  • ํ•œ ์ค„์— ๋ฐฐ์น˜๋˜๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€, ๊ฐ€๋Šฅํ•œ ์˜์—ญ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ํ–‰์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ‘œํ˜„ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •.
/* flex-container ์— flex-item ํ•œ ์ค„๋กœ ๋ฐฐ์น˜ */
flex-wrap : nowrap;


/* flex-container ์ตœ๋Œ€ ํญ์— flex-item ์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค ํ• ๋‹น๋˜๋ฉด ๋‹ค์Œ ํ–‰์œผ๋กœ ๋„˜๊ธฐ๊ธฐ */
flex-wrap : wrap;


/* flex-direction, flex-wrap ๋‹จ์ถ•์†์„ฑ */
flex-flow: row wrap;

 

 

 

6๏ธโƒฃ  flex-basis
  • ๊ธฐ๋ณธ ๊ฐ’์€ auto.
  • px, em, % ๋“ฑ์˜ ๋‹จ์œ„๋กœ flex-item์˜ ์ดˆ๊ธฐ ์‚ฌ์ด์ฆˆ ์„ค์ •, ๋‚ด๋ถ€ ์ฝ˜ํ…์ธ ์— ๋”ฐ๋ผ ์œ ์—ฐํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.
  • flex-basis ๊ฐ’์ด ์ ์šฉ๋˜์–ด์žˆ๋‹ค๋ฉด row์ผ ๊ฒฝ์šฐ width ๊ฐ’ ๋ฌด์‹œ, column์ผ ๊ฒฝ์šฐ height ๊ฐ’ ๋ฌด์‹œ.

 

 

 

7๏ธโƒฃ  flex-grow
  • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๋น„์œจ ์ง€์ •! ๊ธฐ๋ณธ ๊ฐ’์€ 0.
  • ์—ฌ๋ฐฑ์ด ์ƒ๊ฒผ์„ ๋•Œ ๊ฐ’์„ ์ฃผ๋ฉด ์ˆซ์ž๊ฐ€ ํฐ ๋น„์œจ๋Œ€๋กœ ๋Š˜์–ด๋‚˜๋ฉด์„œ ์˜์—ญ์„ ์ฑ„์šด๋‹ค. ๊ฐ’์ด 0์ธ ๊ฒฝ์šฐ ๋Š˜์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.
  • flex-grow ์™€ ๊ฐ™์ด flex-basis:auto ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด. ์ •ํ™•ํ•˜๊ฒŒ 3๋“ฑ๋ถ„ ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ,
    grow + basis ์˜ ์‚ฌ์ด์ฆˆ ์ฆ‰ ์ปจํ…์ธ ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋”ํ•ด์ ธ์„œ ์ถœ๋ ฅ๋œ๋‹ค!
    flex-basis ์— ์‚ฌ์ด์ฆˆ๋ฅผ ์ž…๋ ฅํ•ด์„œ auto๋ฅผ ํ’€์–ด์ฃผ๋ฉด ์ปจํ…์ธ ์™€ ๊ด€๊ณ„ ์—†์ด ๋™์ผํ•œ ๋น„์œจ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

 

 

 

8๏ธโƒฃ flex-shrink
  • flex-grow์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…. ๊ธฐ๋ณธ ๊ฐ’์€ 1.
  • flex-container ๊ธฐ๋ณธ ์„ค์ •์—์„œ flex-item ์„ ๊ณ„์† ๋”ํ•˜๋ฉด ์š”์†Œ์˜ ํญ์ด ์ค„์–ด๋“ ๋‹ค. flex-shrink : 1 ์ด ๊ธฐ๋ณธ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ.
  • flex-shrink : 0; ์„ ์„ค์ •ํ•˜๊ณ  flex-basis ์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด basis์— ์ž…๋ ฅํ•œ ์‚ฌ์ด์ฆˆ๋กœ flex-item ์˜ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋œ๋‹ค.
  • flex-item ์—๋Š” min-width:auto ๊ฐ€ ๊ฐ•์ œ๋œ๋‹ค! flex-shrink:1 ๊ธฐ๋ณธ ์†์„ฑ์œผ๋กœ ์š”์†Œ ํญ์„ ์ค„์—ฌ์„œ ๋น„์œจ์„ ๋งž์ถ”์ง€๋งŒ ์š”์†Œํฌ๊ธฐ๊ฐ€ ์ตœ์†Œ ํญ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ container ์—์„œ ์š”์†Œ๊ฐ€ ํŠ€์–ด๋‚˜์˜ค๊ฑฐ๋‚˜, flex-basis ์— ์ž…๋ ฅํ•œ ๊ฐ’์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿด ๋•Œ flex-item ์— min-width:0; ์„ ์ ์šฉํ•ด์ค˜์•ผํ•œ๋‹ค!

 

 

 

8๏ธโƒฃ flex ๋‹จ์ถ•์†์„ฑ
  • flex : flex-grow flex-shrink flex-basis ์กฐํ•ฉ์˜ ๋‹จ์ถ•์†์„ฑ ์‚ฌ์šฉ ๊ฐ€๋Šฅ!
/* flex : flex-grow flex-shrink flex-basis */
flex: 1 1 100px;

 

 

flex-basis / flex-shrink / flex-grow ํ™œ์šฉ ์˜ˆ์ œ.
flex-basis / flex-shrink / flex-grow ํ™œ์šฉ ์˜ˆ์ œ. width ์„ค์ • ์—†์ด ๋น„์œจ๋กœ๋งŒ ๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค!

 

 

 

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป  ์š”์•ฝ!
  • ๊ธฐ์กด CSS๋Š” ์‚ฌ์ด์ฆˆ์— ๊ณ ์ • ๊ฐ’์ด๋‚˜ ๋น„์œจ ๋“ฑ์„ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์ง€๋งŒ flex๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ–‰๊ณผ ์—ด์„ ์˜ค๊ฐ€๋ฉฐ ์œ ์—ฐํ•˜๊ฒŒ ๋ฆฌ์‚ฌ์ด์ง• ๊ฐ€๋Šฅ!
  • flex-direction ์„ ํ†ตํ•ด ๋ฐฉํ–ฅ ์ง€์ •ํ•˜๊ณ  justify-content align-items ๋กœ ์š”์†Œ๋ฅผ ์ •๋ ฌ
  • flex-wrap ์„ ์ด์šฉํ•ด์„œ ํ•œ ์ค„์— ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜์‘ํ˜•์„ ๊ตฌํ˜„ํ•  ๋•Œ ์œ ์šฉ.
  • flex-shrink ๋Š” ์š”์†Œ๋ฅผ ์ถ•์†Œ์‹œ์ผœ์„œ ๋น„์œจ ์ •๋ ฌ, flex-grow ๋Š” ์š”์†Œ๋ฅผ ํ™•๋Œ€์‹œ์ผœ์„œ ๋น„์œจ ์ •๋ ฌ.
  • flex-grow flex-shrink flex-basis ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ธฐ๋ณธ ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์ œ์–ดํ•˜๋Š”์ง€๊ฐ€ ๊ด€๊ฑด. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณธ๋ฌธ ์ฐธ๊ณ .
  • flex-basis ๋Š” ์•„์ดํ…œ์˜ ์‚ฌ์ด์ฆˆ ์„ค์ •! flex-shrink ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ž…๋ ฅ๋œ ์‚ฌ์ด์ฆˆ๋Š” ๊ณ ์ •๋˜๊ณ , ๋‚˜๋จธ์ง€ ์˜์—ญ๋งŒ ํ™•๋Œ€,์ถ•์†Œ! ๐Ÿ‘
  • flex ์˜ˆ์ œ๋ฅผ ๊ตฌํ˜„ํ•ด๋†“์€ ํ™”๋ฉด์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๐Ÿ”— git pages์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ :)

 

 

 

 

๋ฐ˜์‘ํ˜•