[CSS] grid

summerrrrrยท2023๋…„ 2์›” 18์ผ
0

๐Ÿ“Œ grid๊ฐœ๋…์ •๋ฆฌ

  • ์•„์ดํ…œ์„ ์ž์œ ์ž์žฌ๋กœ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” css layout์—๋Š” flex์™€ grid๊ฐ€ ์žˆ๋‹ค. ์•„์ดํ…œ์„ ๊ทธ๋ฆฌ๋“œ ํ˜•ํƒœ๋กœ ๋ฐฐ์น˜ํ• ๋•Œ๋‚˜ ์›น์‚ฌ์ดํŠธ ๊ตฌ์กฐ ์ „์ฒด๋ฅผ ๊ทธ๋ฆฌ๋“œ ํ˜•ํƒœ๋กœ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“ grid์— ์ ์šฉ

  • grid-template-columns
  • grid-template-rows
  • grid-template-areas
  • grid-gap grid-column-gap grid-row-gap
  1. grid-template-columns, grid-template-rows
    ์ „์ฒดํ™”๋ฉด์—์„œ ๊ฐ€๋กœ ํ˜น์€ ์„ธ๋กœ๋กœ n๊ฐœ์˜ ์•„์ดํ…œ์„ ๋‘๊ณ ์‹ถ์œผ๋ฉด ์›ํ•˜๋Š” ๋„ˆ๋น„ ๋งŒํผ n๋ฒˆ ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๊ฐ™์€ ์‚ฌ์ด์ฆˆ์ผ ๊ฒฝ์šฐ repeat(n, ๊ฐ€๋กœ์‚ฌ์ด์ฆˆ)์„ ์‚ฌ์šฉํ•˜๋ฉด ํŽธํ•˜๋‹ค.
  grid-template-columns: 1fr 2fr 1fr
  grid-template-columns: repeat(5, 20%);
  grid-template-columns: 200px repeat(3, 100px);
  grid-template-rows: 150px 150px;
  1. grid-auto-rows
  • ๋ช‡ ์ค„์ธ์ง€๋Š” ๋ชจ๋ฅด๋‚˜ ๊ฐ ์ค„๋‹น ๊ฐ™์€ ์‚ฌ์ด์ฆˆ๋ฅผ ์ฃผ๊ณ ์‹ถ์„๋•Œ ์‚ฌ์šฉ.
grid-auto-rows: 150px;
  • ๋ฐ•์Šค์— ๋‹ด๊ธด ์•„์ดํ…œ์ด ํด ๋•Œ ์ตœ์†Œ ๋†’์ด๋Š” ํ•ญ์ƒ ์ผ์ •ํ•œ ์‚ฌ์ด์ฆˆ๋ฅผ ์œ ์ง€ํ•˜๋˜ ๋งŒ์•ฝ ์•„์ดํ…œ์ด ๋งŽ์€ ๊ฒฝ์šฐ ์ž๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
grid-auto-rows: minmax(150px, auto);
  1. grid-gap grid-column-gap grid-row-gap
  • ์•„์ดํ…œ ์‚ฌ์ด์— ๊ฐ„๊ฒฉ์„ ์ฃผ๊ณ ์‹ถ์„๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
grid-gap: 10px;
grid-column-gap: 20px;
grid-row-gap: 5px;

๐Ÿ“ grid cell์— ์ ์šฉ

-grid-column-start
-grid-column-end
-grid-row-start
-grid-row-end

1.grid-column-start, grid-column-end

  • ์•„์ดํ…œ๋ณ„๋กœ ๊ฐ€๋กœ ์„ธ๋กœ๋กœ ์›ํ•˜๋Š” ๋„ˆ๋น„๋งŒํผ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•  ์ˆ˜์žˆ๋‹ค. ์™ผ์ชฝ ์œ„ ๋ชจ์„œ๋ฆฌ๋ถ€ํ„ฐ 1๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ๋ชจ์„œ๋ฆฌ๋ถ€ํ„ฐ -1๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
grid-column-start: 2;
grid-column-end: 4;
  • ์งง๊ฒŒ๋„ ์ž‘์„ฑ๊ฐ€๋Šฅํ•˜๋‹ค.
grid-column: 2 / 4;
  • ์…€๋‹จ์œ„ ์ ๋ น๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
grid-column: 2 / span 2;

๐Ÿ“grid-template-areas

  • ์›ํ•˜๋Š” ์ž๋ฆฌ์— ์™ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ์ŠคํŽ˜์…œํ•œ ์†์„ฑ์ด๋‹ค. ๊ฐ ๊ทธ๋ฆฌ๋“œ์— ์ด๋ฆ„์„ ์„ค์ •ํ•ด์ฃผ๊ณ  ์•„์ดํ…œ๋ณ„๋กœ ๋„ฃ๊ณ  ์‹ถ์€ ์ž๋ฆฌ์˜ ์ด๋ฆ„์„ ๋„ฃ์–ด์ฃผ๋ฉด ์›ํ•˜๋Š” ์ž๋ฆฌ, ํฌ๊ธฐ๋งŒํผ ์ดํ…œ์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-auto-rows: 150px;
  grid-template-areas:
    "a a b"
    "c d b"
    "c d e";
}
.item1 {
  grid-area: a;
}
.item2 {
  grid-area: b;
}
.item3 {
  grid-area: c;
}
.item4 {
  grid-area: d;
}
.item5 {
  grid-area: e;
}


์ •๋ง ์ง๊ด€์ ์ด๊ณ  ํŽธ๋ฆฌํ•˜๋‹ค ๐Ÿฅบ๐Ÿฅบ๐Ÿฅบ


.calculator {
  border: 1px pink solid;
  height: 500px;
  width: 300px;
  display: grid;
  grid-template-rows: 20% 80%;
}

.buttons {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(5, 1fr);
}

.buttons :first-child {
  grid-column: 1 / 4;
}

.buttons :nth-last-child(3) {
  grid-column: 1 / 3;
}

์ง€๋‚œ๋ฒˆ์— flex์†์„ฑ์œผ๋กœ ๋งŒ๋“  ๊ณ„์‚ฐ๊ธฐ๋ณด๋‹ค ํ›จ์”ฌ ํŽธํ–ˆ๋‹ค. ์‹ฌ์ง€์–ด ์ด์ œ ์„ธ๋กœ๊ฐ’๋„ ์ž์œ ์ž์žฌ๋กœ ์ด์šฉ๊ฐ€๋Šฅ! ๊ทธ๋ฆฌ๋“œ๋กœ ์ด์šฉํ•œ ๋ ˆ์ด์•„์›ƒ์€ ์•„์ฃผ ๋ฉ‹์ง€๊ธฐ ๋•Œ๋ฌธ์— ํฌํŠธํด๋ฆฌ์˜ค ๋งŒ๋“ค๋•Œ๋„ ์œ ์šฉํ• ๊ฒƒ ๊ฐ™๋‹ค :)


๐Ÿ“Ž ๋“œ๋ฆผ์ฝ”๋”ฉ grid ๊ฐ•์˜

profile
์•ˆ๋…•ํ•˜์„ธ์˜ค

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

comment-user-thumbnail
2023๋…„ 2์›” 20์ผ

์—ญ์‹œ ๊ทธ๋ฆฌ๋“œ๋งˆ์Šคํ„ฐ ์ด์‹ญ๋‹ˆ๋‹ค....

1๊ฐœ์˜ ๋‹ต๊ธ€