๐ŸŽจ CSS

์„œ์žฌํ™˜ยท2021๋…„ 8์›” 7์ผ
0

ํ•ด๋‹น ๊ธฐ์ˆ ์ด ๋ฌด์—‡์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ–ˆ๋Š”์ง€ ์ดํ•ดํ•˜๋ฉด ์ข‹๋‹ค.

FLEXBOX FROGGY ๋กœ FLEXBOX๋ฅผ ์—ฐ์Šตํ•ด๋ณด์ž

* flex์˜ ํŠน์ง•

  • flex container ์•ˆ์— ์žˆ๋Š” children์š”์†Œ๋“ค์ด ์„œ๋กœ ๋ธ”๋Ÿญ์„ ํ˜•์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ถ™์–ด์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
  • ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ flex์˜ direction์€ row(์ค„)์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋•Œ์˜ main axis๋Š” ๊ฐ€๋กœ์ด๊ณ  cross-axis๋Š” ์„ธ๋กœ์ด๋‹ค.
  • ๊ฐ€๋กœ ์ •๋ ฌ์„ ํ•  ๋•Œ๋Š” justify-content property๋ฅผ ํ†ตํ•ด flex container ๋‚ด์— ์žˆ๋Š” ์š”์†Œ๋“ค์„ ์ •๋ ฌํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ์„ธ๋กœ ์ •๋ ฌ์„ ํ•  ๋•Œ๋Š” align-items property๋ฅผ ํ†ตํ•ด flex container๋‚ด์— ์žˆ๋Š” ์š”์†Œ๋“ค์„ ์ •๋ ฌํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.

flex property

  • flex-shrink
    container์— ์žˆ๋Š” elem๋“ค์ด ๊ฐ์ž display: flex; ์ผ๋•Œ default๋กœ flex-shrink: 1;์ด ๋ถ€์—ฌ๋œ๋‹ค. ์ด ๋•Œ ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์ž‘๊ฒŒ ํ•˜๋ฉด elem์˜ width๋Š” ์„ค์ •ํ•œ ๊ฐ’์ด ์žˆ๋”๋ผ๋„ ์ผ์ • ๋น„์œจ๋กœ ์ฐŒ๊ทธ๋Ÿฌ์ง€๊ฒŒ ๋˜๋Š”๋ฐ ์ด ๋•Œ flex-shrink์˜ ๊ฐ’์„ 2๋กœ ํ•  ๊ฒฝ์šฐ ์›๋ž˜ 1์˜ ๊ฐ’ ๋ณด๋‹ค 2๋ฐฐ ๋” ์ฐŒ๊ทธ๋Ÿฌ์ง€๊ฒŒ ๋œ๋‹ค.

  • flex-grow
    flex-grow์˜ default = 0์ด๋ฉฐ ํ•ด๋‹น ๊ฐ€๋กœ ์ถ•์ด๋“  ์„ธ๋กœ ์ถ•์ด๋“  container ๋‚ด์— ๊ณต๊ฐ„์ด ๋‚จ์•„ ์žˆ์„ ๊ฒฝ์šฐ ๋งŒ์•ฝ ํŠน์ • elem์— flex-grow: 1;๋กœ ๊ฐ’์„ ์„ค์ • ํ•  ๊ฒฝ์šฐ ๋‚จ์€ ๊ณต๊ฐ„์„ ์„ค์ •ํ•œ elem์ด ๋ชจ๋‘ ์ฑ„์šฐ๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค. ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ elem ๊ฐ„์˜ ๊ฐ„๊ฒฉ์ด ์—†์„ ๊ฒฝ์šฐ ๋™์ผํ•œ width ๋˜๋Š” height๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

  • flex-basis
    flex-grow์™€ flex-shrink๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ์— ์•ž์„œ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฐ’์ด๋‹ค.

axis

ย ย axis์—๋Š” ๋‘๊ฐ€์ง€ ์ถ•์ด ์žˆ๋‹ค. main๊ณผ cross axis์ด๋‹ค. parent์— flex์„ค์ •์‹œ flex-direction์˜ default๋กœ row๊ฐ€ ์„ค์ •์ด ๋˜์–ด ์žˆ๋Š”๋ฐ ๊ทธ ๋•Œ์˜ main axis๋Š” row(๊ฐ€๋กœ)๊ฐ€ ๋˜๊ณ  cross axis๋Š” column(์„ธ๋กœ)์ด ๋œ๋‹ค.

ย ย ๋งŒ์•ฝ flex-direction์ด column์œผ๋กœ ์„ค์ • ๋˜์–ด ์žˆ์„ ์‹œ ๊ทธ ๋•Œ์˜ main axis ๋Š” column์ด ๋˜๊ณ  cross axissms row๊ฐ€ ๋œ๋‹ค.

align-itmes

main axis or cross axis์œ„์— ์žˆ๋Š” element์˜ ๋ฐฐ์—ด์„ ๊ด€์žฅํ•˜๋Š” property

justify-content

main axis or cross axis ์œ„์— ์žˆ๋Š” element์˜ ๋ฐฐ์—ด์„ ๊ด€์žฅํ•˜๋Š” property

  • center
    ๋ชจ๋“  children์„ ๊ฐ™์ด ์ค‘์•™ ์ •๋ ฌ ์‹œํ‚ด
  • space-between
    children ๊ฐ„ ์–‘ ๋๋‹จ์„ ์ œ์™ธํ•˜๊ณ  ์ผ์ • ๊ฐ„๊ฒฉ์„ ๋ณด์œ ํ•จ
  • space-around
    children์ด ์–‘ ์˜†์œผ๋กœ ์ผ์ • ๊ฐ„๊ฒฉ์„ ๋ณด์œ ํ•จ

* Positioning ํ…Œํฌ๋‹‰

align-self
cross axis์ถ•์— ์žˆ๋Š” elem ์ค‘ ํŠน์ • elem์„ ๊ด€์žฅํ•˜์—ฌ ํฌ์ง€์…˜ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ถ€๋ชจ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๋ฐ•์Šค์ด๊ณ  ๊ทธ 
์•ˆ์— ์ž์‹์ด 5๋ช…์ด ์žˆ๋‹ค๋ฉด align-self property๋ฅผ ์ด์šฉํ•  ๊ฒฝ์šฐ 5๋ช… ์ค‘ ํŠน์ •ํ•œ ์ž์‹์— ์ ‘๊ทผํ•ด์„œ ํ•ด๋‹น ์œ„์น˜๋ฅผ ์กฐ์ • ํ•  
์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

align-content
cross axis์ถ•์— ์žˆ๋Š” elem ๊ฐ„์˜ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•œ๋‹ค.

justify-self
์œ„์™€ ๋™๋ฌธ์ด๋‹ค. ๋‹ค๋งŒ ๋‘๊ฐ€์ง€ ํŠน์„ฑ์ด ๋‚˜๋‰˜์–ด์ง„ ๊ฒƒ์€ flex-direction์— ๋”ฐ๋ผ main๊ณผ cross์ถ•์ด ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ์— 
๋”ฐ๋ฅธ ์ถ• ์œ„์— ์žˆ๋Š” ์š”์†Œ๋“ค์˜ ๋ฐฐ์—ด์„ ๊ด€์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋ˆˆ ๊ฒƒ ๋ฟ ๊ฐœ๋…์ ์œผ๋กœ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.

order
html code๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์„ ๋•Œ elem์— order propery๋ฅผ ๋ถ€์—ฌํ•ด์„œ ์ˆœ์„œ๋ฅผ ๊ด€์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. html code์˜ ์œ„์น˜๋ฅผ ๋ณ€
๊ฒฝํ•˜์ง€ ์•Š๊ณ  CSS๋ฅผ ํ†ตํ•ด ์ˆœ์„œ๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

wrap
child elem์„ ๊ฐ€์ง„ parent elem์— ๋ถ€์—ฌํ•˜๋Š” ์†์„ฑ. parent๊ฐ€ flex์ด๊ณ  child์š”์†Œ๋ฅผ elem์œผ๋กœ ๊ฐ–๊ณ  ์žˆ์„ ์‹œ elem์˜
ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•œ ํ›„ ํ•ด๋‹น ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ parent elem์— attribute๋กœ flex-wrap: wrap; ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค
.

* parent์˜ ํŠน์ง•

  • ์ž์‹ ์œ„์น˜์— ์žˆ๋Š” ํƒœ๊ทธ๋“ค์˜ ์œ„์น˜๋ฅผ ๊ด€์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

* block์˜ ํŠน์ง•

  • ์˜†์— ์•„๋ฌด ๊ฒƒ๋„ ์˜ฌ ์ˆ˜ ์—†๋‹ค.

* parent์™€ children์˜ ํŠน์ง•

  • width์™€ height๋Š” children์—์„œ ์„ค์ •ํ•œ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํฌ๊ธฐ๋กœ ์ ์šฉ๋œ๋‹ค.
  • parent ๋ถ€๋ฌธ์—์„œ width์™€ height๊ฐ’์„ ์ ์šฉ ํ•  ๊ฒฝ์šฐ ์ ์šฉํ•œ ๊ฐ€๋กœ์™€ ์„ธ๋กœ์˜ ํฌ๊ธฐ ์•ˆ์— ๋งž๊ฒŒ ์ž์‹ ์š”์†Œ๋“ค์ด ๋ฐฐ์—ด ๋œ๋‹ค.

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