2025. 7. 31. 16:03ใStyle/CSS

๋ชฉ์ฐจ
1. CSS Grid Layout
2. Grid Container ์ค์ ํ๊ธฐ
2-1. ํ๋ํ๋ ์
๋ ฅํด์ ๋ฐฐ์นํ๊ธฐ
2-2. ํจ์ ์ฌ์ฉํด์ ์๋ ๋ฐฐ์นํ๊ธฐ
3. Grid Item ์ค์ ํ๊ธฐ
4. ์์ญ(Area) ์ง์ ๊ณผ ์ด๋ฆ ๋ถ์ด๊ธฐ
1. CSS Grid Layout
CSS Grid Layout์ 2์ฐจ์(ํ๊ณผ ์ด) ๊ธฐ๋ฐ์ ๋ ์ด์์ ์์คํ ์ด๋ค.
Flexbox๊ฐ 1์ฐจ์ ๋ ์ด์์์ ํนํ๋ ๋ฐ๋ฉด, Grid๋ ํ๊ณผ ์ด์ ๋์์ ์ ์ดํ๋ค.
Grid ์ฉ์ด
| ์ฉ์ด | ์ค๋ช |
| Grid Container | display: grid ๋๋ inlin-grid๊ฐ ์ ์ฉ๋ ๋ถ๋ชจ ์์ |
| Grid Item | Grid Container์ ์์ ์์ |
| Grid Line | ํ๊ณผ ์ด์ ๊ตฌ๋ถํ๋ ์ (๋ฒํธ๋ฅผ ๊ฐ์ง) |
| Grid Track | ๋ ๊ฐ์ Grid Line ์ฌ์ด์ ๊ณต๊ฐ (= ํ/์ด ํ ์นธ) |
| Grid Cell | ํ ํ๊ณผ ์ด์ด ๋ง๋๋ ์ต์ ๋จ์ ์์ญ |
| Grid Area | ์ฌ๋ฌ Grid Cell์ด ๋ชจ์ฌ ๋ง๋ ์ง์ฌ๊ฐํ ์์ญ |
2. Grid Container ์ค์ ํ๊ธฐ
1. ํ๋ํ๋ ์ ๋ ฅํด์ ๋ฐฐ์นํ๊ธฐ
์ฐ์ container๋ฅผ ์ด๋ป๊ฒ ์ ์ํ๋์ง ๋ณด๊ธฐ ์ํด ์ํ๋ ํ๊ณผ ์ด์ cell ์ฌ์ด์ฆ๋ฅผ ์ง์ ์ ๋ ฅํด๋ณด์.
.container {
display: grid; /* ๋๋ inline-grid */
/* ↓ 3๊ฐ์ ์ด(columns) ์์ฑ: 1์ด-200px, 2์ด-1fr(๋จ์ ๊ณต๊ฐ์ค 1๋จ์), 3์ด-2fr(2์ ๋๋ฐฐ) */
grid-template-columns: 200px 1fr 2fr;
/* ↓ 3๊ฐ์ ํ(row) ์์ฑ: 1ํ-์ปจํ
์ธ ๋์ด์ ๋ฐ๋ผ ์๋, 2ํ: 100px ๊ณ ์ ๋์ด, 3ํ: 50px ๊ณ ์ ๋์ด*/
grid-template-rows: auto 100px 50px;
gap: 10px 20px; /* ํ(row)๊ณผ ์ด(column) ์ฌ์ด ๊ฐ๊ฒฉ*/
}

- display: grid → Grid ๋ ์ด์์ ํ์ฑํ
- grid-template-columns → ์ด ํฌ๊ธฐ ์ง์ (px, %, fr ๋ฑ์ ๋จ์ ์ฌ์ฉ)
- px, % : ๊ณ ์ ํฌ๊ธฐ, ๋ถ๋ชจ ๋๋น ๋น์จ
- fr(fraction) : ๊ฐ์ฉ ๊ณต๊ฐ์ ๋น์จ
- auto : ์ปจํ ์ธ ํฌ๊ธฐ์ ๋ง์ถฐ ์๋ ์กฐ์
- min-content, max-content, fit-content() ๋ฑ์ ํจ์๋ ์์
- grid-template-rows → ํ ํฌ๊ธฐ ์ง์
- gap/row-gap/column-gap → ํ๊ณผ ์ด ์ฌ์ด ๊ฐ๊ฒฉ ์กฐ์
ํ์ง๋ง ์ด๋ ๊ฒ ํ๋ํ๋ ์ ๋ ฅํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ค.
๊ทธ๋์ ๋ฐ๋ณต์ ๋์์ฃผ๋ ํจ์๊ฐ ์๋ค.
2. ํจ์ ์ฌ์ฉํด์ ์๋ ๋ฐฐ์นํ๊ธฐ
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 100px;
grid-auto-flow: row dense;
}
- repeat(count, value) : ๋จ์ ๋ฐ๋ณต ์ง์ . ๋จ์ ๋ฐ๋ณต ๊ตฌ์กฐ๋ง ๊ฐ๋ฅํ๋ค. (ex.repeat(3, 1fr) = 1fr 1fr 1fr)
- minmax([min๊ฐ], [max๊ฐ]) : ํ๊ณผ ์ด์ ์ต์ํฌ๊ธฐ, ์ต๋ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ค.
grid-template-columns: repeat(3, minmax(200px, 1fr)); → 200๋ณด๋ค ์ค์ง ์๊ณ , ๋์ด๋๋ฉด ํญ์ 1:1:1 ๋น์จ๋ก ๋์ด๋จ - grid-auto-rows, grid-auto-columns : ๋ช ์๋์ง ์์ ํ/์ด ํฌ๊ธฐ ์ง์
- grid-auto-flow : ์๋ ๋ฐฐ์น ๋ฐฉํฅ ์ง์ (row, column, dense)
3. Grid Item ์ค์ ํ๊ธฐ
1. Grid Item ๋ฐฐ์น ์์ฑ
Grid Item์ ์๋ ์์ฑ๋ค๋ก ์์น์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ์ ์๋ค.
| ์์ฑ | ์ค๋ช |
| grid-column-start | ์์ ์ด - ๋ฒํธ ๋๋ ์ด๋ฆ ์ง์ |
| grid-column-end | ๋ ์ด - ๋ฒํธ ๋๋ ์ด๋ฆ ์ง์ |
| grid-row-start | ์์ ํ - ๋ฒํธ ๋๋ ์ด๋ฆ ์ง์ |
| grid-row-end | ๋ ํ - ๋ฒํธ ๋๋ ์ด๋ฆ ์ง์ |
| grid-column | start / end ์ถ์ฝํ |
| grid-row | start / end ์ถ์ฝํ |
| grid-area | row-start / column-start / row-end / column-end ์ถ์ฝํ |
๋ณด๋ฉด ์ ๋ถ ํ๊ณผ ์ด์ ์์๊ณผ ๋์ ๋ฒํธ/์ด๋ฆ์ ๋ถ์ด๋ ์์ฑ๋ค์ด๋ค.
.item {
grid-column: 1 / 3; /* 1์ด๋ถํฐ 3์ด ์ ๊น์ง(2์ด๊น์ง) */
grid-row: 2 / 4; /* 2ํ๋ถํฐ 4ํ ์ ๊น์ง(3ํ๊น์ง) */
}
์ด ์์ดํ ์ grid์์ 1์ด๋ถํฐ 3์ด, 2ํ๋ถํฐ 4ํ๊น์ง๋ฅผ ์ฐจ์งํ๋(=๋ณํฉํ๋) ์์ดํ ์ด๋ค.
4. ์์ญ(Area) ์ง์ ๊ณผ ์ด๋ฆ ๋ถ์ด๊ธฐ
Grid ์์ญ์ ์ด๋ฆ์ ๋ถ์ด๊ณ , ์์ดํ ์ ์ด๋ฆ์ผ๋ก ๋ฐฐ์นํ ์๋ ์๋ค.
.container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
grid-template-rows: 100px 200px
grid-template-areas:
"header header header"
"sidebar main main";
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
- ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ์์ดํ ์ด grid-template-areas์์ ์ธ์ ํ ์์น(๊ฐ๋ก/์ธ๋ก)์ ๋ฐ๋ณต๋๋ฉด ๋ณํฉ๋ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
- grid-template-areas์ ์ด ์๋ ์ผ์นํด์ผํ๋ค.
์ฐธ๊ณ
codeit
'Style > CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| CSS : Flexbox Layout (0) | 2025.07.31 |
|---|---|
| CSS : Position ์์ฑ (1) | 2025.07.30 |
| CSS : ์บ์ค์ผ์ด๋ (Cascade) : ์คํ์ผ ์ ์ฉ ์ฐ์ ์์ (3) | 2025.07.29 |
| CSS : CSS ์ ํ์ (CSS Selector) (2) | 2025.07.29 |
| CSS : display์ float (0) | 2025.07.28 |
GitHub