用 Grid 实现一个完整的页面布局(Header/Sidebar/Main/Right/Footer)
.layout {
display: grid;
min-height: 100vh;
grid-template-columns: 200px 1fr 250px;
grid-template-rows: 60px 1fr 40px;
grid-template-areas:
"header header header"
"sidebar main right"
"footer footer footer";
gap: 1px;
background: #e0e0e0;
}
.header { grid-area: header; background: #fff; }
.sidebar { grid-area: sidebar; background: #fff; }
.main { grid-area: main; background: #fff; }
.right { grid-area: right; background: #fff; }
.footer { grid-area: footer; background: #fff; }
响应式调整
@media (max-width: 1024px) {
.layout {
grid-template-columns: 200px 1fr;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
}
.right { display: none; }
}
@media (max-width: 768px) {
.layout {
grid-template-columns: 1fr;
grid-template-areas:
"header"
"main"
"footer";
}
.sidebar, .right { display: none; }
}
HTML
<div class="layout">
<header class="header">Header</header>
<aside class="sidebar">Sidebar</aside>
<main class="main">Main Content</main>
<aside class="right">Right Panel</aside>
<footer class="footer">Footer</footer>
</div>
优势
- 使用
grid-template-areas 布局极其直观
- 响应式只需修改 grid-template 定义
- DOM 顺序可以任意排列,通过 grid-area 定位
- 比传统的 float/flex 实现更简洁
同分类其他题目