19 Flex

1. flex ๊ฐœ์š”

  • ์š”์†Œ์˜ ํฌ๊ธฐ๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•˜๊ฑฐ๋‚˜ ๋™์ ์ธ ๊ฒฝ์šฐ์—๋„, ๊ฐ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณต.

  • 2๊ฐœ์˜ ๊ฐœ๋…์œผ๋กœ ๋‚˜๋‰จ

    • Container:

      • items๋ฅผ ๊ฐ์‹ธ๋Š” ๋ถ€๋ชจ์š”์†Œ, ๊ฐ item์„ ์ •๋ ฌํ•˜๊ธฐ์œ„ํ•ด ํ•„์ˆ˜!

      • ์†์„ฑ

        • display: flex container ์ •์˜

        • flex-flow (๋‹จ์ถ•)

          • flex-direction:flex items์˜ ์ฃผ์ถ•(main-axis)์„ค์ •

          • flex-wrap: flex items ์—ฌ๋Ÿฌ ์ค„๋ฌถ์Œ(์ค„๋ฐ”๊ฟˆ)์„ค์ •

        • justify-content: ์ฃผ์ถ•(main-axis) ์ •๋ ฌ๋ฐฉ๋ฒ• ์„ค์ •

        • align-content: ๊ต์ฐจ์ถ•(cross-axis) ์ •๋ ฌ ๋ฐฉ๋ฒ• ์„ค์ •(2์ค„ ์ด์ƒ)

        • align-items: ๊ต์ฐจ์ถ•(corss-axis)์—์„œ items์˜ ์ •๋ ฌ๋ฐฉ๋ฒ• ์„ค์ •(1์ค„)

1.1 Container ์†์„ฑ

1.1.1 display

  • ์†์„ฑ

    • flex: flex container๊ฐ€ ์ˆ˜์ง์œผ๋กœ ์Œ“์ž„

    • inline-flex: flex์˜ item์€ ๋™์ผํ•˜๊ฒŒ ์›€์ง์ด์ง€๋งŒ, container๊ฐ€ ์ˆ˜ํ‰์œผ๋กœ ์Œ“์ž„

1.1.2 ์šฉ์–ด ์ •๋ฆฌ

  • ์ฃผ์ถ•(main-axis)

  • ๊ต์ฐจ์ถ•(cross-axis)

  • main-start,flex-start: ์ฃผ์ถ•์˜ ์‹œ์ž‘

  • main-end,flex-end: ์ฃผ์ถ•์˜ ๋

  • cross-start, flex-start: ๊ต์ฐจ์ถ•์˜ ์‹œ์ž‘

  • cross-end, flex-end: ๊ต์ฐจ์ถ•์˜ ๋

  • flex-start, flex-end๋Š” ๋ฐฉํ–ฅ์— ๋งž๋Š” ์‹œ์ž‘์ ๊ณผ ๋์ ์„ ์˜๋ฏธ

1.1.3 flex-flow

  • flex items์˜ ์ฃผ์ถ•(main-axis)์„ ์„ค์ •ํ•˜๊ณ  itesm์˜ ์—ฌ๋Ÿฌ ์ค„ ๋ฌถ์Œ(์ค„๋ฐ”๊ฟˆ)๋„ ์„ค์ •

  • ์†์„ฑ

    • flex-direction: ์ฃผ์ถ•

      • row: ์ˆ˜ํ‰์ถ• (์™ผ=>์˜ค)์œผ๋กœ ํ‘œ์‹œ (main-axis: ์ˆ˜ํ‰, cross-axis:์ˆ˜์ง)

      • row-reverse: ์ˆ˜ํ‰์ถ•(์˜ค=>์™ผ)์œผ๋กœ ํ‘œ์‹œ (main-axis: ์ˆ˜ํ‰, cross-axis:์ˆ˜์ง)

      • column: ์ˆ˜์ง์ถ• (์œ„ => ์•„๋ž˜) ์œผ๋กœ ํ‘œ์‹œ (main-axis: ์ˆ˜์ง, cross-axis:์ˆ˜ํ‰)

      • column-reverse: column์˜ ๋ฐ˜๋Œ€์ถ•(์•„๋ž˜=>์œ„)์œผ๋กœ ํ‘œ์‹œ (main-axis: ์ˆ˜์ง, cross-axis:์ˆ˜ํ‰)

    • flex-wrap: items์˜ ์—ฌ๋Ÿฌ์ค„ ๋ฌถ์Œ(์ค„ ๋ฐ”๊ฟˆ ์„ค์ •)

      • no-wrap: ๋ชจ๋“  items๋ฅผ ์—ฌ๋Ÿฌ ์ค„๋กœ ๋ฌถ์ง€ ์•Š์Œ(ํ•œ์ค„์— ํ‘œ์‹œ) - ๊ธฐ๋ณธ๊ฐ’

      • wrap: items๋ฅผ ์—ฌ๋Ÿฌ ์ค„๋กœ ๋ฌถ์Œ

      • wrap-reverse: itmes๋ฅผ wrap์˜ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ์—ฌ๋Ÿฌ์ค„๋กœ ๋ฌถ์Œ

1.1.4 justify-content

  • ์ฃผ์ถ•(main-axis) ์ •๋ ฌ๋ฐฉ๋ฒ• ์„ค์ •

    • flex-start: items๋ฅผ ์‹œ์ž‘์ (flex-start)์ ์œผ๋กœ ์ •๋ ฌ (๊ธฐ๋ณธ๊ฐ’)

    • flex-end: items๋ฅผ ๋์ (flex-end)์œผ๋กœ ์ •๋ ฌ

    • center: items๋ฅผ ๊ฐ€์šด๋ฐ ์ •๋ ฌ

    • space-between: ์‹œ์ž‘ item์€ ์‹œ์ž‘์ ์—, ๋งˆ์ง€๋ง‰ item์€ ๋์ ์— ์ •๋ ฌ๋˜๊ณ  ๋‚˜๋จธ์ง€ items๋“ค์€ ์‚ฌ์ด์— ๊ณ ๋ฅด๊ฒŒ ์ •๋ ฌ๋จ

    • space-around: items๋ฅผ ๊ท ๋“ฑํ•œ ์—ฌ๋ฐฑ์„ ํฌํ•จํ•˜์—ฌ ์ •๋ ฌ

1.1.5 align-content

  • ๊ต์ฐจ์ถ•์˜ ์ •๋ ฌ๋ฐฉ๋ฒ•์„ ์„ค์ •(2์ค„ ์ด์ƒ)

  • ์ฃผ์˜์ : flex-wrap ์†์„ฑ์„ ํ†ตํ•ด items๊ฐ€ ์—ฌ๋Ÿฌ์ค„์ด๊ณ  ์—ฌ๋ฐฑ์ด ์žˆ์„ ๊ฒฝ์šฐ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ

    items๊ฐ€ ํ•œ ์ค„์ผ ๊ฒฝ์šฐ, align-items ์†์„ฑ ์‚ฌ์šฉํ•˜๊ธฐ!

  • ์†์„ฑ

    • stretch: container์˜ ๊ต์ฐจ์ถ•์„ ๋Š˜๋ฆฌ๊ธฐ ์œ„ํ•ด, items๋ฅผ ๋Š˜๋ฆผ.

    • flex-start

    • flex-end

    • center

    • space-between

    • space-around

1.1.6 align-items

  • ๊ต์ฐจ์ถ•(corss-axis)์—์„œ items์˜ ์ •๋ ฌ๋ฐฉ๋ฒ• ์„ค์ •(1์ค„)

  • ์ฃผ์˜์ ์€ flex-wrap์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ์ค„์ผ ๊ฒฝ์šฐ์—๋Š” align-content ์†์„ฑ์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, align-itmes๋ฅผ align-content ์†์„ฑ๊ฐ’์„ ๊ธฐ๋ณธ๊ฐ’(strech) ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†์„ฑ

    • stretch

    • flex-start

    • felx-end

    • center

    • baseline: items๋ฅผ ๋ฌธ์ž ๊ธฐ์ค€ ์„ ์— ์ •๋ ฌ

1.2 flex items ์†์„ฑ

  • ์†์„ฑ

    • order: flex-item์˜ ์ˆœ์„œ ์„ค์ •

      • flex

        • flex-grow: ์ฆ๊ฐ€ ๋„ˆ๋น„ ๋น„์œจ ์„ค์ •

        • flex-shrink: ๊ฐ์†Œ ๋„ˆ๋น„ ๋น„์œจ ์„ค์ •

        • flex-basis: ๊ณต๊ฐ„ ๋ฐฐ๋ถ„ ์ „ ๊ธฐ๋ณธ ๋„ˆ๋น„ ์„ค์ •

      • align-self:๊ต์ฐจ์ถ•(cross-axis)์—์„œ item์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ• ์„ค์ •

1.2.1 order

  • item์˜ ์ˆœ์„œ ์„ค์ •

  • item์— ์ˆซ์ž ์ง€์ •ํ•˜๊ณ  ์ˆซ์ž ํด์ˆ˜๋ก ์ˆœ์„œ ๋ฐ€๋ฆผ

  • ์Œ์ˆ˜ ํ—ˆ์šฉ

  • HTML ๊ตฌ์กฐ์™€ ์ƒ๊ด€ ์—†์ด ์ˆœ์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉ

  • ์†์„ฑ ๊ฐ’

    • ์ˆซ์ž(๊ธฐ๋ณธ๊ฐ’: 0)

1.2.2 flex

  • ์•„๋ž˜ flex-grow, flex-shrink, flex-basis์˜ ๋‹จ์ถ•์†์„ฑ

  • item์˜ ๋„ˆ๋น„(์ฆ๊ฐ€, ๊ฐ์†Œ, ๊ธฐ๋ณธ)์„ ์„ค์ •ํ•˜๋Š” ๋‹จ์ถ•์†์„ฑ.

  • flex: ์ฆ๊ฐ€๋„ˆ๋น„ ๊ฐ์†Œ๋„ˆ๋น„ ๊ธฐ๋ณธ๋„ˆ๋น„;

1.2.3 flex-grow

  • item์˜ ์ฆ๊ฐ€ ๋„ˆ๋น„ ๋น„์œจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์ˆซ์ž๊ฐ€ ํฌ๋ฉด ๋” ๋งŽ์€ ๋„ˆ๋น„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • item ์ด ๊ฐ€๋ณ€ ๋„ˆ๋น„๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜, ๊ฐ’์ด 0์ผ ๊ฒฝ์šฐ ํšจ๊ณผ ์—†์Œ

  • ์†์„ฑ๊ฐ’

    • ์ˆซ์ž(๊ธฐ๋ณธ๊ฐ’: 0)๋กœ ๋„ˆ๋น„ ๋น„์œจ ์„ค์ •

    • basis๋„ auto๋ผ๊ณ  ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ 0 ์ž…๋‹ˆ๋‹ค!!!

      .item{
      flex: 1 1 20px; /* ์ฆ๊ฐ€๋„ˆ๋น„ ๊ฐ์†Œ๋„ˆ๋น„ ๊ธฐ๋ณธ๋„ˆ๋น„*/
      flex: 1 1; /* ์ฆ๊ฐ€๋„ˆ๋น„ ๊ฐ์†Œ๋„ˆ๋น„*/
      flex: 1 20px; /* ์ฆ๊ฐ€๋„ˆ๋น„ ๊ธฐ๋ณธ๋„ˆ๋น„ (๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด flex-basis๊ฐ€ ์ ์šฉ๋จ*/
      }

1.2.4 flex-shrink

  • item์˜ ๊ฐ์†Œํ•˜๋Š” ๋„ˆ๋น„์˜ ๋น„์œจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์ˆซ์ž๊ฐ€ ํฌ๋ฉด ๋” ๋งŽ์€ ๋„ˆ๋น„๊ฐ€ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.

  • item ์ด ๊ฐ€๋ณ€ ๋„ˆ๋น„๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜, ๊ฐ’์ด 0์ผ ๊ฒฝ์šฐ ํšจ๊ณผ ์—†์Œ

  • ์†์„ฑ๊ฐ’

    • ์ˆซ์ž(๊ธฐ๋ณธ๊ฐ’: 1)๋กœ ๊ฐ์†Œ ๋„ˆ๋น„ ๋น„์œจ ์„ค์ •

1.2.5 flex-basis

  • item์˜ ๊ณต๊ฐ„ ๋ฐฐ๋ถ„ ์ „ ๊ธฐ๋ณธ ๋„ˆ๋น„ ์„ค์ •

  • ๊ฐ’์ด auto์ผ ๊ฒฝ์šฐ, width, height๋“ฑ์˜ ์†์„ฑ์œผ๋กœ item์˜ ๋„ˆ๋น„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ•˜์ง€๋งŒ ๋‹จ์œ„ ๊ฐ’์ด ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค.

  • ์†์„ฑ๊ฐ’

    • auto: ๊ฐ€๋ณ€item๊ณผ ๊ฐ™์€ ๋„ˆ๋น„(๊ธฐ๋ณธ๊ฐ’)

    • ๋‹จ์œ„: cm, px, em ๋“ฑ ๋‹จ์œ„ ์ง€์ •

1.2.6 align-self

  • ๊ต์ฐจ์ถ•(cross-axis)์—์„œ ๊ฐœ๋ณ„ item์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ์„ค์ •

  • align-items๋Š” container ๋‚ด ๋ชจ๋“  items์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•„์š”์— ์˜ํ•ด ์ผ๋ถ€ item๋งŒ ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๊ฒฝ์šฐ, align-self๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ์†์„ฑ์€ align-items์†์„ฑ๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†์„ฑ๊ฐ’

    • auto: container์˜ align-items์†์„ฑ์„ ์ƒ์†๋ฐ›์Œ(๊ธฐ๋ณธ๊ฐ’)

    • stretch: container์˜ ๊ต์ฐจ์ถ•์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด item์„ ๋Š˜๋ฆผ

    • flex-start: item์„ ๊ฐ ์ค„์˜ ์‹œ์ž‘์ (flex-start)์œผ๋กœ ์ •๋ ฌ

    • flex-end: item์„ ๊ฐ ์ค„์˜ ๋์ (flex-end)์œผ๋กœ ์ •๋ ฌ

    • center: item์„ ๊ฐ€์šด๋ฐ ์ •๋ ฌ

    • baseline: item์„ ๋ฌธ์ž ๊ธฐ์ค€์„ ์— ์ •๋ ฌ

##### [๋งจ ์œ„๋กœ ๋Œ์•„๊ฐ€๊ธฐ](#flex)

Last updated