1.先思考如何几个元素块布局需要考虑什么因素?

- 元素大小(长宽)
- 元素间的间距
- 元素之前放置的顺序
- 元素内部元素的放置顺序
<style>
/* 设置容器属性 */
.container{
display: grid;
grid-template-columns: 100px auto 200px;
grid-template-rows: 100px;
grid-gap: 10px;
}
/* 设置item属性 */
.item{
justify-self: center
}
</style>
<div class="container">
<div class="item">left</div>
<div class="item">main</div>
<div class="item">right</div>
</div>
2、 网格布局思维导图

2.1 容器属性
- 控制元素宽和高的属性:grid-template-columns, grid-template-row
- 控制元素间距的属性:grid-grap
- 控制元素排序方向的: grid-auto-flow
- 控制元素放置顺序的位置: grid-template;
- 控制整个容器盒子的位置: place-content(包含 justify-content和align-content)
- 控制item内容和位置: place-items(justify-items和align-items)
2.2 项目属性
- 控制item的宽高: grid-column, grid-row
- 控制item在grid-template-area定义的位置: grid-area
- 控制item内容放置位置place-self(justify-items,align-items)
-
应用实例
3.1 双飞翼布局
image.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>双飞翼布局</title>
<style>
/* 设置容器属性 */
.container{
display: grid;
grid-template-columns: 100px auto 200px;
grid-template-rows: 100px;
grid-gap: 10px;
}
/* 设置item属性 */
.item{
justify-self: center
}
.left{background-color: lightgreen}
.main{background-color: lightcoral}
.right{background-color: lightpink}
.container div{
font-size: 60px;
text-align: center;
}
.header{
grid-column: 1/ 4;
}
.footer{
grid-column: 1/ 4;
}
</style>
</head>
<body>
<div class="container">
<div class="header">header</div>
<div class="left">left</div>
<div class="main">main</div>
<div class="right">right</div>
<div class="footer">footer</div>
</div>
</body>
</html>
2.2 响应式布局

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Grid实现响应式布局</title>
<style>
/* 响应式布局 */
.wrapper{
display: grid;
grid-template-columns: repeat(auto-fill, minmax(192px, 1fr));
grid-gap: 5px;
}
/* 多栅格布局 */
/* .wrapper{
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-gap: 5px;
} */
.item{
background-color: lightskyblue;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
<div class="item">item6</div>
<div class="item">item7</div>
<div class="item">item8</div>
<div class="item">item9</div>
<div class="item">item10</div>
<div class="item">item11</div>
<div class="item">item12</div>
</div>
</body>
</html>
网友评论