好久没有写博客了, MDN 上关于 Grid 布局的知识比较零散, 正好根据我这几个月的实践对 CSS Grid 布局做一个总结, 以备查阅.
基础用法
Grid 布局的核心属性有 5 个:
- .parent {
- display: grid;
- grid-template-colomns: 30px 1fr;
- grid-template-rows: repeat(3, 30px) 1fr;
- &> .child {
- grid-column: 1 / 3;
- grid-row: 1;
- }
- }
总的来说, Grid 布局就是: 父元素先定义好自己有几行几列. 然后, 子元素定义自己在第几行第几列 (可以跨越多行或者多列).
其中, display 属性大家应该很熟悉了吧? 这里不再多说. repeat 函数表示将 1 个 css 值重复 n 遍.
其它 4 个 CSS 属性的具体含义可以参考下边:
- https://developer.mozilla.org/zh-CN/docs/web/CSS/grid-template-columns
- grid-template-rows https://developer.mozilla.org/zh-CN/docs/Web/CSS/网格-模板-列
- https://developer.mozilla.org/zh-CN/docs/Web/CSS/grid-column
- https://developer.mozilla.org/zh-CN/docs/Web/CSS/grid-row
进阶
grid-template-areas
和 grid-area
grid-template-areas
这个属性其实有点象形文字的意思.
- .parent {
- display: grid;
- grid-template-colomns: 100px 1fr;
- grid-template-rows: 1fr 50px;
- grid-template-areas:
- "nav content"
- "footer footer";
- .item1 {
- grid-area: nav;
- }
- .item2 {
- grid-area: content;
- }
- .item3 {
- grid-area: footer;
- }
- }
上面我们将父元素分成了 4 格. 然后将左上的格子命名为 nav, 右上的格子命名为 content, 底部的格子命名为 footer.
最后, 我们只需要在子元素中指定自己属于哪个区域就可以了.
这样写有一个好处: 我们再也不用写枯燥难懂的 grid-column 和 grid-row 了, 可以给自己的区域起一个语义化的名字
参考:
- https://developer.mozilla.org/zh-CN/docs/Web/CSS/grid-template-areas
- https://developer.mozilla.org/zh-CN/docs/Web/CSS/grid-area
row-gap 和 colomns-gap
类似 Flex, Grid 布局也支持行间距和列间距.
注意: colomns-gap 的默认值是 normal, 表示列间距为 1em
参考:
- https://developer.mozilla.org/zh-CN/docs/Web/CSS/column-gap
- https://developer.mozilla.org/en-US/docs/Web/CSS/row-gap
待续 ... ...
来源: https://www.cnblogs.com/forzhaokang/p/9394405.html