์๊ตฌ์ฌํญ
- HTML ๊ตฌ์กฐ:
- <div class="dashboard-container">๋ฅผ ์ ์ฒด ๋ ์ด์์์ ์ต์์ ์ปจํ ์ด๋๋ก ์ฌ์ฉํฉ๋๋ค.
- ์ปจํ
์ด๋ ์์ ๋ค์ ์ธ ๊ฐ์ ์ฃผ์ ์์ญ์ ๋ง๋ญ๋๋ค:
- <header class="header"> (์๋จ ๋ฉ๋ด)
- <aside class="sidebar"> (์ข์ธก ๋ฉ๋ด)
- <main class="main-content"> (์ฃผ์ ์ฝํ ์ธ )
- main-content ์์๋ 4๊ฐ์ ์์ ๋ฐ์ค(<div class="data-card">)๋ฅผ ๋ง๋ญ๋๋ค.
- CSS - ์ ์ฒด Grid ๋ ์ด์์ ์ค์ :
- .dashboard-container์ Grid ์์คํ ์ ์ค์ ํ์ฌ ๋ ์ด์์์ ์ ์ํฉ๋๋ค.
- ํ (Row) ์ ์:
- ์ฒซ ๋ฒ์งธ ํ (ํค๋): ๋์ด 60px
- ๋ ๋ฒ์งธ ํ (์ฌ์ด๋๋ฐ/๋ณธ๋ฌธ): ๋จ์ ๊ณต๊ฐ์ ๋ชจ๋ ์ฌ์ฉ (1fr)
- ์ด (Column) ์ ์:
- ์ฒซ ๋ฒ์งธ ์ด (์ฌ์ด๋๋ฐ): ๋๋น 200px
- ๋ ๋ฒ์งธ ์ด (๋ณธ๋ฌธ): ๋จ์ ๊ณต๊ฐ์ ๋ชจ๋ ์ฌ์ฉ (1fr)
- ์์ญ ๋ฐฐ์น: header๋ 1ํ์ ๋ชจ๋ ์ด์ ์ฐจ์งํ๋๋ก ํฉ๋๋ค. sidebar์ main-content๋ 2ํ์ ๊ฐ๊ฐ ๋ฐฐ์น๋๋๋ก ํฉ๋๋ค.
- CSS - Grid ๋ด๋ถ Flexbox ์ฌ์ฉ:
- .main-content ์์ ์๋ 4๊ฐ์ .data-card๋ฅผ ๊ฐ๋ก๋ก ๊ท ์ผํ๊ฒ ๋ฐฐ์นํฉ๋๋ค.
- .main-content์ Flexbox๋ฅผ ์ค์ ํ์ฌ ์์ ์์(4๊ฐ์ ์นด๋)๊ฐ ๊ฐ๋ก๋ก ํ ์ค์ 4๊ฐ์ฉ ๋ฐฐ์น๋๊ณ , ํญ๋ชฉ ์ฌ์ด์ 20px์ ๊ฐ๊ฒฉ์ด ์๊ธฐ๋๋ก ์ค์ ํฉ๋๋ค.
- .data-card๋ ์ปจํ ์ด๋ ๋๋น๋ฅผ ๊ท ๋ฑํ๊ฒ ๋๋์ด ๊ฐ์ง๋๋ก ์ค์ ํฉ๋๋ค. (๊ฐ ์นด๋์ padding: 15px, background-color: #eee๋ฅผ ์ ์ฉํ์ฌ ์๊ฐํํฉ๋๋ค.)
- CSS - ์๊ฐํ ๋ฐ ์คํ์ผ:
- .header์ .sidebar์ ๋ฐฐ๊ฒฝ์์ ์ค์ ํ์ฌ ์์ญ์ ๊ตฌ๋ถํฉ๋๋ค. (์: #333 / #444)
- ์ ์ฒด ์ปจํ ์ด๋๋ ์ต์ ๋์ด๋ฅผ **100vh**๋ก ์ค์ ํฉ๋๋ค.
๋๋ณด๊ธฐ
<!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;
}
.dashboard-container {
display: grid;
width: 100%;
height: 100%;
min-height: 100vh;
grid-template-rows: 60px 1fr;
grid-template-columns: 200px 1fr;
}
.header {
grid-column: 1 / span 2;
background-color: #333;
}
.sidebar {
grid-column: 1;
grid-row: 2;
background-color: #444;
}
.main-content {
grid-column: 2;
grid-row: 2;
display: grid;
grid-template-columns: repeat(4,1fr);
gap: 20px;
}
.main-content .data-card {
padding: 15px;
background-color: #eee;
}
</style>
</head>
<body>
<div class="dashboard-container">
<header class="header"></header>
<aside class="sidebar"></aside>
<main class="main-content">
<div class="data-card"></div>
<div class="data-card"></div>
<div class="data-card"></div>
<div class="data-card"></div>
</main>
</div>
</body>
</html>
