<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>css grid网格布局教程</title>
<style>
/* 最强大的css布局方案 */
/* 他将网页划分成一个个网络,可以任意组合不同的网格,做出各种各样的布局 */
.container {
display: grid;
/* 容器指定了网格布局以后,接着就要划分行和列。grid-template-columns属性定义每一列的列宽,grid-template-rows属性定义每一行的行高 */
/* grid-template-columns: 100px 100px 100px; */
/* grid-template-rows: 100px 100px 100px; */
/* 上面指定了行和高为100px */
/* 除了用绝对单位,也可用使用百分比 */
/* grid-template-columns: 33.33% 33.33% 33.33%; */
/* grid-template-rows: 33.33% 33.33% 33.33%; */
/* repeat */
/* 接受两个参数,第一个参数是重复的次数(上例是3),第二个参数是所要重复的值。 */
/* grid-template-columns: repeat(3, 33.33%); */
/* grid-template-rows: repeat(3, 100%); */
/* auto-fill 表示自动填充 */
/* grid-template-columns: repeat(auto-fill, 100px); */
/* fr关键字 */
/* 为了方便表示比例关系,网格布局提供了fr关键字(fraction 的缩写,意为"片段")。如果两列的宽度分别为1fr和2fr,就表示后者是前者的两倍。 */
/* grid-template-columns: 1fr 1fr; */
/* fr可以与绝对长度的单位结合使用,这时会非常方便 */
/* 第一列的宽度为150像素,第二列的宽度是第三列的一半 */
/* grid-template-columns: 100px 1fr 2fr; */
/* minmax() */
/* 函数产生一个长度范围,表示长度就在这个范围之中。它接受两个参数,分别为最小值和最大值 */
/* grid-template-columns: 1fr 1fr minmax(100px, 1fr); */
/* auto关键安:关键字表示由浏览器自己决定长度 */
/* grid-template-columns: 100px auto 100px; */
/* 网格线的名称 */
/* 属性里面,还可以使用方括号,指定每一根网格线的名字,方便以后的引用。 */
grid-template-columns: [a1] 100px [a2] 100px [a3] auto;
grid-template-rows: [b1] 200px [b2] 200px [b3] auto;
}
.item {
font-size: 2em;
text-align: center;
border: 1px solid greenyellow;
}
.item-1 {
background-color: red;
}
.item-2 {
background-color: yellowgreen;
}
.item-3 {
background-color: greenyellow;
}
.item-4 {
background-color: blue;
}
.item-5 {
background-color: blueviolet;
}
.item-6 {
background-color: cyan;
}
.item-7 {
background-color: darkorange;
}
.item-8 {
background-color: olivedrab;
}
.item-9 {
background-color: olive;
}
</style>
</head>
<body>
<!-- Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大 -->
<!-- 容器里面的水平区域称为"行"(row),垂直区域称为"列"(column) -->
<!-- 行和列的交叉区域,称为"单元格"(cell)。 -->
<!-- 正常情况下,n行和m列会产生n x m个单元格。比如,3行3列会产生9个单元格 -->
<p>第一行</p>
<!-- 下面第一个div是容器 -->
<div class="container">
<!-- 以下div是项目 -->
<!-- 注意:项目只能是容器的顶层子元素,不包含项目的子元素,比如上面代码的<p>元素就不是项目。Grid 布局只对项目生效。 -->
<div class="item item-1"><p>1</p></div>
<div class="item item-2">2</div>
<div class="item item-3">3</div>
<div class="item item-4">4</div>
<div class="item item-5">5</div>
<div class="item item-6">6</div>
<div class="item item-7">7</div>
<div class="item item-8">8</div>
<div class="item item-9">9</div>
</div>
<p>最后一行</p>
</body>
</html>