โœ๏ธ [CSS] - 2. Grid (2)

์ •์€ยท2023๋…„ 11์›” 19์ผ

โœ๏ธ Frontend Development

๋ชฉ๋ก ๋ณด๊ธฐ
14/16

๐Ÿ“– ์˜ค๋Š˜์€ ์ด์ „ ํฌ์ŠคํŠธ Grid Container Properties์— ์ด์–ด Grid Item Properties์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Grid Item Properties

โœ๏ธ grid-row-start ๋ฐ grid-row-end

  • ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์ด ์ˆ˜์ง ์ถ•์„ ๋”ฐ๋ผ ์‹œ์ž‘ํ•˜๊ณ  ๋๋‚˜๋Š” ์œ„์น˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ผ์ธ ๋ฒˆํ˜ธ, ํ‚ค์›Œ๋“œ(auto, span), ๋˜๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์˜ ์ผ๋ถ€์ธ ๋ถ„์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜ˆ์‹œ:

    .item {
      grid-row-start: 2;
      grid-row-end: span 2;
    }

โœ๏ธ grid-column-start ๋ฐ grid-column-end

  • ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์ด ์ˆ˜ํ‰ ์ถ•์„ ๋”ฐ๋ผ ์‹œ์ž‘ํ•˜๊ณ  ๋๋‚˜๋Š” ์œ„์น˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ผ์ธ ๋ฒˆํ˜ธ, ํ‚ค์›Œ๋“œ(auto, span), ๋˜๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์˜ ์ผ๋ถ€์ธ ๋ถ„์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜ˆ์‹œ:

    .item {
      grid-column-start: 1;
      grid-column-end: span 3;
    }

โœ๏ธ grid-row ๋ฐ grid-column

  • ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์ด ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ์ถ•์„ ๋”ฐ๋ผ ์‹œ์ž‘ํ•˜๊ณ  ๋๋‚˜๋Š” ์œ„์น˜๋ฅผ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•˜๋Š” ๋‹จ์ถ•์†์„ฑ์ž…๋‹ˆ๋‹ค.

  • ๋ผ์ธ ๋ฒˆํ˜ธ, ํ‚ค์›Œ๋“œ, ๊ทธ๋ฆฌ๊ณ  ๋ถ„์ˆ˜์˜ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • grid-row: ( grid-row-start / grid-row-end )

  • grid-column: ( grid-column-start / grid-column-end )

  • ์˜ˆ์‹œ:

    .item.example1 {
      background-color: lightyellow;
      grid-row: 1 / 3;
      grid-column: 1 / 3;
      }
     .item.example2 {
      background-color: lightpink;
      grid-row: span 2;
      grid-column: 3 / 4;
      }
      .item.example3 {
      background-color: lightblue;
      grid-row: 3 / 4;
      grid-column: span 3;
      }

์ด๋Ÿฌํ•œ ์†์„ฑ๋“ค์€ ๊ทธ๋ฆฌ๋“œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์˜ ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์‹œ์™€ ์ด๋ฏธ์ง€๋Š” ์ด๋Ÿฌํ•œ ์†์„ฑ๋“ค์ด ๊ทธ๋ฆฌ๋“œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์„ ์‹ค์ œ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.


โœ๏ธ align-self / justify-self

  • ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์„ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์ˆ˜์ง / ์ˆ˜ํ‰ ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ’: start, end, center, stretch, baseline.

๐Ÿ’ก stretch (๊ธฐ๋ณธ๊ฐ’): ์•„์ดํ…œ์„ ํ–‰ ์ „์ฒด์˜ ๋†’์ด / ๋„“์ด ์— ๋งž๊ฒŒ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.
๐Ÿ’ก baseline: ์•„์ดํ…œ์„ ํ–‰์˜ ๊ธฐ์ค€์„ ์— ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

โœ๏ธ place-self

  • align-self์™€ justify-self๋ฅผ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•˜๋Š” ๋‹จ์ถ•์†์„ฑ ์ž…๋‹ˆ๋‹ค.
.item {
  place-self: align-items / justify-items;
}

โœ๏ธ minmax( ) ํ•จ์ˆ˜

  • ๊ทธ๋ฆฌ๋“œ ํ–‰ / ์—ด ์˜ ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์‹œ:
.grid-container {
  grid-template-rows: minmax(min-value, max-value);
}

โœ๏ธ fit-content

  • ๊ทธ๋ฆฌ๋“œ ํ–‰ /์—ด ์˜ ํฌ๊ธฐ๋ฅผ ์ฝ˜ํ…์ธ ์— ๋งž์ถ”๊ณ  ์ง€์ •๋œ ์ตœ๋Œ€ ํฌ๊ธฐ๊นŒ์ง€ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์‹œ:
.grid-container {
  grid-template-rows: fit-content(minimum) fit-content(maximum);
}

โœ๏ธ auto-fill vs. auto-fit

  • auto-fill: ๊ฐ€๋Šฅํ•œ ๋งŒํผ ๋งŽ์€ ํŠธ๋ž™์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ์ฑ„์›๋‹ˆ๋‹ค.
  • auto-fit: auto-fill๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋นˆ ํŠธ๋ž™์„ ์ถ•์†Œํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์‹œ:
     ```css
     .container {
       grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
     }
     ```

Grid์˜ ์†์„ฑ๋“ค์— ๋Œ€ํ•ด ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋‹ˆ ์กฐ๊ธˆ์”ฉ ๋จธ๋ฆฟ์†์— ๋“ค์–ด์˜ค๋Š” ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.
์ •๋ฆฌํ•œ ๋‚ด์šฉ์€ ์•ž์œผ๋กœ Grid๋ฅผ ํ™œ์šฉํ•˜๋ฉด์„œ ๋‹ค์‹œ ๋˜ ์ฐธ๊ณ ํ•˜๋Ÿฌ ์˜ฌ ์ˆ˜๋„ ์žˆ๊ฒ ๋„ค์š”!

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