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 开始,并横跨两行三列:
<!DOCTYPE html><html><head><style>.grid-container {display: grid;grid-template-columns: auto auto auto auto;grid-gap: 10px;background-color: #2196F3;padding: 10px;}.grid-container > div {background-color: rgba(255, 255, 255, 0.8);text-align: center;padding: 20px 0;font-size: 30px;}.item1 {grid-area: 2 / 1 / span 2 / span 3;}</style></head><body><h2>grid-area 属性</h2><p>您可以使用 <em>grid-area</em> 属性来规定放置项目的位置。</p><p>语法是 grid-row-start / grid-column-start / grid-row-end / grid-column-end.</p><p>项目将在行 2 列 1 开始,并横跨 2 行 3 列:</p><div class="grid-container"><div class="item1">1</div><div class="item2">2</div><div class="item3">3</div><div class="item4">4</div><div class="item5">5</div><div class="item6">6</div><div class="item7">7</div></div></body></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-area | 57 | 16 | 52 | 10 | 44 |
CSS 语法
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",并在五列网格布局中横跨所有五列:
<!DOCTYPE html><html><head><style>.item1 {grid-area: myArea;}.grid-container {display: grid;grid-template-areas: 'myArea myArea myArea myArea myArea';grid-gap: 10px;background-color: #2196F3;padding: 10px;}.grid-container > div {background-color: rgba(255, 255, 255, 0.8);text-align: center;padding: 20px 0;font-size: 30px;}</style></head><body><h2>grid-area 属性</h2><p>您可以使用 <em>grid-area</em> 属性来命名网格项目。</p><p>通过在网格容器上使用 <em>grid-template-areas</em> 属性,可以在设置网格布局时引用该名称。</p><p>名为 “myArea” 的 Item1 将占据所有五列的位置:</p><div class="grid-container"><div class="item1">1</div><div class="item2">2</div><div class="item3">3</div><div class="item4">4</div><div class="item5">5</div><div class="item6">6</div></div></body></html>
使 "myArea" 在五列网格布局中横跨两列(句号表示没有名称的项目):
<!DOCTYPE html><html><head><style>.item1 {grid-area: myArea;}.grid-container {display: grid;grid-template-areas: 'myArea myArea . . .';grid-gap: 10px;background-color: #2196F3;padding: 10px;}.grid-container > div {background-color: rgba(255, 255, 255, 0.8);text-align: center;padding: 20px 0;font-size: 30px;}</style></head><body><h2>grid-area 属性</h2><p>您可以使用 <em>grid-area</em> 属性来命名网格项目。</p><p>通过在网格容器上使用 <em>grid-template-areas</em> 属性,可以在设置网格布局时引用该名称。</p><p>名为 “myArea” 的 Item1 将占据(五列中的)两列的位置:</p><div class="grid-container"><div class="item1">1</div><div class="item2">2</div><div class="item3">3</div><div class="item4">4</div><div class="item5">5</div><div class="item6">6</div><div class="item7">7</div><div class="item8">8</div><div class="item9">9</div></div></body></html>
使 "item1" 横跨两列和两行:
<!DOCTYPE html><html><head><style>.item1 {grid-area: myArea;}.grid-container {display: grid;grid-template-areas: 'myArea myArea . . .' 'myArea myArea . . .';grid-gap: 10px;background-color: #2196F3;padding: 10px;}.grid-container > div {background-color: rgba(255, 255, 255, 0.8);text-align: center;padding: 20px 0;font-size: 30px;}</style></head><body><h2>grid-area 属性</h2><p>您可以使用 <em>grid-area</em> 属性来命名网格项目。</p><p>通过在网格容器上使用 <em>grid-template-areas</em> 属性,可以在设置网格布局时引用该名称。</p><p>名为 “myArea” 的 Item1 将占据(五列中的)两列的位置,并横跨两行:</p><div class="grid-container"><div class="item1">1</div><div class="item2">2</div><div class="item3">3</div><div class="item4">4</div><div class="item5">5</div><div class="item6">6</div><div class="item7">7</div></div></body></html>
命名所有项目,并制作一张现成的网页模板:
<!DOCTYPE html><html><head><style>.item1 { grid-area: header; }.item2 { grid-area: menu; }.item3 { grid-area: main; }.item4 { grid-area: right; }.item5 { grid-area: footer; }.grid-container {display: grid;grid-template-areas:'header header header header header header''menu main main main right right''menu footer footer footer footer footer';grid-gap: 10px;background-color: #2196F3;padding: 10px;}.grid-container > div {background-color: rgba(255, 255, 255, 0.8);text-align: center;padding: 20px 0;font-size: 30px;}</style></head><body><h2>grid-area 属性</h2><p>您可以使用 <em>grid-area</em> 属性来命名网格项目。</p><p>通过在网格容器上使用 <em>grid-template-areas</em> 属性,可以在设置网格布局时引用该名称。</p><p>此网格布局包含六列和三行:</p><div class="grid-container"><div class="item1">Header</div><div class="item2">Menu</div><div class="item3">Main</div><div class="item4">Right</div><div class="item5">Footer</div></div></body></html>
相关页面
CSS 教程:CSS 网格布局