# grid 宫格
# 属性
# 列属性:grid-template-columns:定义网格中的列
# 行属性:grid-template-rows: 定义网格中的行
后面什么几个属性就是几列/行,也可以是百分比 如20% 30% 也可以百分比和具体数值混合, 如20px 30%
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style >
.mid {
display: grid;
/* 定义一行显示三列*/
grid-template-columns: 100px 100px 100px;
/* 定义一行显示三行*/
grid-template-rows: 100px 100px 100px;
}
</style>
<body>
<span class="span1">span1</span>
<div class="mid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
<div>2</div>
</div>
<span class="span2">span2</span>
</body>
</html>
# 重复次数 repet
作用是假如需要多个行/列可以使用这个属性,比较方便
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style >
.mid {
display: grid;
grid-template-columns: repeat(2, 50%);/* 2列 每列宽度50%*/
grid-template-rows: repeat(4, 100px); /* 4行 每行高度100 */
}
</style>
<body>
<span class="span1">span1</span>
<div class="mid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
<span class="span2">span2</span>
</body>
</html>
# auto-fill
自动划分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style >
.mid {
display: grid;
grid-template-columns: repeat(auto-fill, 33%);
grid-template-rows: repeat(4, 100px);
}
</style>
<body>
<span class="span1">span1</span>
<div class="mid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
<span class="span2">span2</span>
</body>
</html>
# auto
自适应
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style >
.top {
height: 100px;
background-color: skyblue;
}
.container {
display: grid;
grid-template-rows: calc(100vh - 120px);
grid-template-columns: 100px auto;
}
.left {
background-color: pink;
}
.right {
background-color: aqua;
}
</style>
<body>
<div>
<div class="top"></div>
<div class="container">
<div class="left"></div>
<div class="right"></div>
</div>
</div>
</body>
</html>
# fr
片段划分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style >
.container {
display: grid;
/*
2行 3列
第一行 1/5
第二行 2/5
*/
grid-template-rows: 1fr 2fr;
grid-template-columns: auto auto auto;
}
</style>
<body>
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
</body>
</html>
# minmax
满足条件最大,不满足最小
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style >
.container {
display: grid;
grid-template-rows: 100px 100px minmax(100px, 200px);
grid-template-columns: auto auto auto;
}
</style>
<body>
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
</body>
</html>
# 行列间距
- 行间距 grid-row-gap
- 列间距 grid-column-gap
- 组合,行&列间距 grid-gap: 行间距,列间距;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style >
.container {
display: grid;
grid-template-rows: 100px 100px minmax(100px, 200px);
grid-template-columns: auto auto auto;
grid-gap: 10px 20px;
grid-column-gap: 10px;
grid-row-gap: 20px;
}
</style>
<body>
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
</body>
</html>
# 方向显示
- grid-auto-flow
- column:纵向
- row:横向
# 单元格对局方式
- just-items:水平对其方式
- align-items:垂直对其方式
- place-items: 垂直方向 水平方向;
# 容器对其方式
- justify-content:水平
- align-content:垂直
# 合并单元格
- grid-column-start 纵向开始位置
- grid-column-end 纵向结束位置
- grid-row-start 横向开始位置
- grid-row-end 横向结束位置
# 网格线
可以想象成 table 的合并单元格列合并和行合并,注意这个属性是增加在子元素上,不是父元素
- grid-column
- grid-row 语法1,这个表示从第一号线到第三号线,第一行到第三行
grid-column: 1/3;
grid-row: 1/3;
语法2 比语法一简单些不需要计算到哪个单元格,这个span和上面的区别是跨几个单元格,上面是从1号线到三号线
grid-column: 1 / span 3;
grid-row: 1 / span3;