CSS Grid 布局学习笔记
程序员文章站
2022-06-27 14:38:51
CSS Grid 布局学习笔记 好久没有写博客了, MDN 上关于 Grid 布局的知识比较零散, 正好根据我这几个月的实践对 CSS Grid 布局做一个总结, 以备查阅. 1. 基础用法 Grid 布局的核心属性有5个: 总的来说, Grid 布局就是: 父元素先定义好自己有几行几列. 然后, ......
CSS Grid 布局学习笔记
好久没有写博客了, MDN 上关于 Grid 布局的知识比较零散, 正好根据我这几个月的实践对 CSS Grid 布局做一个总结, 以备查阅.
1. 基础用法
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遍.
gird-column
可以拆分为grid-column-start
和grid-column-end
两个属性.
gird-row
可以拆分为grid-row-start
和grid-row-end
两个属性.
参考:
2. 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
了, 可以给自己的区域起一个语义化的名字
参考:
3. row-gap
, colomns-gap
, grid-gap
类似Flex, Grid 布局也支持行间距和列间距.
grid-gap
是row-gap
和colomns-gap
的合并.
grid-gap
也可以简写为gap
.
注意: colomns-gap
的默认值是 normal
, 表示列间距为1em
参考:
4. grid-auto-columns
和grid-auto-rows
如果你事先不知道你的网格有几行(有几列), 这两个属性可以帮到你. 就像字面意思一样, 这个属性表示自增长的网格行(列)的高度(宽度)
尤其是当你渲染一个不定长度的列表的时候, 这个属性会非常有用.
例如:
.parent { display: grid; grid-template-colomns: 1fr; grid-auto-rows: 100px; & > .child { grid-column: 1; } }
参考:
推荐阅读
-
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
-
Flutter学习笔记(22)--单个子元素的布局Widget
-
CSS学习笔记-过渡模块
-
CSS Grid 布局完全指南(图解 Grid 详细教程)
-
CSS学习笔记之字体样式
-
CSS Grid布局入门
-
Class与ID区别 margin和padding区别 CSS学习笔记
-
Html和Css学习笔记-html基础知识
-
Flutter学习笔记(23)--多个子元素的布局Widget(Rwo、Column、Stack、IndexedStack、Table、Wrap)
-
Android学习笔记之——UI组件/RelativeLayout(相对布局)