February 20, 2021
html ์ ์๋์ ๊ฐ์ด ๊ตฌ์ฑํ๋ค.
<body>
<div class="grid">
<div class="header"></div>
<div class="content"></div>
<div class="nav"></div>
<div class="footer"></div>
</div>
</body>
๊ทธ๋ฆฌ๊ณ css ๋ก ๋ถ๋ชจ์์์ display ์์ฑ์ grid ๋ก ์ฃผ์์ผ๋ฉฐ, ๊ฐ ํด๋์ค๋ง๋ค ์์์ ์ฃผ์๋ค.
.grid {
display: grid;
}
.header {
background: #2ecc71;
}
.content {
background: #3498db;
}
.nav {
background: #8e44ad;
}
.footer {
background: #f39c12;
}
์ด ์ํ์์๋ ๋ธ๋ผ์ฐ์ ์์ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
๋ถ๋ชจ ์์์ธ .grid ์ grid-template-column, grid-template-row ๋ฅผ ์ ์ฉํด ์ฃผ์๋ค.
grid-template-columns: 200px 200px 200px 200px;
grid-template-rows: 200px 200px 200px 200px;
columns 4 X rows 4 = 16 ๊ฐ์ ๊ทธ๋ฆฌ๋ ํ ํ๋ฆฟ์ด ๊ทธ๋ ค์ง๋ค.
์์ฒ๋ผ ๋ฐ๋ณตํด์ pixel ์ ์ ๋ ๊ฒ๋ณด๋ค, grid ๊ฐ ๊ฐ์ง ํจ์ repeat ์ ์ฌ์ฉํ๋ฉด ์ฝ๋ค!
์ฌ์ฉ ๋ฐฉ๋ฒ์,
repeat(๋ฐ๋ณตํ์, pixel ํฌ๊ธฐ) ์ด๋ค.
์์ ์์ฑํ๋ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์์ ํ๋ค. ๋๊ฐ์ด ์๋๋๋ค.
grid-template-columns: repeat(4, 200px);
grid-template-rows: repeat(4, 200px);
grid-template-areas ๋ ์ฝ๊ฒ ์์ ํ์ฒ๋ผ ๋ ์ด์์์ ๋์์ธ ํ๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.
์ข์ ์ columns 4 X rows 4 = 16 ๊ฐ์ ๊ทธ๋ฆฌ๋ ํ ํ๋ฆฟ์ ๋ง๋ค์๋ค. 4 BY 4 ๋ค.
header ๊ฐ ๋งจ ์์ ์๊ฒ ํ๊ณ , content/nav ๊ฐ ๊ฐ์ด ์์ผ๋ฉฐ ๋งจ ์๋์๋ footer ๊ฐ ์๋๋ก ์์น์์ผ ๋ณด์.
.grid {
display: grid;
grid-template-columns: repeat(4, 200px);
grid-template-rows: repeat(4, 200px);
grid-template-areas:
'header header header header'
'content content content nav'
'content content content nav'
'footer footer footer footer';
}
์์ ์ฝ๋์ฒ๋ผ grid-template-areas ์ ๊ณต๊ฐ์ ์ฐจ์งํ์ผ๋ฉด ํ๋ ์์ฑ?(์ด๋ฆ?) ์ 4 BY 4 ๋ก ์ ์ด์ฃผ์๋ค.
template ์ ๋ง๋ค์์ผ๋ฉด ์ด์ ๊ฐ ํด๋์ค์ grid-area ๋ก ๋ค์ ์์ฑ์ ์ค์ผ ํ๋ค.
.header {
background: #2ecc71;
grid-area: header;
}
.content {
background: #3498db;
grid-area: content;
}
.nav {
background: #8e44ad;
grid-area: nav;
}
.footer {
background: #f39c12;
grid-area: footer;
}
์ค ์ ๋ง ํ ํ๋ฆฟ ๋๋ก ๋ ์ด์์์ด ๊ตฌ์ฑ๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
๋จ, grid-area ์ ์๋ ์ด๋ฆ๊ณผ grid-template-areas ์ ์ง์ ํ ์ด๋ฆ์ด ๊ฐ์์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ค๋ฅธ์ชฝ์ ํ์ ๋น ๊ณต๊ฐ์ด ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋ง๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ด ํ๋ฉด์ ๊ฝ ์ฐจ ๋ณด์ด์ง๋ ์๋ ๋ฏ ์ถ๋ค.
grid-template-columns: repeat(4, 200px); ๋์ ์,
grid-template-columns: auto 200px; ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ํ๋ฉด์ ๊ฝ ์ฐจ๊ฒ ๋๋ค.
grid-template-columns: auto 200px;
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด์ grid-template-rows ๋ 4 rows ๋ชจ๋ 200px ๋ก ๋์ผํ๊ฒ ํ์ง๋ง,
ํค๋ ๋ถ๋ถ๊ณผ ํธํฐ ๋ถ๋ถ์ 100px ๋ก ํ๋ ๋ฑ์ ์ฐจ์ด๋ฅผ ์ฃผ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ ์ ์ฉํ๋ค.
repeat ๊ณผ px ๋ค์ ํผ์ฉํด์ ์ธ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
grid-template-rows: 100px repeat(2, 200px) 100px;
์ํ ํ๋ฉด ๊ตฌ์ฑ (๋ ์ด์์) ์ ์ด๋ ๊ฒ ์ฝ๊ฒ ์ฝ๊ฒ ๊ฐ์ ธ๊ฐ ์ ์๊ตฌ๋!