CSS 属性

CSS 属性 grid-template-areas 定义网格内的命名部分,概述单元格的排列并用特定名称标识它们。

这些部分并不专门链接到各个网格元素,而是可以通过网格放置属性 grid-row-startgrid-row-endgrid-column-startgrid-rowgrid-column 和 grid-area.

可能的值

  • 网格容器不包含任何命名的网格区域。

  • 为列出的每个唯一字符串创建一行,而每个字符串的单元格形成单独的列。

    如果多行中的多个单元格标记具有相同的名称,则它们是组合成一个跨越这些特定网格单元的单一命名网格区域。

    但是,如果这些单元没有形成矩形形状,则声明无效。

语法

grid-template-areas: none | <string> ; 

适用范围

网格容器。

CSS grid-template-areas: 命名区域

下面的示例演示了使用 grid-template-areas 定义命名区域。

  • 在给出的示例中,grid-template-areas 属性通过分配命名来定义布局结构区域到某些网格单元。

  • 属性值中的每个字符串代表一行,用空格分隔的各个字符串指定列。

  • 通过为这些区域指定名称,可以组织网格布局,以便可以将内容相应地放置在每个命名部分中。

<html>
<head>
<style>
   /* 定义网格容器的样式 */
   .grid-container {
      display: grid;
      grid-template-columns: repeat(5, 1fr); /* 五列等宽 */
      grid-template-rows: 100px 200px 150px 100px; /* 四排不同高度 */
      grid-template-areas:
      "header header header main extra"
      "sidebar content content main extra"
      "sidebar content content main extra"
      "footer footer footer main extra";
      gap: 10px;
      font-size: 1.5em;
      height: 600px; /* 设置固定高度进行演示 */
      border: 1px solid #ccc;
      padding: 10px;
   }
   /* 定义网格项的样式 */
   .header {
      grid-area: header;
      background-color: #3498db;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
   }
   .sidebar {
      grid-area: sidebar;
      background-color: #2ecc71;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
   }
   .content {
      grid-area: content;
      background-color: #e74c3c;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
   }
   .footer {
      grid-area: footer;
      background-color: #f39c12;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
   }
   .main {
      grid-area: main;
      background-color: #9b59b6;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
   }
   .extra {
      grid-area: extra;
      background-color: #34495e;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
   }
</style>
</head>
<body>
   <div class="grid-container">
      <div class="header">Header</div>
      <div class="sidebar">Sidebar</div>
      <div class="content">Content</div>
      <div class="footer">Footer</div>
      <div class="main">Main</div>
      <div class="extra">Extra</div>
   </div>
</body>
</html> 

CSS grid- template-areas: 网页布局

在以下示例中,grid-template-areas 属性为每个布局段定义命名网格区域。

grid-template-areas 分配标头、文章、导航、广告和页脚在网格内,形成有组织的网页布局。

<html>
<head>
<style>
   body { 
      display: grid;
      grid-template-areas: 
         "header header header"
         "nav article article"
         "ads ads footer";
      grid-template-rows: 80px 1fr 70px;  
      grid-template-columns: 20% 1fr 15%;
      grid-gap: 10px;
      height: 100vh;
      margin: 0;
      font-size:20px;
   }
   header, footer, article, nav, div {
      padding: 20px;
      background: #3498DB; 
      color: #fff; 
   }
   #pageHeader {
      grid-area: header;
   }
   #pageFooter {
      grid-area: footer;
   }
   #mainArticle { 
      grid-area: article;      
   }
   #mainNav { 
      grid-area: nav; 
   }
   #siteAds { 
      grid-area: ads; 
   }
</style>
</head>
<body>
<header id="pageHeader">Custom Header</header>
<article id="mainArticle">Main Content</article>
<nav id="mainNav">Navigation</nav>
<div id="siteAds">Advertisement</div>
<footer id="pageFooter">Custom Footer</footer>
</body>
</html>