๐Ÿ“ ์˜ค๋Š˜ ํ•œ ๊ฒƒ

  1. grid

๐Ÿ“š ๋ฐฐ์šด ๊ฒƒ

1. grid

1) rows and columns

grid container์— grid-template-areas๋ฅผ ์ง€์ •ํ•˜๊ณ  grid item์— grid-area๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋Œ€์‹ 
grid item์— grid-column-start(end)์™€ grid-row-start(end)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

grid rows and columns

ํ›„์ž์˜ ๊ฒฝ์šฐ grid container์— gap ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์›ํ•˜๋Š” ๋ชจ์–‘์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
๋ฌผ๋ก  ์ „์ž์˜ ๊ฒฝ์šฐ์—๋„ gap ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์›ํ•˜๋Š” ๋ชจ์–‘์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค๊ธฐ์— ํ›„์ž๊ฐ€ ๋” ์‰ฝ๋‹ค.

<div class="grid">
  <div class="header"></div>
  <div class="content"></div>
  <div class="nav"></div>
  <div class="footer"></div>
</div>

์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ๋ถ€๋ถ„์ด grid-template-areas์™€ grid-area๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์ฝ”๋“œ์ด๋‹ค.

.grid {
  display: grid;
  grid-template-columns: repeat(4, 100px);
  grid-template-rows: repeat(4, 100px);
  gap: 10px;
}

.header {
  background-color: lightpink;
  grid-column-start: 1;
  grid-column-end: 5;
  grid-row-start: 1;
  grid-row-end: 2;
}

.content {
  background-color: lightskyblue;
  grid-column-start: 1;
  grid-column-end: 4;
  grid-row-start: 2;
  grid-row-end: 4;
}

.nav {
  background-color: lightseagreen;
  grid-column-start: 4;
  grid-column-end: 5;
  grid-row-start: 2;
  grid-row-end: 4;
}

.footer {
  background-color: mediumaquamarine;
  grid-column-start: 1;
  grid-column-end: 5;
  grid-row-start: 4;
  grid-row-end: 5;
}

2) shortcut

grid-column-start(end)์™€ grid-row-start(end)๋ฅผ ์ค„์—ฌ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

(1) grid-column / grid-row

start์™€ end๋ฅผ ๋”ฐ๋กœ ์“ธ ํ•„์š” ์—†์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

.grid {
  display: grid;
  grid-template-columns: repeat(4, 100px);
  grid-template-rows: repeat(4, 100px);
  gap: 10px;
}

.header {
  background-color: lightpink;
  grid-column: 1 / 5;
  grid-row: 1 / 2;
}

.content {
  background-color: lightskyblue;
  grid-column: 1 / 4;
  grid-row: 2 / 4;
}

.nav {
  background-color: lightseagreen;
  grid-column: 4 / 5;
  grid-row: 2 / 4;
}

.footer {
  background-color: mediumaquamarine;
  grid-column: 1 / 5;
  grid-row: 4 / 5;
}

(2) ๋์ด ์–ด๋”˜์ง€ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ ์Œ์ˆ˜๊ฐ’ ์‚ฌ์šฉ

์˜ˆ๋ฅผ ๋“ค์–ด, line์ด ๋ช‡ ๊ฐœ์ธ์ง€, ์–ด๋””์„œ ๋๋‚˜๋Š”์ง€ ์‹ ๊ฒฝ ์“ธ ํ•„์š” ์—†์ด -1์„ ์ ์œผ๋ฉด ๊ทธ ์ค„ line์˜ ๋๊นŒ์ง€ grid item์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

grid-column: 1 / 5;
grid-row: 1 / 2;

์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

grid-column: 1 / -1;
grid-row: 1 / 2;

๋‹ค๋ฅธ ์˜ˆ๋กœ๋Š”, ์‹ค์ œ content๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ธธ ๊ฒƒ์ธ์ง€ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•˜๋‹ค.

.content {
  background-color: lightskyblue;
  grid-column: 1 / 4;
  grid-row: 2 / 4;
}

์‹ค์ œ๋กœ content๊ฐ€ 4์—์„œ ๋๋‚ ์ง€ 7์—์„œ ๋๋‚ ์ง€ ๋ชจ๋ฅผ ๋•Œ -2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ๋์—์„œ 2๋ฒˆ์งธ line๊นŒ์ง€ grid item์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

.content {
  background-color: lightskyblue;
  grid-column: 1 / -2;
  grid-row: 2 / -2;
}

(3) span

์‹œ์ž‘๊ณผ ๋ line์„ ์ ๋Š” ๋Œ€์‹ ์— span์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์–ผ๋งˆ๋‚˜ ๋งŽ์€ grid cell์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฐ€๋ฅผ ์ ๋Š” ๊ฒƒ์ด๋‹ค.

.header {
  background-color: lightpink;
  grid-column: 1 / -1;
  grid-row: span 1;
}

.content {
  background-color: lightskyblue;
  grid-column: 1 / -2;
  grid-row: span 2;
}

ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‹œ์ž‘ line์„ ์•ž์— ํ•จ๊ป˜ ์ ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

grid-row: 1 / span 1;

3) line์— ์ด๋ฆ„ ์ง“๊ธฐ

span์ด ์•„๋‹ˆ๋ผ line์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ
ํ•„์ˆ˜๋Š” ์•„๋‹ˆ๊ณ  ์„ ํƒ ์‚ฌํ•ญ์ด์ง€๋งŒ line์— ์ด๋ฆ„์„ ์ง€์–ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

.grid {
  display: grid;
  grid-template-columns: [first-line] 100px [second-line] 100px [third-line] 100px [fourth-line] 100px [fifth-line];
  grid-template-rows: repeat(4, 100px [line]);
  gap: 10px;
}

.header {
  background-color: lightpink;
  grid-column: first-line / fifth-line;
  grid-row: 1 / line 1;
}

.content {
  background-color: lightskyblue;
  grid-column: first-line / fourth-line;
  grid-row: line 1 / line -2;
}

.nav {
  background-color: lightseagreen;
  grid-column: fourth-line / fifth-line;
  grid-row: line 1 / line -2;
}

.footer {
  background-color: mediumaquamarine;
  grid-column: first-line / fifth-line;
  grid-row: line 3 / line 4;
}

์ด๋•Œ repeat(4, 100px [line])์—์„œ 100px [line] ์ด๋ผ๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ข… grid container์—์„œ ๋งจ ์œ„ line์€ ์ด๋ฆ„ ์ง€์–ด์ค€ [line]์— ํ•ด๋‹น๋˜์ง€ ์•Š๋Š”๋‹ค.
grid container์˜ ๋งจ ์œ„ line์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฅผ ์˜๋ฏธํ•˜๋Š” 1์„ ์ ์–ด์•ผ ํ•œ๋‹ค.

grid-row: 1 / line 1;

โœจ ๋‚ด์ผ ํ•  ๊ฒƒ

  1. grid
profile
dev log

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด

Powered by GraphCDN, the GraphQL CDN