๐Ÿผ Flex-box

KHWยท2021๋…„ 9์›” 6์ผ
0

CSS

๋ชฉ๋ก ๋ณด๊ธฐ
10/16
post-custom-banner

๐ŸŒŽ Flex

1) Flex container
2) Flex items

๊ฐœ๋…์ •๋ฆฌ

๋”ฐ๋กœ container์˜ width height๊ฐ€ ์„ค์ •๋˜์–ด์žˆ์ง€์•Š๋‹ค๋ฉด
item์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์˜ width height์— ์ถ”๊ฐ€ํ•˜์—ฌ margin padding์ด ์ ์šฉ๋˜์–ด ๋„“์ด์™€ ๋†’์ด๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

๐ŸŒ• Flex ์ปจํ…Œ์ด๋„ˆ ์†์„ฑ

  1. display
  2. flex-direction
  3. flex-wrap
  4. justify-content
  5. align-content
  6. align-items

1. display

1) display : flex => ์ˆ˜์ง , ๊ฐ€๋กœ๋กœ ์ตœ๋Œ€๋กœ
2) display : inline-flex => ์ˆ˜ํ‰ , ๊ฐ€๋กœ๋กœ ์ตœ์†Œ๋กœ

  • flex๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ธ๋กœ๋กœ ์—ฐ๊ฒฐํ•˜๋‚˜
  • inline-flex๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ€๋กœ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

2. flex-direction

1) Default(Row) : ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ
2) Row-reverse : ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ
3) column : ์œ„์—์„œ ์•„๋ž˜๋กœ
4) column-reverse : ์•„๋ž˜์—์„œ ์œ„๋กœ

  • ์•„์ดํ…œ์ด ์ •๋ ฌ๋  ์ฃผ์ถ•์ง€์ • (์–ด๋””์—์„œ ์–ด๋””๋กœ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ขŒ์—์„œ ์šฐ๋กœ )

3. flex-wrap

1) nowrap : ๋ถ€๋ชจ ์ปจํ…์ธ  ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ์ž์‹ ์ปจํ…์ธ  ์‚ฌ์ด์ฆˆ์˜ ํ•ฉ์ด ๋” ์ปค๋„ ๋ถ€๋ชจ ์•ˆ์—์„œ ๋‹ค์Œ ์ค„๋กœ ๊ฐ€์ง€์•Š๊ณ  ์‚ฌ์ด์ฆˆ๋ฅผ ๋งž์ถฐ์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค ( ๊ธฐ๋ณธ๊ฐ’ : ์–ต์ง€๋กœ ํ‹€์— ๋งž์ถฐ ) => flex-shrink๊ฐ€ 1๋กœ default์ด๊ธฐ ๋•Œ๋ฌธ์—
2) wrap : ๋ถ€๋ชจ ์ปจํ…์ธ  ์‚ฌ์ด์ฆˆ์— ๋งž์ถฐ์„œ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ชจ์ž๋ผ๋ฉด ๋‹ค์Œ ์ค„์—์„œ ๋‹ค์‹œ ๊ทธ๋ฆฐ๋‹ค. (๊ฐ€๋Šฅํ•˜๋ฉด ์ด๊ฑธ ์“ฐ๊ธธ ์ถ”์ฒœ)
3) wrap-reverse

  • nowrap์€ container์•ˆ์˜ item์˜ width ์ดํ•ฉ์ด ๋ถ€๋ชจ ์ปจํ…์ธ  ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์–ต์ง€๋กœ ํ‹€์— ๋งž์ถฐ์„œ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•œ๋‹ค

4. justify-content

1) Flex-start : ์™ผ์ชฝ ์ •๋ ฌ
2) Flex-end : ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ
3) center : ์ขŒ์šฐ ์ค‘์•™ ์ •๋ ฌ
4) space-between : ์‚ฌ์ด์—๋งŒ ์—ฌ๋ฐฑ
5) space-around : ์‚ฌ์ด + ์–‘์ชฝ ๋๋„ ์—ฌ๋ฐฑ
6) stretch : ๊ฝ‰ ์ฑ„์šด๋‹ค (๊ธฐ๋ณธ๊ฐ’)
7) space-evenly : space-around์—์„œ ์–‘๋ ๊ฐ„๊ฒฉ๊ณผ ๊ฐ™์€ ์•ˆ์ชฝ ๊ฐ„๊ฒฉ

  • ์ฃผ์ถ• ์ •๋ ฌ (๊ฐ€๋กœ ๊ธฐ์ค€ ์„ธ๋กœ ์ฐ๊ธฐ)

5. align-content

  • (์ค‘์š”) space~๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” item๋“ค์„ ํ•˜๋‚˜์˜ ์„ธํŠธ๋กœ ๋ณด๊ณ  ์ •๋ ฌ์‹œํ‚จ๋‹ค.

1) Flex-start : ์œ„๋กœ ์ •๋ ฌ
2) Flex-end : ์•„๋ž˜๋กœ ์ •๋ ฌ
3) center : ์œ„์•„๋ž˜์˜ ์ค‘์•™ ์ •๋ ฌ
4) space-between : ๋งจ ์œ„์™€ ์•„๋ž˜ ๊ณต๋ฐฑ๋งŒ ์—†์ด ๊ฐ๊ฐ ์—ฌ๋ถ„์กด์žฌ
5) space-around : ๋งจ ์œ„์™€ ์•„๋ž˜ ๊ณต๋ฐฑ ํฌํ•จ ๊ฐ๊ฐ ์—ฌ๋ถ„์กด์žฌ
6) stretch : ๊ฝ‰ ์ฑ„์šด๋‹ค (๊ธฐ๋ณธ๊ฐ’)

  • ๊ต์ฐจ์ถ• ์ •๋ ฌ (์„ธ๋กœ ๊ธฐ์ค€ ๊ฐ€๋กœ ์ฐ๊ธฐ)

  • Items๊ฐ€ ์—ฌ๋Ÿฌ ์ค„(2์ค„ ์ด์ƒ)์ด๊ณ  ์—ฌ๋ฐฑ์ด ์žˆ์„ ๊ฒฝ์šฐ๋งŒ ์‚ฌ์šฉ
    => flex-wrap : wrap์ผ ๊ฒฝ์šฐ ์œ ํšจ

6. align-items

  • (์ค‘์š”) 2์ค„์ผ ๊ฒฝ์šฐ ๊ฐ๊ฐ์˜ ๋ผ์ธ์— ๋Œ€ํ•˜์—ฌ item๋งˆ๋‹ค์˜ ์ •๋ ฌ์„ ์‹œํ‚จ๋‹ค.

1) Flex-start : ์œ„๋กœ ์ •๋ ฌ
2) Flex-end : ์•„๋ž˜๋กœ ์ •๋ ฌ
3) center : ์œ„์•„๋ž˜์˜ ์ค‘์•™ ์ •๋ ฌ
4) stretch : ๊ฝ‰ ์ฑ„์šด๋‹ค (๊ธฐ๋ณธ๊ฐ’)
5) baseline : ๊ธ€์ž๋”ฐ๋ผ ์ •๋ ฌ

  • flex line์„ ๊ธฐ์ค€์œผ๋กœ ์•„์ดํ…œ์„ ์ •๋ ฌํ•œ๋‹ค.

align-content์™€ align-items์˜ ๊ด€๊ณ„ (์ค‘์š”)

Items๊ฐ€ flex-wrap์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ค„(2์ค„ ์ด์ƒ)์ผ ๊ฒฝ์šฐ์—๋Š” align-content ์†์„ฑ์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ align-items๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด align-content ์†์„ฑ์„ ๊ธฐ๋ณธ๊ฐ’(stretch)์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ„๋‹จํžˆ 2์ค„์ด์ƒ์€ align-content๋ฅผ 1์ค„์€ align-items๋ฅผ ์“ฐ์ž

line-height

item์˜ text ์„ธ๋กœ์ •๋ ฌ์„ ์œ„ํ•ด width์™€ height ๋Œ€์‹ 
width์™€ line-height๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ


align-items ์™€ align-content ์ฐจ์ด

align-items(์„ ์ •๋ ฌ) : flex line์„ ๊ธฐ์ค€์œผ๋กœ ์•„์ดํ…œ์„ ์ •๋ ฌํ•œ๋‹ค.
align-content(์„ ์ •๋ ฌ): flex line์„ ์ •๋ ฌํ•œ๋‹ค.


flex / flex-inline ์˜ˆ์‹œ

ex) flex ์˜ˆ์‹œ

ex) inline - flex ์˜ˆ์‹œ

๐ŸŒ• Flex ์•„์ดํ…œ ์†์„ฑ

  1. flex-grow
  2. flex-shrink
  3. flex-basis
  4. order
  5. align-self

7. flex-grow

๊ธฐ๋ณธ : 0

  • ์ฃผ์ถ•์˜ item๋“ค์˜ ๊ฐ๊ฐ์˜ width๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ณต๊ฐ„ ์—ฌ๋ฐฑ์„ ๋น„์œจ์— ๋”ฐ๋ผ ์ฑ„์šด๋‹ค
    ( ๋งŒ์•ฝ ์ด๋ฏธ item๋“ค์˜ width์˜ ํ•ฉ์ด container๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ๊ฝ‰ ์ฐจ๋ฉด ๋” ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด ์—†์œผ๋‹ˆ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค )

  • ์ฆ๊ฐ€ ๋„ˆ๋น„ ๋น„์œจ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ „๋ถ€ ์ฑ„์šฐ๋ฉฐ
    width๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.
    1:2:1๋กœ ์žก์œผ๋ฉด (width +1 : width + 2 : width +1)

  • width๊ฐ€ ๋”ฐ๋กœ ์—†์œผ๋ฉด auto๋กœ ์ฆ๊ฐ€ ๋„ˆ๋น„๋ฅผ ๊ฐ๊ฐ ์ฒ˜๋ฆฌ
    1:2:1๋กœ ์žก์œผ๋ฉด ( 1 : 2 : 1 )

ํ•ด๋‹น ๋‚ด์šฉ์€ ๊ฐ€๋ณ€ํ•˜๋Š” ๊ธธ์ด์— ๋Œ€ํ•ด ํ™”๋ฉด์˜ ์˜์—ญ์ด ์ค„์–ด๋“ค๊ฑฐ๋‚˜ ๋Š˜์„ ๋•Œ ๊ณ ์ •๋œ item์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๊ฒƒ๊ณผ ๊ฐ€๋ณ€ํ•˜๋Š” item ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ๊ฒƒ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

<div class="container">
  <div class="item">๊ณ ์ •</div>
  <div class="item">๊ฐ€๋ณ€</div>
  <div class="item">๊ณ ์ •</div>
</div>
<style>
.container{
  display:flex
}
.item{
  width:100px;
  height:100px;
  background-color: tomato;
  border : 3px solid;
}
.item:nth-child(2){
  flex-grow:1;
}

</style>

์ด๋Ÿฐ์‹์œผ๋กœ width๊ฐ€ ๋ณ€ํ•ด๋„ ๊ณ ์ •๋œ ๋ถ€๋ถ„์€ ์œ ์ง€๋˜๊ณ  ๊ฐ€๋ณ€ width๋งŒ ๋ฐ”๋€Œ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

8. flex-shrink

๊ธฐ๋ณธ : 1

  • 0์ผ๊ฒฝ์šฐ ๊ฐ์†Œ๋„ˆ๋น„ ๋น„์œจ์ด ์—†๊ฒŒ ํ•œ๋‹ค.

9. flex-basis

๊ธฐ๋ณธ : auto

  • ์š”์†Œ์˜ ๊ธฐ๋ณธ๋„ˆ๋น„ ์„ค์ •
    auto๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด width๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

10. order ์†์„ฑ

๊ธฐ๋ณธ๊ฐ’ : 0

  • ์–‘/์Œ์ˆ˜ ๋‘˜๋‹ค ๊ฐ€๋Šฅ
    ์ˆซ์ž๊ฐ€ ์ž‘์„์ˆ˜๋ก ์•ž ์ˆœ์„œ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.

11. align-self

๊ธฐ๋ณธ๊ฐ’ : auto

  • ๊ฐœ๋ณ„์  item์— ๋Œ€ํ•œ ๊ต์ฐจ์ถ• ์ •๋ฆฌ

flex ๋‹จ์ถ•ํ‚ค

flex-grow / flex-shrink / flex-basis๋ฅผ ํ•œ๋ฒˆ์— ์“ธ์ˆ˜์žˆ๋Š”๋ฐ
์ด๋•Œ flex : 1๋กœ ์„ค์ •ํ•˜๋ฉด ์ด๋Š” flex : 1 1 auto์™€๋Š” flex-basis๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ ๊ฐ™์ง€์•Š๋‹ค.

item๊ฐ„ ์—ฌ๋ฐฑ ๋งŒ๋“ค๊ธฐ

  1. ๋ชจ๋‘ margin:right ์—ฌ๋ฐฑ ์ง€์ •
  2. .item:last-child ์•„์ดํ…œ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„๋งŒ margin:right๋ฅผ 0์œผ๋กœ ํ•˜๊ธฐ

+a

์ œ๋ชฉflexgrid
justify-contentcontainer ๊ธฐ์ค€ ์ฃผ์ถ• ์ •๋ ฌcontainer ๊ธฐ์ค€ ์ฃผ์ถ• ์ •๋ ฌ
justify-itemsXitems ๊ธฐ์ค€ ์ฃผ์ถ• ์ •๋ ฌ
align-content2์ค„ ์ด์ƒ์ผ๋•Œ ์‚ฌ์šฉ , items ๊ธฐ์ค€ ๊ต์ฐจ์ถ• ์ •๋ ฌcontainer ๊ธฐ์ค€ ๊ต์ฐจ์ถ• ์ •๋ ฌ
align-items1์ค„ ์ผ๋•Œ ์‚ฌ์šฉ, items ๊ธฐ์ค€ ๊ต์ฐจ์ถ• ์ •๋ ฌitems ๊ฐ๊ฐ ๊ต์ฐจ์ถ• ๊ธฐ์ค€ ์ •๋ ฌ

flex์˜ align-content , align-items๋Š” ๊ฐ„๋‹จํžˆ 1์ค„์ด๋ƒ 2์ค„์ด๋ƒ๋กœ ๊ตฌ๋ถ„ํ•˜์ž


grid-template-areas์™€ grid-row grid-column

์ƒํ™ฉ๊ณผ ์ทจํ–ฅ์˜ ์ฐจ์ด

grid-template-areas ๊ฐ™์€ ๊ฒฝ์šฐ ์ „์ฒด Grid ๊ตฌ์กฐ๋ฅผ ํ•œ๋ˆˆ์— CSS ์ฝ”๋“œ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ,
๊ฐ Grid Item์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ถˆํŽธํ•จ

๋ฉ˜ํ† ๋‹˜ : grid-row์™€ grid-column ์‚ฌ์šฉ์„ ๋” ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
span ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ํ™•์žฅ์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ถ€ Grid Item์˜ ๊ฐ’๋งŒ ์ง€์ •ํ•ด๋„ ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌ

์ถœ์ฒ˜

flex

profile
๋‚˜์˜ ํ•˜๋ฃจ๋ฅผ ๊ฐ€๋Šฅํ•œ ๊ธฐ์–ตํ•˜๊ณ  ์ฆ๊ธฐ๊ณ  ํ›„ํšŒํ•˜์ง€๋ง์ž
post-custom-banner

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