Grid-template-areas 命名区域布局
grid-template-areas 通过可视化的命名区域方式定义网格布局,代码直观易懂。
基本语法
CSS
.container {
display: grid;
grid-template-areas:
"header header header"
"sidebar main main"
"footer footer footer";
}
使用方法
定义区域
CSS
.container {
display: grid;
grid-template-columns: 200px 1fr 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header header"
"sidebar main main"
"footer footer footer";
min-height: 100vh;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }
空白区域
使用 . 表示空白区域。
CSS
.container {
grid-template-areas:
"header header header"
"sidebar . main"
"footer footer footer";
}
常见布局模式
经典三栏布局
CSS
.layout {
display: grid;
grid-template-columns: 200px 1fr 200px;
grid-template-rows: 60px 1fr 40px;
grid-template-areas:
"header header header"
"left center right"
"footer footer footer";
min-height: 100vh;
}
.header { grid-area: header; }
.left { grid-area: left; }
.center { grid-area: center; }
.right { grid-area: right; }
.footer { grid-area: footer; }
圣杯布局
CSS
.holy-grail {
display: grid;
grid-template-columns: 200px 1fr 200px;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header header"
"nav main aside"
"footer footer footer";
min-height: 100vh;
}
响应式切换
CSS
.container {
display: grid;
grid-template-areas:
"header"
"main"
"sidebar"
"footer";
grid-template-columns: 1fr;
}
@media (min-width: 768px) {
.container {
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 250px 1fr;
}
}
@media (min-width: 1024px) {
.container {
grid-template-areas:
"header header header"
"sidebar main aside"
"footer footer footer";
grid-template-columns: 200px 1fr 200px;
}
}
完整示例
CSS
.page {
display: grid;
min-height: 100vh;
grid-template-columns: 250px 1fr;
grid-template-rows: 60px 1fr 40px;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
}
.page-header {
grid-area: header;
background: #333;
color: white;
}
.page-sidebar {
grid-area: sidebar;
background: #f5f5f5;
}
.page-main {
grid-area: main;
padding: 20px;
}
.page-footer {
grid-area: footer;
background: #eee;
}
HTML
<div class="page">
<header class="page-header">Header</header>
<aside class="page-sidebar">Sidebar</aside>
<main class="page-main">Main Content</main>
<footer class="page-footer">Footer</footer>
</div>
要点总结
grid-template-areas通过字符串可视化定义布局- 使用
grid-area将元素映射到命名区域 .表示空白区域- 配合媒体查询可实现响应式布局切换
- 适合复杂页面布局,可读性强
📝 发现内容有误?点击此处直接编辑