๐Ÿ“‘

Float ~ Grid

Created
Sep 17, 2021 06:12 AM
Type
CSS
Mento
๋ ˆ์˜จ
Created By

Float

notion image
  • flex์˜ ๋“ฑ์žฅ์œผ๋กœ ์ˆ˜์ง, ์ˆ˜ํ‰ ๋ ˆ์ด์•„์›ƒ์„ ๋‹ด๋‹นํ•˜๋Š” ์—ญํ• ์ด ์•ฝํ•ด์ง.
  • ๋‹ค๋งŒ ๊ธฐ์กด์— ์žˆ๋Š” ์ˆ˜ํ‰ ์ •๋ ฌ ๋ ˆ์ด์•„์›ƒ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ.

float์„ ์ด์šฉํ•œ ์ˆ˜ํ‰ ์ •๋ ฌ

  • clear ์†์„ฑ์„ ์ด์šฉํ•ด float์„ ํ•ด์ œ์‹œ์ผœ์•ผ ํ•จ
clear ์ ์šฉ ์ „
clear ์ ์šฉ ์ „
clear ์ ์šฉ ํ›„
clear ์ ์šฉ ํ›„
  • ๋‹จ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์š”์†Œ(4)๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์คฌ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ฐฉ๋ฒ•์€ ์ข‹์ง€ ์•Š์Œ.
  • container CSS์—overflow: hidden์„ ์‚ฌ์šฉํ•˜๋ฉด float ์†์„ฑ์ด ์ •์ƒ์ ์œผ๋กœ ํ•ด์ œ๋จ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ.
  • ๋‹ค๋งŒ overflow: hidden ์†์„ฑ์€ float๊ณผ ์–ด๋– ํ•œ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์น˜ ์•Š๊ฒŒ container ๋ ˆ์ด์•„์›ƒ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ฒŒ ๋จ.
/*ํ•ด๊ฒฐ๋ฒ• - ๋ณ„๋„์˜ clear CSS๋ฅผ ๋งŒ๋“ค์–ด container์˜ class๋กœ ์ถ”๊ฐ€ํ•จ.*/ .clearfix::after { content: ""; display: block; clear: both; }
์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ‰์ •๋ ฌ์ด ๋์Œ์„ ํ™•์ธ.
์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ‰์ •๋ ฌ์ด ๋์Œ์„ ํ™•์ธ.
โš ๏ธ
float์„ ์‚ฌ์šฉํ•œ container ๋‚ด๋ถ€์—” float๋ฅผ ์‚ฌ์šฉํ•œ ์š”์†Œ๋“ค๋งŒ ๋“ค์–ด์žˆ์–ด์•ผ ํ•จ.
float ์†์„ฑ์ด ์—†๋Š” 4๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์ด ์ƒ์„ฑ๋จ.
float ์†์„ฑ์ด ์—†๋Š” 4๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์ด ์ƒ์„ฑ๋จ.
/*ํ•ด๊ฒฐ๋ฒ• - ์„น์…˜์„ ๋‚˜๋ˆ”.*/ <div class="container"> <div class="clearfix"> <div class="item float">1</div> <div class="item float">2</div> <div class="item float">3</div> </div> <div class="item four">4</div> </div

left, right ์‹ค์Šต

<div class="container clearfix"> <div class="item float--left">1</div> <div class="item float--left">2</div> /*3๋‹ค์Œ 4๊ฐ€ ๋‚˜์˜ค๊ธฐ ์œ„ํ•จ.*/ <div class="float--right clearfix"> <div class="item float--left">3</div> <div class="item float--left">4</div> </div> </div>
notion image

์ถ”๊ฐ€ ์ •๋ณด

  • float ์‚ฌ์šฉ์‹œ display ๊ฐ’์ด block์œผ๋กœ ๋ณ€๊ฒฝ๋จ โ†’ inline์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ.
  • float์ด ์žˆ์–ด๋„ grid ๋˜๋Š” flex๊ฐ’์ด ์žˆ๋‹ค๋ฉด block์œผ๋กœ ๋ฐ”๋€Œ์ง€ ์•Š์Œ.

Position

  • absolute๋Š” ์กฐ์ƒ ์š”์†Œ ์ค‘ position ๊ฐ’์„ ๊ฐ€์ง„ ์š”์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์›€์ง์ด๊ฒŒ ๋งŒ๋“ฆ. ๋งŒ์•ฝ ์—†๋‹ค๋ฉด ๋ทฐํฌํŠธ ๊ธฐ์ค€์œผ๋กœ ์œ„์น˜ํ•จ.
  • fixed์˜ ๊ฒฝ์šฐ ์š”์†Œ์˜ ์กฐ์ƒ ์ค‘ ํ•˜๋‚˜๊ฐ€ transform, perspective, filter ์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค๋ฉด ๋ทฐํฌํŠธ ๋Œ€์‹  ๊ทธ ์กฐ์ƒ์„ ์ปจํ…Œ์ด๋‹ ๋ธ”๋ก์œผ๋กœ ์‚ผ์Œ โ†’ ํ•ด๋‹น ์†์„ฑ๋“ค์ด ์œ„์น˜์˜ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Œ์„ ๊ธฐ์–ตํ•˜๊ธฐ.
/*display๋กœ inline ๊ฐ’์ด ์ง€์ •๋์ง€๋งŒ absolute๋กœ ์ธํ•ด block ์ฒ˜๋ฆฌ๋จ. fixed ๋งˆ์ฐฌ๊ฐ€์ง€.*/ .item { display: inline; position: absolute; }
absolute ๋˜๋Š” fixed์ผ ๋•Œ
absolute ๋˜๋Š” fixed์ผ ๋•Œ
๊ทธ ์™ธ position ๊ฐ’์ผ ๋•Œ
๊ทธ ์™ธ position ๊ฐ’์ผ ๋•Œ

์Œ“์ž„ ๋งฅ๋ฝ(Stacking Context)

  • ์š”์†Œ๊ฐ€ ์Œ“์ด๋Š” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•จ. ๊ฐ€์ƒ์˜ Z์ถ•์„ ์‚ฌ์šฉํ•œ HTML ์š”์†Œ์˜ 3์ฐจ์› ๊ฐœ๋…ํ™”.
  • ๋ณ„๋„์˜ ์†์„ฑ ์ง€์ •์—†์ด 3๊ฐœ์˜ ์š”์†Œ๋ฅผ ๋‚˜๋ž€ํžˆ ๋ฐฐ์น˜ํ–ˆ์„ ๋•Œ, ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ transform์œผ๋กœ 1.5๋ฐฐ ํฌ๊ฒŒ ํ–ˆ์„ ๋• ๋‹ค๋ฅธ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌ๋Š” ๋ฐ˜๋ฉด, ๋‚˜๋จธ์ง€ ์š”์†Œ์— opacity๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋ณด์ด์ง€ ์•Š์•˜๋˜ ๋ถ€๋ถ„์ด ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ.
  • z-index๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ์š”์†Œ๋ฅผ ์Œ“์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž„.
  • z-index๋Š” static์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ position ์†์„ฑ์ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ. ๊ธฐ๋ณธ๊ฐ’์€ auto์ž„.
  • z-index๋Š” flex์™€ grid์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

Flex

  • 1์ฐจ์›(์ˆ˜ํ‰, ์ˆ˜์ง) ๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ ์ž‘์—… ์‹œ ์‚ฌ์šฉํ•จ.
  • flex container(๋ถ€๋ชจ) flex item(์ž์‹)๋กœ ๊ตฌ์„ฑ๋จ.

Flex container ์†์„ฑ

  • inline-flex๋Š” inline๊ณผ ์œ ์‚ฌํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง โ†’ ์ฝ˜ํ…์ธ  ํฌ๊ธฐ๋งŒํผ ๋ฒ”์œ„๊ฐ€ ์ค„์–ด๋“ฌ.
  • ๋‹ค๋งŒ inline์€ ๊ธ€์ž๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋„์–ด์“ฐ๊ธฐ ๋“ฑ์˜ ์˜ํ–ฅ์„ ๋ฐ›์Œ. ์›ฌ๋งŒํ•˜๋ฉด block ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.
display : flex;
display : flex;
display : inline-flex;
display : inline-flex;
  • flex-direction์œผ๋กœ ์ฃผ์ถ•๊ณผ ๊ต์ฐจ์ถ•์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Œ.
  • flex-start, flex-end๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Œ. container์˜ ๋๋ถ€๋ถ„์ด flex๊ฐ€ ๋๋‚˜๋Š” ์ง€์ ์ž„.
  • flex-warp์€ ์š”์†Œ์˜ ์ค„๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์ •ํ•จ. ๊ธฐ๋ณธ๊ฐ’์€ nowrap์œผ๋กœ ์ค„๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์Œ. ๋งŒ์•ฝ ์ค„๋ฐ”๊ฟˆ์„ ํฌ๋งํ•œ๋‹ค๋ฉด warp์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ. wrap-reverse๋กœ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์œผ๋กœ ์ค„๋ฐ”๊ฟˆํ•  ์ˆ˜ ์žˆ์Œ.
nowrap. ์ง€์ •ํ•œ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฒŒ container์— ๋“ค์–ด๊ฐ.
nowrap. ์ง€์ •ํ•œ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฒŒ container์— ๋“ค์–ด๊ฐ.
wrap
wrap
  • justify-content, align-items๋กœ ์ถ• ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์žˆ์Œ.
  • align-items์˜ ๊ฒฝ์šฐ height ์ง€์ •์ด ์—†๋‹ค๋ฉด stretch๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๊ฐ€์ง.
    • baseline์€ ๋ฌธ์ž์˜ ์•„๋žซ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•จ.
      baseline์€ ๋ฌธ์ž์˜ ์•„๋žซ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•จ.
โš ๏ธ
wrap์œผ๋กœ ์ง€์ •ํ•œ ์†์„ฑ์— ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ๋Š” ์ด์œ ? โ†’ align-items์— stretch ์†์„ฑ์ด ๊ธฐ๋ณธ์œผ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๊ฐํ˜•์„ ๋ฐ˜์ ˆ๋กœ ๋‚˜๋ˆˆ ์ƒํƒœ์—์„œ stretch ์†์„ฑ์ด ์ ์šฉ๋œ ๊ฒƒ์ž„. ๋”ฐ๋ผ์„œ align-content์— flex-start ๋“ฑ์˜ ์†์„ฑ์„ ๋„ฃ์œผ๋ฉด ํ•ด๊ฒฐ๋จ. align-items๋Š” 1์ค„, align-content๋Š” 2์ค„์„ ๋‹ด๋‹นํ•จ.
align-content ์ ์šฉ ์ „
align-content ์ ์šฉ ์ „
align-content ์ ์šฉ ํ›„
align-content ์ ์šฉ ํ›„

Flex Items ์†์„ฑ

  • flex-grow : ์ฆ๊ฐ€ ๋„ˆ๋น„ ๋น„์œจ์„ ์„ค์ •ํ•จ. ๊ธฐ๋ณธ๊ฐ’์€ 0. ๋งŒ์•ฝ ์ˆซ์ž๋ฅผ ์ค€๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’๋งŒํผ ๋น„์œจ์„ ๋งŒ๋“ฆ. ex) 1์„ ์„ค์ •ํ•˜๋ฉด 1:1:1์˜ ๋น„์œจ๋กœ item์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•จ. ๋งŒ์•ฝ nth-child๋กœ ํŠน์ • ์„ ํƒ์ž๋งŒ ์ฆ๊ฐ€๋„ˆ๋น„๋ฅผ ์ง€์ •ํ•œ๋‹ค๋ฉด 1:2:1 ๋“ฑ ์ž์œ ๋กญ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ. ์ด๋•Œ, item์ด ๊ฐ€์ง„ ํฌ๊ธฐ๋ฅผ ์ œ์™ธํ•œ ๋น„์œจ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— item ์ „์ฒด ํฌ๊ธฐ๊ฐ€ ๊ท ๋“ฑํ•œ ๋น„์œจ์€ ์•„๋‹˜. ๊ท ๋“ฑํ•˜๊ธธ ์›ํ•˜๋ฉด item์˜ width๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋จ. auto๊ฐ€ default.
    • notion image
      ์ถ”๊ฐ€๋กœ ํ•˜๋‚˜์˜ item์—๋งŒ flex-grow์„ 1์ด์ƒ์˜ ๊ฐ’์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ํ™”๋ฉด ๋น„์œจ์ด ๋ณ€ํ•  ๋•Œ flex-grow๋ฅผ ์ง€์ •ํ•œ ์š”์†Œ๋งŒ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ์Œ.
  • flex-shrink : ๊ฐ์†Œ ๋„ˆ๋น„ ๋น„์œจ์„ ์„ค์ •ํ•จ. ๊ธฐ๋ณธ๊ฐ’์€ 1์ด์ง€๋งŒ 0์œผ๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ item์ด container์˜ ๋„ˆ๋น„๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ์ค„์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•จ. ์ˆซ์ž๊ฐ€ ํฌ๋ฉด ํด์ˆ˜๋ก ๋” ๋งŽ์ด ๊ฐ์†Œํ•จ.
    • notion image
  • flex-basis : ์š”์†Œ์˜ ๊ธฐ๋ณธ ๋„ˆ๋น„๋ฅผ ์„ค์ •ํ•จ. ๊ธฐ๋ณธ๊ฐ’์€ auto. auto์ผ ๊ฒฝ์šฐ ํ•ด๋‹น ์Šค์ฝ”ํ”„ ๋‚ด์— ์ง€์ •ํ•œ width, height ๊ฐ’๋Œ€๋กœ ์ถœ๋ ฅํ•จ. ๋งŒ์•ฝ px๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋ณ„๋„๋กœ ์„ค์ •ํ•œ width ๊ฐ’์€ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•จ.
  • flex๋ผ๋Š” ๋‹จ์ถ•์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ์ฃผ์˜ํ•  ์ ์€ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ณณ์€ ๊ธฐ๋ณธ ๊ฐ’์„ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ์˜ˆ์ƒํ•œ๋Œ€๋กœ ํ™”๋ฉด์— ๊ทธ๋ ค์ง. basis๋Š” ์ƒ๋žต์‹œ ๊ธฐ๋ณธ๊ฐ’์ธ auto๊ฐ€ ์•„๋‹Œ 0์ด ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ.
    • /* flex: grow shrink basis */ /* default: 0 1 auto */ .container .item { flex: 1, 1, 0; }
  • order : flex item์˜ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•จ. ๊ธฐ๋ณธ๊ฐ’์€ 0. ์ˆซ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ์ˆœ์„œ๊ฐ€ ๋ฐ€๋ฆผ. ์Œ์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
    • ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— order ๊ฐ’์„ 1๋กœ ์ง€์ •ํ–ˆ์„ ๋•Œ.
      ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— order ๊ฐ’์„ 1๋กœ ์ง€์ •ํ–ˆ์„ ๋•Œ.
  • align-self : item์˜ ๊ต์ฐจ์ถ• ์ •๋ ฌ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ. ๊ธฐ๋ณธ ๊ฐ’ auto. ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์„ ํƒํ•ด flex-start๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋งŒ ํ•ด๋‹น ์†์„ฑ์ด ์ ์šฉ๋จ.
    • ๋‚˜๋จธ์ง„ ์ง€์ •ํ•œ flex-end๋กœ ์ •๋ ฌ.
      ๋‚˜๋จธ์ง„ ์ง€์ •ํ•œ flex-end๋กœ ์ •๋ ฌ.
  • gap : item ๊ฐ„์˜ ์—ฌ๋ฐฑ์„ ๋งŒ๋“ฆ. ๋‹ค๋งŒ ์ตœ์‹  ๊ธฐ๋Šฅ์ด๋ผ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ(ํ•˜์œ„ํ˜ธํ™˜์„ฑx).

Grid

  • 2์ฐจ์› ๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ ์ž‘์—… ์‹œ ์‚ฌ์šฉํ•จ.
  • inline-grid๋Š” container ๋‚ด๋ถ€์˜ ํŠน์„ฑ์€ grid์ด์ง€๋งŒ container ์ž์ฒด๋Š” inline์˜ ํŠน์„ฑ์„ ๊ฐ€์ง.
  • fr์€ fraction์˜ ์•ฝ์–ด๋กœ ๊ณต๊ฐ„ ๋„ˆ๋น„ ๋น„์œจ์„ ์˜๋ฏธํ•จ. ๋‹ค๋งŒ container์˜ ๋„ˆ๋น„๊ฐ€ ์ •์˜๋˜์–ด์•ผ ํ•จ.

Grid container ์†์„ฑ

  • grid-template-rows, grid-template-columns ๋กœ ํ–‰์—ด์„ ๋ช‡ px์”ฉ ์–ผ๋งˆ๋‚˜ ๋‚˜๋ˆŒ์ง€ ๊ฒฐ์ •ํ•จ. repeat์„ ํ†ตํ•ด ๊ฐ„ํŽธํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ(๋ช…์‹œ์ ) โ†’ repeat(8, 1fr)
  • grid-auto-rows, grid-auto-columns๋Š” ์•”์‹œ์ ์œผ๋กœ ๋ฒ”์œ„๊ฐ€ ๋ฒ—์–ด๋‚œ ์š”์†Œ์˜ ํ–‰์—ด ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Œ.
  • grid-auto-flow
    • dense : item์ด ์ •๋ ฌ๋  ๋•Œ ๋นˆ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๋ฉด์„œ ์ •๋ ฌ๋จ.
    • row(default) or column : ์ถ• ๋ฐฉํ–ฅ์„ ๋ฐ”๊ฟ” ์ง€๊ทธ์žฌ๊ทธ๋กœ ์š”์†Œ๊ฐ€ ์Œ“์ด๊ฒŒ ํ•จ.
    • row ๋˜๋Š” column๊ณผ ๋™์‹œ์— ๋„์–ด์“ฐ๊ธฐ๋กœ dense๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋งŒ๋“  ํ–‰์—ด์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ปค์Šคํ…€ ํ•  ์ˆ˜ ์žˆ์Œ.
    • grid-column, grid-row : ๋ผ์ธ์„ ํ™•์žฅํ•จ. ๊ธฐ๋ณธ๊ฐ’์€ 1. ์ž…๋ ฅํ•œ ์ˆซ์ž๋งŒํผ์˜ ๋ผ์ธ์„ ํ™•์žฅํ•จ.
      • .container { grid-column: span 3; }
        notion image
  • justify-content, align-content๋กœ ์ •๋ ฌ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ. ๋นˆ ๊ณต๊ฐ„์ด ์žˆ์–ด์•ผ ์ ์šฉ๋จ.
  • justify-items, align-items๋กœ ์…€ ๋‚ด๋ถ€์˜ ์•„์ดํ…œ ํ–‰์ถ•์„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Œ.
  • grid-template-areas : ํ–‰์—ด์„ ์ œ์–ดํ•จ. ์ œ์–ด๋ฅผ ์œ„ํ•ด grid-area๋ฅผ ํ†ตํ•ด ์ด๋ฆ„์„ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•จ. ์ด๋•Œ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์€ grid-template-rows, grid-template-columns์— ์˜ํ•ด ๊ฒฐ์ •๋จ.
    • .container { border: 4px solid; display: grid; grid-template-rows: repeat(4, 100px); grid-template-columns: repeat(3, 1fr); grid-template-areas: "header header header" "main main aside" ". . aside" "footer footer footer"; } .container > * { border: 2px solid; } .container header {grid-area: header;} .container main {grid-area: main;} .container aside {grid-area: aside;} .container footer {grid-area: footer;}
      notion image
  • grid-gap์œผ๋กœ ๊ฐ ์˜์—ญ์— ๊ฐ„๊ฒฉ์„ ์ค„ ์ˆ˜ ์žˆ์Œ. ๋‘ ๊ฐœ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ํ–‰๊ณผ ์—ด์„ ๋ณ„๋„๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ. ์ด๋Š” grid-row-gap๊ณผ grid-column-gap๊ฐœ๋ณ„์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ.
โš ๏ธ
gap, row-gap, column-gap์€ ํ•˜์œ„ํ˜ธํ™˜์„ฑ์„ ๊ณ ๋ คํ•ด์„œ ์ž‘์„ฑํ•ด์•ผ ํ•จ.

Grid Items ์†์„ฑ

  • grid-row-start : ๊ฐ ํ–‰ ๋ผ์ธ ๋ฒˆํ˜ธ ์ค‘ ๋ช‡ ๋ฒˆ์—์„œ ์‹œ์ž‘ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ •์˜ํ•จ. grid-row-end์œผ๋กœ ๋์ ์„ ์ง€์ •ํ•˜๋ฉด ์–ด๋””์„œ ๋๋‚ผ์ง€๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ. grid-column-start, grid-column-end๋„ ์žˆ์Œ. ๋‹จ์ˆœ ์ˆซ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ span 2๋“ฑ ํ™•์žฅ์ด๋ž€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ span๊ณผ ํ•จ๊ป˜ ํ™•์žฅํ•  ๊ฐœ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ. ์ด๋ฅผ grid-row, grid-column์œผ๋กœ ์ถ•์•ฝํ•  ์ˆ˜ ์žˆ์Œ. start์™€ end๋Š” ์Šฌ๋ž˜์‹œ(/)๋กœ ๊ตฌ๋ณ„ํ•จ.
  • justify-self, align-self: ๊ฐœ๋ณ„์ ์ธ item์˜ ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์žˆ์Œ. ์ด๋•Œ ์„ ํƒ์ž๋กœ๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์›€์ง์ด๊ณ  ์‹ถ์€ item์„ ์ง€์ •ํ•ด์•ผ ํ•จ.
  • order: flex์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 0์œผ๋กœ ์ถœ๋ฐœํ•ด์„œ ์ˆซ์ž๊ฐ€ ์ž‘์„์ˆ˜๋ก ์•ž์— ์ •๋ ฌ๋จ(์Œ์ˆ˜ ๊ฐ€๋Šฅ). ์ด๋•Œ ์„ ํƒ์ž๋กœ order๋ฅผ ์ ์šฉํ•˜๊ณ  ์‹ถ์€ item์„ ์ง€์ •ํ•ด์•ผ ํ•จ.

Grid Functions - container

  • grid-template-rows, grid-template-columns, grid-auto-rows, grid-auto-columns์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • repeat(ํšŸ์ˆ˜, ๋„ˆ๋น„) : ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณตํ• ์ง€. ์ฒซ ๋ฒˆ์งธ ์ธ์ž์—๋Š” ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ, ๋‘ ๋ฒˆ์งธ ์ธ์ž์—๋Š” ๋„ˆ๋น„๋ฅผ ์ง€์ •ํ•จ.
  • minmax(์ตœ์†Œ, ์ตœ๋Œ€) : ์ตœ์†Œ(์ฒซ ๋ฒˆ์งธ ์ธ์ž)์™€ ์ตœ๋Œ€(๋‘ ๋ฒˆ์งธ ์ธ์ž) ๊ธธ์ด๋ฅผ ์ง€์ •ํ•จ. ์ด๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด grid ํ˜•ํƒœ๊ฐ€ ๊นจ์ง. repeat์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ์œ„๋กœ ์‚ฌ์šฉํ•จ.
  • fit-content(์ œํ•œ๋„ˆ๋น„) : grid item์ด ๊ฐ€์ง„ content์˜ ํฌ๊ธฐ๋งŒํผ ๋งž์ถฐ์คŒ. ์ธ์ˆ˜๋กœ ์ง€์ •ํ•œ px๊ฐ’๋งŒํผ ์ตœ๋Œ€๊ฐ’์„ ๊ฐ€์ง. ๋ฌดํ•œ์ • ๋Š˜์–ด๋‚˜๋Š” ๊ฑด ์•„๋‹˜.

Grid ๋‹จ์œ„

  • fr : ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„ ๋„ˆ๋น„ ๋น„์œจ.
  • min-content : ์ฝ˜ํ…์ธ ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋„ˆ๋น„๊นŒ์ง€ ์ค„์—ฌ์„œ ํ‘œํ˜„ํ•จ. ๋ฐ˜๋Œ€๋Š” max-content.
  • word-beak: keep-all; ๋กœ ์ง€์ •ํ•˜๋ฉด ํ•œ๊ธ€๋„ ๋„์–ด์“ฐ๊ธฐ ๋‹จ์œ„๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ.
  • auto-fill, auto-fit : ๋ช…์‹œ์ ์œผ๋กœ ํ–‰์—ด์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ํ™”๋ฉด์— ๋งž๋Š” ์ตœ์ ํ™”๋œ ๊ฐœ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Œ. repeat์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ์œ„๋กœ ์‚ฌ์šฉํ•จ.

์†Œ์†Œํ•œ ํŒ

  • border ์†์„ฑ์— color๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธ€์ž์ƒ‰์„ ๋”ฐ๋ฆ„.
  • .container>.item{$}*3์˜ ์—๋ฐ‹๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด container๋ผ๋Š” class๋ฅผ ๊ฐ€์ง„ ๋ถ€๋ชจ์˜ ์ž์‹์œผ๋กœ item์ด๋ž€ class๋ฅผ ๊ฐ€์ง„ 3๊ฐœ์˜ div ํƒœ๊ทธ๊ฐ€ ๊ฐ์ž์˜ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง„ ์ƒํƒœ๋กœ ์ฝ”๋“œ๊ฐ€ ์™„์„ฑ๋จ.
  • ์ „์—ญ์—์„œ ์‚ฌ์šฉํ•˜๋Š” CSS๋Š” ์ƒ๋‹จ์— ๋ฐฐ์น˜ํ•˜๊ธฐ.
  • .container > * {}๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด container class์˜ ๋ชจ๋“  ์ž์‹์„ ์ง€์นญํ•จ.