Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。
Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。
HTML
<div class="grid-box"> <div class="item header"></div> <div class="item header"></div> <div class="item header"></div> <div class="item sidebar"></div> <div class="item main"></div> <div class="item main"></div> <div class="item footer"></div> <div class="item footer"></div> <div class="item footer"></div> </div>
CSS
.grid-box {
height: 100vh;
display: grid;
grid-template-columns: repeat(3, 33.3%);
grid-template-rows: 100px 1fr 100px;
grid-template-areas: 'header header header'
'sidebar main main'
'footer footer footer';
}
.item {
background-color: aquamarine;
border: 1px solid #eee;
margin: 0 10px 20px 10px;
margin-bottom: 20px;
counter-increment: items;
content: counter(items);
}
.header {
grid-area: header;
}
.main {
grid-area: main;
}
.sidebar {
grid-area: sidebar;
}
.footer {
grid-area: footer;
}
