You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Flexbox layout is most appropriate to the components of an application, and small-scale layouts, while the Grid layout is intended for larger scale layouts.
<divclass="wrapper"><div>One</div><div>Two
<p>I have some more content in.</p><p>This makes me taller than 100 pixels.</p></div><div>Three</div><div>Four</div><div>Five</div></div>
在css-tricks的A Complete Guide to Flexbox一文中,有这样一句话:
我一直以来觉得flex布局已经够用了,因此一直没有学习grid布局。
但是看到这句话,让我对grid产生了一些兴趣,到底grid是不是如作者所说:“grid适用于大型布局”,暂时先画一个问号“?”
当这篇博文结束时,相信对这个问号会有一个好的答案。
初识grid布局
最简grid布局示例
grid五大概念
固定和灵活的轨道尺寸
条目布局(item)
为已有内容增加额外的轨道(hold content)
对齐控制(alignment)
重叠内容控制(overlap)
Grid container、Grid Tracks(fr、repeat()、显隐式grid、minmax)、Grid lines、Grid cells、Grid areas、Gutters
Grid container
通过为.wrapper设置display:grid属性,从默认的block变为grid,构建出一个grid container。
打开devtool选中某个grid item时,grid会有明显的虚线;普通布局不会有。
grid布局:
普通布局:
Grid Tracks
row track和column track
这是一个row track
可以通过grid-template-columns定义列track的宽度
fr、repeat()、显隐式grid、minmax
fr
track可以通过任何长度单位定义。
grid同样引入了一种特殊的长度单位去创建灵活的grid track。
这个单位就是fr,它代表的是网格容器中可用空间的一个部分。
下面的grid定义会创建三个等宽的track,宽度根据可用空间进行grow和shrink。
如果1和4想占据2个单位的宽度的话,可以这样:
下面这样的如何表现呢?
第一个track 500px宽;剩余的空间3等分,按照1比2的比例分配出去。
repeat()函数
如果有很多重复的track的话,可以用repeat()函数来写。
例如下面的例子:
可以写成这样:
不仅仅可以单独使用repeat()函数,还可以与px以及其他的组合使用。
而且可以repeat多个track,例如下面这样:
5个1:2分割的track,总计10个。
显隐式grid
这个例子通过grid-auto-rows,确保隐式的grid高度为200px。
minmax
Grid lines
来看一个在这些属性上运用了grid line的例子:
Grid cells
Grid areas
Gutter
嵌套grid布局
display: grid;grid-template-columns: repeat(3, 1fr);
将第一行内的子元素变为grid布局grid-row-start: 1;
控制box1的顺序;grid-row-start: 2;grid-row-start: 3;
可以将其放置在下面grid-row-start: 2
grid-row-start: 3
grid实现覆盖式的布局并通过z-index控制Grid层级、控制Grid顺序
grid实现覆盖式的布局
grid布局不可做覆盖式的布局。
通过z-index控制Grid层级、控制Grid顺序
学习和实践感悟
The text was updated successfully, but these errors were encountered: