小码哥的IT人生

CSS grid-area 属性 详解

css3基础 2022-07-14 16:28:18小码哥的IT人生shichen

CSS grid-area 属性

定义和用法

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

  1. grid-row-start
  2. grid-column-start
  3. grid-row-end
  4. grid-column-end

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

另请参阅:

CSS 教程:CSS 网格布局

实例

例子 1

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

.item1 {
  grid-area: 2 / 1 / span 2 / span 3;
}

 

完整实例【亲自试一试】:

<!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>
<h1>grid-area 属性</h1>
<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>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

提示:页面底部提供更多实例。

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 规定网格项目的项目。

技术细节

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

更多实例

例子 2

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

.item1 {
  grid-area: myArea;
}
.grid-container {
  display: grid;
  grid-template-areas: 'myArea myArea myArea myArea 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>
<h1>grid-area 属性</h1>
<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>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

例子 3

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

.item1 {
  grid-area: myArea;
}
.grid-container {
  display: grid;
  grid-template-areas: 'myArea 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>
<h1>grid-area 属性</h1>
<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>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

例子 4

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

.grid-container {
  grid-template-areas: 'myArea myArea . . .' 'myArea myArea . . .';
}

 

完整实例【亲自试一试】:

<!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>
<h1>grid-area 属性</h1>
<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>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

例子 5

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

.item1 { grid-area: header; }
.item2 { grid-area: menu; }
.item3 { grid-area: main; }
.item4 { grid-area: right; }
.item5 { grid-area: footer; }
.grid-container {
  grid-template-areas:
    'header header header header header header'
    'menu main main main right right'
    'menu footer footer footer footer footer';
}

 

完整实例【亲自试一试】:

<!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>
<h1>grid-area 属性</h1>
<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>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

浏览器支持

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

Chrome IE / Edge Firefox Safari Opera
57 16 52 10 44

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024