FlexBox

์กฐ์ดยท2024๋…„ 1์›” 18์ผ
post-thumbnail

FlexBox๋ž€?

๐Ÿ”ธFlexible Box Layout

  • ํ–‰๊ณผ ์—ด ํ˜•ํƒœ๋กœ ํ•ญ๋ชฉ ๋ฌด๋ฆฌ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” 1์ฐจ์› ๋ ˆ์ด์•„์›ƒ ๋ฉ”์„œ๋“œ
  • ์ปจํ…Œ์ด๋„ˆ ๋ถ€๋ชจ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๊ทธ ์•ˆ์— ์•„์ดํ…œ์ด ํ•˜๋‚˜ ์ด์ƒ์ด ์žˆ์„ ๋•Œ flex ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ, ์šฉ์–ด

โœ… flex container :

๋ถ€๋ชจ ์š”์†Œ

โœ… flex item :

์ž์‹ ์š”์†Œ, ์ •๋ ฌ์ด ํ•„์š”ํ•œ ๊ฐ๊ฐ์˜ ์•„์ดํ…œ์„ ๋‹ด์•„ ๋†“๋Š” ๊ณณ

main axis : ๊ฐ€๋กœ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์ด ๊ธฐ๋ณธ๊ฐ’, ์ฃผ์ถ•

cross axis : ์„ธ๋กœ ์œ„์—์„œ ์•„๋ž˜๋กœ ๊ธฐ๋ณธ๊ฐ’, ๊ต์ฐจ์ถ•


Flex Container ์†์„ฑ

๐Ÿ”ธ display: flex

  • Flex ์ปจํ…Œ์ด๋„ˆ์— display: flex;๋ฅผ ์ ์šฉํ•˜๋Š”๊ฒŒ ์‹œ์ž‘
  • Flex ์•„์ดํ…œ๋“ค์€ ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฐ์น˜๋˜๊ณ , ์ž์‹ ์ด ๊ฐ€์ง„ ๋‚ด์šฉ๋ฌผ์˜ width ๋งŒํผ๋งŒ ์ฐจ์ง€ํ•˜๊ฒŒ ๋จ. ๋งˆ์น˜ inline ์š”์†Œ๊ณผ ๊ฐ™๋‹ค. height๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋†’์ด๋งŒํผ ๋Š˜์–ด๋‚จ.

๐Ÿ”ธ flexโ€“direction

  • ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ์•„์ดํ…œ์„ ๋ฐฐ์น˜ํ•  ๋•Œ ์‚ฌ์šฉ. ์‚ฌ์šฉ ํ•  ์ฃผ์ถ• ๋ฐ ๋ฐฉํ–ฅ ์„ค์ • ๊ฐ€๋Šฅ
  • ์ฃผ์ถ•์˜ ์œ„์น˜ - ์ˆ˜ํ‰, ์ˆ˜์ง
  • ์ฃผ์ถ•์˜ ๋ฐฉํ–ฅ - ์ •๋ฐฉํ–ฅ, ์—ญ๋ฐฉํ–ฅ

    ๊ฐ’ (value)

    • row : ๊ธฐ๋ณธ ๊ฐ’. ์ฃผ์ถ•์˜ ์‹œ์ž‘์ ๊ณผ ๋์ ์ด ์ฝ˜ํ…์ธ  ๋ฐฉํ–ฅ๊ณผ ๋™์ผ
    • row-reverse : row์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ ์ฃผ์ถ•์˜ ์‹œ์ž‘์ ๊ณผ ๋์ ์ด ๋ฐ˜๋Œ€์— ์œ„์น˜
    • column : ์„ธ๋กœ๋กœ ์ •๋ ฌ ๋˜๋Š” block์ถ•๊ณผ ๋™์ผ. ์ฃผ์ถ•์˜ ์™ผ์ชฝ ์œ„์—์„œ ์•„๋ž˜๋กœ
    • column : ์ˆ˜์ง์ธ๋ฐ ๋ฐฉํ–ฅ์ด ์ฃผ์ถ•์˜ ์™ผ์ชฝ ์•„๋ž˜์—์„œ ์œ„๋กœ

๐Ÿ”ธ flexโ€“wrap

  • item ์ž์‹ ์˜ ์›๋ž˜ ํฌ๊ธฐ๋ฅผ ์žƒ์ง€ ์•Š๊ฒŒ ๋ž˜ํ•‘ํ•˜๋Š” ๊ฐœ๋….
  • flex-item ์š”์†Œ๋“ค์ด ๊ฐ•์ œ๋กœ ํ•œ ์ค„์— ๋ฐฐ์น˜๋˜๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€, ๋˜๋Š” ๊ฐ€๋Šฅํ•œ ์˜์—ญ ๋‚ด์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌํ–‰์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ‘œํ˜„ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์†์„ฑ
  • ์ฆ‰, ์ž์‹ ์˜ width๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ž๋™์œผ๋กœ ์—ฌ๋Ÿฌํ–‰์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๊ฒŒ

    ๊ฐ’ (value)

    • nowrap : ๊ธฐ๋ณธ๊ฐ’. ๋ฌด์กฐ๊ฑด ํ•œ ์ค„์— ๋ฐฐ์น˜. ์‹œ์ž‘์ ์€ flex-direction์„ ๋”ฐ๋ฆ„
    • wrap : ์—ฌ๋Ÿฌํ–‰์œผ๋กœ ๊ฑธ์ณ์„œ ๋ฐฐ์น˜. ์‹œ์ž‘์ ์€ flex-direction์„ ๋”ฐ๋ฆ„
    • wrap-reverse : wrap ์†์„ฑ๊ณผ ๋™์ผ. ์š”์†Œ๊ฐ€ ๋‚˜์—ด๋˜๋Š” ์‹œ์ž‘์ ๊ณผ ๋์ ์˜ ๊ธฐ์ค€์ด ๋ฐ˜๋Œ€๋กœ ๋ฐฐ์น˜

๐Ÿ”ธ flex-flow (shorthand)

  • flexโ€“direction, flexโ€“wrap ๋‘ ๊ฐ€์ง€๋ฅผ ํ•ฉ์ณ์„œ ์”€. ์ŠคํŽ˜์ด์‹ฑ์œผ๋กœ ๊ตฌ๋ถ„

๐Ÿ”ธ justify-content

  • ์ฃผ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์•„์ดํ…œ๋“ค์„ ์–ด๋–ป๊ฒŒ ์ •๋ ฌํ•  ์ง€์— ๋Œ€ํ•œ ์†์„ฑ

    ๊ฐ’ (value)

๐Ÿ”ธ align-items

  • ๊ธฐ๋ณธ ๊ฐ’ : stretch
  • ํ•œ ์ค„๋กœ ์ •๋ ฌ๋˜์–ด์žˆ๋Š” ์•„์ดํ…œ๋“ค์„ ๊ต์ฐจ์ถ•์— ์–ด๋А ์œ„์น˜๋กœ ํ•  ๊ฒƒ์ธ์ง€ ์ •๋ ฌํ•  ๊ฒƒ์ธ์ง€
  • ์ž์‹์ด height ๊ฐ’์ด ์—†์œผ๋ฉด ๋ถ€๋ชจ ๊ธธ์ด ๋งŒํผ ์ญ‰ ๋Š˜์–ด๋‚จ

    ๊ฐ’ (value)

๐Ÿ”ธ align-content

  • ์—ฌ๋Ÿฌ ์ค„์— ๋Œ€ํ•œ ๊ต์ฐจ์ถ•์˜ ์ •๋ ฌ

    ๊ฐ’ (value)


Flex Item ์†์„ฑ

๐Ÿ”ธ order

  • ๊ธฐ๋ณธ๊ฐ’ : 0
  • flex, grid ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ํ˜„์žฌ ์š”์†Œ์˜ ๋ฐฐ์น˜ ์ˆœ์„œ๋ฅผ ์ง€์ •
  • HTML ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  CSS๋งŒ์œผ๋กœ ์ˆœ์„œ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š”
  • ๊ฐ’์€ ์ •์ˆ˜ ์‚ฌ์šฉ.
  • ๊ธฐ๋ณธ์œผ๋กœ๋Š” ๋‹ค 0์ด๊ณ  ์ฝ”๋“œ ์ˆœ์„œ๋Œ€๋กœ ๋”ฐ๋ฆ„

๐Ÿ”ธ flex-grow

  • ๊ธฐ๋ณธ๊ฐ’ : 0
  • ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•œ ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ด ๋‚จ๋Š”๋‹ค๋ฉด ์•„์ดํ…œ๋“ค๋ผ๋ฆฌ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 1์ด๋ผ๋ฉด 1๋Œ€ 1์˜ ๋น„์œจ(๋Š˜์–ด๋‚˜๋Š” ์˜์—ญ)๋กœ ๋‚˜๋ˆ  ๊ฐ–๋Š”๋‹ค
  • flex-wrap์„ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ง€์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋–จ์–ด์ง€๋Š” ์•„์ดํ…œ๋“ค๋„ ์œ ์—ฐํ•˜๊ฒŒ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ์ฑ„์šด๋‹ค
  • number ์‚ฌ์šฉํ•ด์„œ ์Œ์ˆ˜ ๊ฐ’์€ ์‚ฌ์šฉ ์•ˆ๋˜๊ณ  ์†Œ์ˆ˜ ๊ฐ€๋Šฅ

๐Ÿ”ธ flex-shrink

  • ๊ธฐ๋ณธ๊ฐ’ : 1
  • flex-grow์™€ ๊ฐ™์€ ์›๋ฆฌ์ง€๋งŒ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…
  • flex-item ์š”์†Œ์˜ ํฌ๊ธฐ๊ฐ€ flex-container ์š”์†Œ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํด ๋•Œ ์ด ์†์„ฑ์„ ์‚ฌ์šฉ
  • ์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค๋ฉด ๋˜‘๊ฐ™์ด 1๋Œ€1์˜ ๋น„์œจ๋กœ ์ค„์–ด๋“ ๋‹ค
  • ๋งŒ์•ฝ์— 0์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ๋ณธ์ธ ํฌ๊ธฐ๋ฅผ ์ง€ํ‚ค๊ณ  ์žˆ๋‹ค

๐Ÿ”ธ flex-basis

  • ๊ธฐ๋ณธ๊ฐ’ : auto
  • flex ์•„์ดํ…œ์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ ์ง€์ •.
  • ์ด๊ฑธ ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์š”์†Œ ์ž์ฒด์˜ ์›๋ž˜์˜ width ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค
  • ์ด๊ฑธ ์ง€์ •ํ•œ๋‹ค๋ฉด ๋Š˜์–ด๋‚˜๊ณ  ์ค„์–ด๋“œ๋Š” ์˜์—ญ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ width ๋‹จ์œ„ ๊ฐ’, ํผ์„ผํŠธ๋„ ๊ฐ€๋Šฅ

๐Ÿ”ธ Item - flex (shorthand)

  • flex-grow, flex-shrink, flex-basis ์ด ์„ธ ๊ฐ€์ง€์˜ ๋‹จ์ถ• ์†์„ฑ
  • ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด grow, shrink๋Š” ์ดˆ๊ธฐ ๊ฐ’์œผ๋กœ ์„ค์ •์ด ๋˜๋Š”๋ฐ basis๋Š” ์•„๋‹ˆ๋‹ค.
  • ํ•œ ๊ฐœ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋‹จ์œ„ ์—†๋Š” ์ˆซ์ž ๊ฐ’์„ ์‚ฌ์šฉํ•  ๋•Œ, flex-basis๊ฐ’์€ auto๊ฐ€ ์•„๋‹ˆ๋ผ 0์ด ๋œ๋‹ค

๐Ÿ“ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • ๊ฐ’์ด ํ•œ ๊ฐœ

    • number๋ฅผ ์ง€์ •ํ•˜๋ฉด flex-grow
    • lenght, %๋ฅผ ์ง€์ •ํ•˜๋ฉด flex-basis
  • ๊ฐ’์ด ๋‘ ๊ฐœ, ์ฒซ ๋ฒˆ์งธ ๊ฐ’์€ number ์—ฌ์•ผ ํ•˜๋ฉฐ flex-grow๊ฐ€ ๋œ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ฐ’์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•จ

    • number๋ฅผ ์ง€์ •ํ•˜๋ฉด flex-shrink
    • length, ํผ์„ผํŠธ ๋˜๋Š” auto๋ฅผ ์ง€์ •ํ•˜๋ฉด flex-basis
  • ๊ฐ’์ด ์„ธ ๊ฐœ

    • flex-grow์— ์‚ฌ์šฉํ•  number
    • flex-shrink์— ์‚ฌ์šฉํ•  number
    • flex-basis์— ์‚ฌ์šฉํ•  length, ํผ์„ผํŠธ, ๋˜๋Š” auto

๐Ÿ“ ๋‹ค๋ฅธ ๊ฐ’๋„ ๊ฐ€๋Šฅ

  • initial
    • ์•„์ดํ…œ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ์˜ width์™€ height ์†์„ฑ์— ๋”ฐ๋ผ ์ •ํ•ด์ง.
    • flex: 0 1 auto์™€ ๋™์ผ
  • auto
    • ์•„์ดํ…œ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ์˜ width์™€ height ์†์„ฑ์— ๋”ฐ๋ผ ์ •ํ•ด์ง.
    • flex: 1 1 auto์™€ ๋™์ผ
  • none
    • ์•„์ดํ…œ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ์˜ width์™€ height ์†์„ฑ์— ๋”ฐ๋ผ ์ •ํ•ด์ง.
    • flex: 0 0 auto์™€ ๋™์ผ

๐Ÿ”ธ align-self

  • ํ•œ ๊ฐ€์ง€ ์•„์ดํ…œ๋งŒ ๋”ฐ๋กœ ์Šคํƒ€์ผ๋ง ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ

    ๊ฐ’ (value)


(์ฐธ๊ณ  ์‚ฌ์ดํŠธ)
1๋ถ„ ์ฝ”๋”ฉ
MDN Web Docs

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