当前位置: 首页 > news >正文

CSS Grid 布局示例 - grid-template-areas

CSS Grid 布局示例:深入理解 grid-template-areas

我将通过一个实际的例子来演示如何使用 grid-template-areas 创建直观的网页布局。这个属性让你能够"可视化"地设计布局,非常强大且易于理解。

实现思路

首先,我会创建一个常见的网页布局,包含页眉、导航、主内容区、侧边栏和页脚。然后使用 CSS Grid 的 grid-template-areas 属性来定义布局结构。

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS Grid 布局示例 - grid-template-areas</title><style>* {box-sizing: border-box;margin: 0;padding: 0;}body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;line-height: 1.6;color: #333;background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);min-height: 100vh;padding: 20px;}.container {max-width: 1200px;margin: 0 auto;padding: 20px;}h1 {text-align: center;color: white;margin-bottom: 30px;text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);}.grid-layout {display: grid;gap: 15px;height: 80vh;/* 定义网格区域模板 ("画"出布局) */grid-template-areas:"header header""nav main""footer footer";/* 定义列和行的大小 */grid-template-columns: 1fr 3fr;  /* 两列:导航和主内容 */grid-template-rows: auto 1fr auto;  /* 三行:头、内容、尾 */background-color: rgba(255, 255, 255, 0.1);border-radius: 10px;padding: 15px;box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);}/* 为每个区域定义样式 */.header {grid-area: header;background-color: #ff9d9d;}.nav {grid-area: nav;background-color: #9dff9d;}.main {grid-area: main;background-color: #9dcfff;}.footer {grid-area: footer;background-color: #ffff9d;}/* 通用区域样式 */.grid-area {padding: 20px;border-radius: 8px;box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);display: flex;flex-direction: column;justify-content: center;align-items: center;}.grid-area h2 {margin-bottom: 15px;font-size: 1.5rem;color: #2c3e50;}.grid-area p {text-align: center;max-width: 80%;}/* 响应式设计 */@media (max-width: 768px) {.grid-layout {/* 在小屏幕上改为单列布局 */grid-template-areas:"header""nav""main""footer";grid-template-columns: 1fr;grid-template-rows: auto auto 1fr auto;}}.code-example {background-color: #2d3436;color: #f5f6fa;padding: 20px;border-radius: 8px;margin-top: 30px;font-family: 'Fira Code', monospace;overflow-x: auto;}.code-example h3 {color: #dfe6e9;margin-bottom: 15px;}.comment {color: #636e72;}.property {color: #81ecec;}.value {color: #fab1a0;}</style>
</head>
<body><div class="container"><h1>CSS Grid 布局示例:grid-template-areas</h1><div class="grid-layout"><div class="grid-area header"><h2>Header</h2><p>页面标题区域</p></div><div class="grid-area nav"><h2>Navigation</h2><p>导航菜单区域</p></div><div class="grid-area main"><h2>Main Content</h2><p>主要内容区域</p></div><div class="grid-area footer"><h2>Footer</h2><p>页脚信息区域</p></div></div><div class="code-example"><h3>代码解析</h3><pre><code><span class="comment">/* 定义网格容器 */</span>
.grid-layout {display: grid;gap: 15px;<span class="comment">/* 使用grid-template-areas可视化布局 */</span><span class="property">grid-template-areas</span>: <span class="value">"header header"</span><span class="value">"nav    main"</span><span class="value">"footer footer"</span>;<span class="comment">/* 定义列和行的大小 */</span><span class="property">grid-template-columns</span>: <span class="value">1fr 3fr</span>;  <span class="comment">/* 两列:导航和主内容 */</span><span class="property">grid-template-rows</span>: <span class="value">auto 1fr auto</span>;  <span class="comment">/* 三行:头、内容、尾 */</span>
}<span class="comment">/* 将元素分配到指定区域 */</span>
.header { <span class="property">grid-area</span>: <span class="value">header</span>; }
.nav    { <span class="property">grid-area</span>: <span class="value">nav</span>; }
.main   { <span class="property">grid-area</span>: <span class="value">main</span>; }
.footer { <span class="property">grid-area</span>: <span class="value">footer</span>; }</code></pre></div></div>
</body>
</html>

http://www.dtcms.com/a/392664.html

相关文章:

  • 基于脚手架微服务的视频点播系统-客户端业务逻辑处理部分(一)
  • 501. 二叉搜索树中的众数
  • Go面试题及详细答案120题(81-100)
  • 在跨平台C++项目中条件化使用Intel MKL与LAPACK/BLAS进行矩阵计算
  • 知芽AI(paperxx)写作:开题报告写作宝典
  • c++26新功能—模板参数中的概念与变量模板
  • Linux服务器上安装配置GitLab的步骤
  • Netty原理介绍
  • 【已解决】在windows系统安装fasttext库,解决安装fasttext报错问题
  • 从“free”到“free_s”:内存释放更安全——free_s函数深度解析与free全方位对比
  • 【LeetCode 每日一题】1733. 需要教语言的最少人数
  • 多模态知识图谱
  • 基于python spark的航空数据分析系统的设计与实现
  • 【每日一问】运放单电源供电和双电源供电的区别是什么?
  • LeetCode算法领域的经典题目之“三数之和”和“滑动窗口最大值”问题
  • SpringCloudConfig:分布式配置中心
  • Go变量与类型简明指南
  • 每天学习一个统计检验方法--曼-惠特尼U检验(以噩梦障碍中的心跳诱发电位研究为例)
  • linux创建服务器
  • 线性代数基础 | 零空间 / 行空间 / 列空间 / 左零空间 / 线性无关 / 齐次 / 非齐次
  • 【StarRocks】-- 同步物化视图实战指南
  • 【C++项目】微服务即时通讯系统:服务端
  • 开源WordPress APP(LaraPressAPP)文档:1.开始使用
  • 单调破题:当指数函数遇上线性方程的奇妙对决
  • 【C++】vector 的使用和底层
  • 指标体系单一只关注速度会造成哪些风险
  • 智能体落地与大模型能力关系论
  • QPS、TPS、RT 之间关系
  • Day27_【深度学习(6)—神经网络NN(4)正则化】
  • NeurIPS 2025 spotlight 自动驾驶最新VLA+世界模型 FSDrive