CSS grid-area 属性

CSS grid-area 属性是一种对于 grid-row-start (en-US)、grid-column-start (en-US)、grid-row-end (en-US) 和 grid-column-end (en-US) 的简写,通过基线(line),跨度(span)或没有(自动)的网格放置在 grid row 中指定一个网格项的大小和位置,继而确定 grid area 的边界。


实例

使 "item1" 在行 2 列 1 开始,并横跨两行三列:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. .grid-container {
  6. display: grid;
  7. grid-template-columns: auto auto auto auto;
  8. grid-gap: 10px;
  9. background-color: #2196F3;
  10. padding: 10px;
  11. }
  12. .grid-container > div {
  13. background-color: rgba(255, 255, 255, 0.8);
  14. text-align: center;
  15. padding: 20px 0;
  16. font-size: 30px;
  17. }
  18. .item1 {
  19. grid-area: 2 / 1 / span 2 / span 3;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <h2>grid-area 属性</h2>
  25. <p>您可以使用 <em>grid-area</em> 属性来规定放置项目的位置。</p>
  26. <p>语法是 grid-row-start / grid-column-start / grid-row-end / grid-column-end.</p>
  27. <p>项目将在行 2 列 1 开始,并横跨 2 行 3 列:</p>
  28. <div class="grid-container">
  29. <div class="item1">1</div>
  30. <div class="item2">2</div>
  31. <div class="item3">3</div>
  32. <div class="item4">4</div>
  33. <div class="item5">5</div>
  34. <div class="item6">6</div>
  35. <div class="item7">7</div>
  36. </div>
  37. </body>
  38. </html>

可以在页面下方找到更多 TIY 实例。


定义和用法

grid-area 属性网格项目的尺寸以及在网格布局中的 位置,它是以下属性的简写属性:

  • grid-row-start
  • grid-column-start
  • grid-row-end
  • grid-column-end

grid-area 属性还可以用于为网格项分配名称。然后,可以通过网格容器的 grid-template-areas 属性引用命名的网格项目。请参阅下面的例子。

默认值:auto / auto / auto / auto
继承:
动画制作:支持。请参阅:动画相关属性
版本:CSS Grid Layout Module Level 1
JavaScript 语法:object.style.gridArea="1 / 2 / span 2 / span 3"

浏览器支持

表格中的数字注明了完全支持该属性的首个浏览器版本。

属性
grid-area5716521044

CSS 语法

  1. grid-area: grid-row-start / grid-column-start / grid-row-end / grid-column-end | itemname;
属性值
描述
grid-row-start规定从哪一行开始显示项目。
grid-column-start规定从哪一列开始显示项目。
grid-row-end规定在哪条行线停止显示项目,或跨越多少行。
grid-column-end指定在哪条列线停止显示项目,或跨越多少列。
itemname规定网格项目的项目。

更多实例

Item1 被命名 "myArea",并在五列网格布局中横跨所有五列:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. .item1 {
  6. grid-area: myArea;
  7. }
  8. .grid-container {
  9. display: grid;
  10. grid-template-areas: 'myArea myArea myArea myArea myArea';
  11. grid-gap: 10px;
  12. background-color: #2196F3;
  13. padding: 10px;
  14. }
  15. .grid-container > div {
  16. background-color: rgba(255, 255, 255, 0.8);
  17. text-align: center;
  18. padding: 20px 0;
  19. font-size: 30px;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <h2>grid-area 属性</h2>
  25. <p>您可以使用 <em>grid-area</em> 属性来命名网格项目。</p>
  26. <p>通过在网格容器上使用 <em>grid-template-areas</em> 属性,可以在设置网格布局时引用该名称。</p>
  27. <p>名为 “myArea” 的 Item1 将占据所有五列的位置:</p>
  28. <div class="grid-container">
  29. <div class="item1">1</div>
  30. <div class="item2">2</div>
  31. <div class="item3">3</div>
  32. <div class="item4">4</div>
  33. <div class="item5">5</div>
  34. <div class="item6">6</div>
  35. </div>
  36. </body>
  37. </html>

使 "myArea" 在五列网格布局中横跨两列(句号表示没有名称的项目):

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. .item1 {
  6. grid-area: myArea;
  7. }
  8. .grid-container {
  9. display: grid;
  10. grid-template-areas: 'myArea myArea . . .';
  11. grid-gap: 10px;
  12. background-color: #2196F3;
  13. padding: 10px;
  14. }
  15. .grid-container > div {
  16. background-color: rgba(255, 255, 255, 0.8);
  17. text-align: center;
  18. padding: 20px 0;
  19. font-size: 30px;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <h2>grid-area 属性</h2>
  25. <p>您可以使用 <em>grid-area</em> 属性来命名网格项目。</p>
  26. <p>通过在网格容器上使用 <em>grid-template-areas</em> 属性,可以在设置网格布局时引用该名称。</p>
  27. <p>名为 “myArea” 的 Item1 将占据(五列中的)两列的位置:</p>
  28. <div class="grid-container">
  29. <div class="item1">1</div>
  30. <div class="item2">2</div>
  31. <div class="item3">3</div>
  32. <div class="item4">4</div>
  33. <div class="item5">5</div>
  34. <div class="item6">6</div>
  35. <div class="item7">7</div>
  36. <div class="item8">8</div>
  37. <div class="item9">9</div>
  38. </div>
  39. </body>
  40. </html>

使 "item1" 横跨两列和两行:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. .item1 {
  6. grid-area: myArea;
  7. }
  8. .grid-container {
  9. display: grid;
  10. grid-template-areas: 'myArea myArea . . .' 'myArea myArea . . .';
  11. grid-gap: 10px;
  12. background-color: #2196F3;
  13. padding: 10px;
  14. }
  15. .grid-container > div {
  16. background-color: rgba(255, 255, 255, 0.8);
  17. text-align: center;
  18. padding: 20px 0;
  19. font-size: 30px;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <h2>grid-area 属性</h2>
  25. <p>您可以使用 <em>grid-area</em> 属性来命名网格项目。</p>
  26. <p>通过在网格容器上使用 <em>grid-template-areas</em> 属性,可以在设置网格布局时引用该名称。</p>
  27. <p>名为 “myArea” 的 Item1 将占据(五列中的)两列的位置,并横跨两行:</p>
  28. <div class="grid-container">
  29. <div class="item1">1</div>
  30. <div class="item2">2</div>
  31. <div class="item3">3</div>
  32. <div class="item4">4</div>
  33. <div class="item5">5</div>
  34. <div class="item6">6</div>
  35. <div class="item7">7</div>
  36. </div>
  37. </body>
  38. </html>

命名所有项目,并制作一张现成的网页模板:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. .item1 { grid-area: header; }
  6. .item2 { grid-area: menu; }
  7. .item3 { grid-area: main; }
  8. .item4 { grid-area: right; }
  9. .item5 { grid-area: footer; }
  10. .grid-container {
  11. display: grid;
  12. grid-template-areas:
  13. 'header header header header header header'
  14. 'menu main main main right right'
  15. 'menu footer footer footer footer footer';
  16. grid-gap: 10px;
  17. background-color: #2196F3;
  18. padding: 10px;
  19. }
  20. .grid-container > div {
  21. background-color: rgba(255, 255, 255, 0.8);
  22. text-align: center;
  23. padding: 20px 0;
  24. font-size: 30px;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <h2>grid-area 属性</h2>
  30. <p>您可以使用 <em>grid-area</em> 属性来命名网格项目。</p>
  31. <p>通过在网格容器上使用 <em>grid-template-areas</em> 属性,可以在设置网格布局时引用该名称。</p>
  32. <p>此网格布局包含六列和三行:</p>
  33. <div class="grid-container">
  34. <div class="item1">Header</div>
  35. <div class="item2">Menu</div>
  36. <div class="item3">Main</div>
  37. <div class="item4">Right</div>
  38. <div class="item5">Footer</div>
  39. </div>
  40. </body>
  41. </html>

相关页面

CSS 教程:CSS 网格布局

分类导航