์๊ตฌ์ฌํญ
- HTML ๊ตฌ์กฐ:
- <div class="page-container">๋ฅผ ์ต์์ ์ปจํ ์ด๋๋ก ์ฌ์ฉํฉ๋๋ค.
- ์ปจํ
์ด๋ ์์ ๋ค์ ๋ค ๊ฐ์ ์ฃผ์ ์์ญ์ ๋ง๋ญ๋๋ค.
- <header class="header"> (ํ์ด์ง ์๋จ)
- <nav class="nav"> (๋ฉ์ธ ๋ด๋น๊ฒ์ด์ )
- <article class="content"> (์ฃผ์ ๊ธฐ์ฌ/๋ณธ๋ฌธ)
- <footer class="footer"> (ํ์ด์ง ํ๋จ)
- CSS - Grid Area ์ด๋ฆ ์ง์ :
- ๊ฐ ํด๋์ค(.header, .nav, .content, .footer)์ ๋ํด grid-area ์์ฑ์ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ **hd, nav, main, ft**๋ผ๋ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
- CSS - ์ ์ฒด Grid ๋ ์ด์์ ์ค์ :
- .page-container์ Grid ์์คํ ์ ์ค์ ํฉ๋๋ค.
- ์ด (Column) ์ ์:
- ์ฒซ ๋ฒ์งธ ์ด (๋ด๋น๊ฒ์ด์ ): ๋๋น 200px
- ๋ ๋ฒ์งธ ์ด (์ฝํ ์ธ ): 1fr (๋จ์ ๊ณต๊ฐ ๋ชจ๋)
- ํ (Row) ์ ์:
- ์ฒซ ๋ฒ์งธ ํ (ํค๋): ๋์ด 80px
- ๋ ๋ฒ์งธ ํ (๋ด๋น๊ฒ์ด์ /์ฝํ ์ธ ): auto (์ฝํ ์ธ ๋์ด์ ๋ง๊ฒ)
- ์ธ ๋ฒ์งธ ํ (ํธํฐ): ๋์ด 60px
- CSS - grid-template-areas๋ฅผ ์ฌ์ฉํ ๋ ์ด์์ ์ ์:
- grid-template-areas ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ 2์ด 3ํ์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฆ์ผ๋ก ์ ์ํฉ๋๋ค.
- 1ํ: hd๊ฐ ๋ ์ด์ ๋ชจ๋ ์ฐจ์ง
- 2ํ: ์ผ์ชฝ์ nav, ์ค๋ฅธ์ชฝ์ main
- 3ํ: ft๊ฐ ๋ ์ด์ ๋ชจ๋ ์ฐจ์ง
- grid-template-areas ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ 2์ด 3ํ์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฆ์ผ๋ก ์ ์ํฉ๋๋ค.
- CSS - ์๊ฐํ ๋ฐ ์คํ์ผ:
- page-container์ min-height: 100vh๋ฅผ ์ค์ ํ์ฌ ์ ์ฒด ํ๋ฉด ๋์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ ์์ญ(header, nav, content, footer)์ ๋ฐฐ๊ฒฝ์์ ์ค์ ํ์ฌ ์์ญ์ด ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋๋๋ก ํฉ๋๋ค. (์: #555, #777, white, #aaa)
๋๋ณด๊ธฐ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
margin: 0
}
.page-container {
display: grid;
grid-template-areas: 'hd hd'
'nav main'
'ft ft';
grid-template-columns: 200px 1fr;
grid-template-rows: 80px auto 60px;
min-height: 100vh;
}
.header {
grid-area: hd;
background-color: #555;
}
.nav {
grid-area: nav;
background-color: #777;
}
.content {
grid-area: main;
background-color: #fff;
}
.footer {
grid-area: ft;
background-color: #aaa;
}
</style>
</head>
<body>
<div class="page-container">
<header class="header"></header>
<nav class="nav"></nav>
<article class="content"></article>
<footer class="footer"></footer>
</div>
</body>
</html>
