css网格布局是css中最强大的布局系统。它是一个二维系统,这意味着它能够处理列和行,不像flexbox主要是一维系统。经过css规则应用于父元素(成为网格容器)和该元素的子元素(网格项),您能够使用网格布局。css
css网格布局(又名“网格”)是一种基于网络的二维布局系统,旨在彻底改变咱们设计基于网格的用户界面的方式。css一直被用来布局咱们的网页,但它从未作过很好的工做。好比使用表格table,浮动float,定位position等,都很容易出现一些遗漏的功能和问题。譬如垂直居中。flexbox虽然对这样状况有所帮助,但它只是适用于更简单但一维布局,而不是复杂的二维布局(flexbox和grid实际上能够很好的协同工做,简化咱们的css代码)。grid是第一个专门解决布局问题的css模块,只要咱们一直在制做网站,咱们就一直在讨论这些问题。
html
它是全部网格项的直接父级。在下面例子中container是网格容器。git
<div class="container">
<div class="item item-1"></div>
<div class="item item-2"></div>
<div class="item item-3"></div>
</div>复制代码
网格容器的子节点,即为直接后代。下面例子中item元素是网格项,但sub-item不是。github
<div class="container">
<div class="item"></div>
<div class="item">
<p class="sub-item"></p>
</div>
<div class="item"></div>
</div>复制代码
构成网格结构的分界线。它们能够是垂直(‘列网格线’)或水平(‘行网络线’),位于和行和列的任一侧浏览器
能够理解为行和列所布局的方向,默认从左到右,从上到下bash
相邻行和相邻列网格线之间到空间。即为单个网格到‘单元’网络
多个网格线包围的总空间。网格区域能够包含任意数量的网格单元。app
.container {
display: grid | inline-grid;
}复制代码
使用以空格分隔的值列表定义网格的列和行。值表示轨道的大小,之间的空间表示网格线。例如(下图为效果图,线条实际不存在):ide
.container {
grid-template-columns: 40px 50px auto 50px 40px;
grid-template-rows: 25% 100px auto;
}复制代码
.container {
grid-template-columns: repeat(3, 20px [col-start]);
}复制代码
至关于布局
.container {
grid-template-columns: 20px [col-start] 20px [col-start] 20px [col-start];
}复制代码
.container {
grid-template-areas:
"<grid-area-name> | . | none | ..."
"...";
}复制代码
.item-a {
grid-area: header;
}
.item-b {
grid-area: main;
}
.item-c {
grid-area: sidebar;
}
.item-d {
grid-area: footer;
}
.container {
display: grid;
grid-template-columns: 50px 50px 50px 50px;
grid-template-rows: auto;
grid-template-areas:
"header header header header"
"main main . sidebar"
"footer footer footer footer";
}复制代码
以上css将建立一个四列宽三行高的网格。整个顶行将由标题区域组成。中间行将包括两个主要区域,一个空单元格和一个侧边栏区域。最后一行是全部页脚。表现效果大概以下图:
简写方式为
.container {
grid-gap: <grid-row-gap> <grid-column-gap>;
}复制代码
例如:
.container {
grid-template-columns: 100px 50px 100px;
grid-template-rows: 80px auto 80px;
grid-column-gap: 10px;
grid-row-gap: 15px;
}复制代码
.container {
justify-items: start | end | center | stretch;
}复制代码
.container {
align-items: start | end | center | stretch;
}复制代码
本文原文档地址css-tricks.com/snippets/cs…
根据以上文档基本能够自定义一个布局组件。如本人用polymer定义了一个组件grid-layout。
github地址为github.com/wanbo-chain…