grid网格布局,如何控制子元素的自动流动方式(排列方向)?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文中,苏南大叔将针对这种新的grid
网格布局进行解读。本文着力解决的问题是子元素的流动方式的问题,具体来说,就是控制子元素的排列方向问题,用到的css
属性是:grid-auto-flow
。

大家好,这里是很久没有更新的苏南大叔的博客,这里记录苏南大叔的代码所学所想。本文测试环境:win10
,chrome
。
测试用例
首先要明确的观点是:display:grid
并不是被所有的浏览器所支持,比如大家深恶痛绝的ie
全系列,都不支持grid
网格布局。那么,值得庆幸的是,目前占据主导地位的chrome
浏览器是支持display:grid
的。所以,本系列的所有例子,都是基于谷歌浏览器的。
另外,兼容性并不好的grid
布局的效果,能够被传统的css+div
布局,甚至table
布局所取代的。所以,不要对grid
布局死磕哦。浏览器不支持,啥意义都没有。
参考文章:https://newsn.net/say/css-grid.html
本文中的例子也是对上文中例子的稍稍改造,一个容器里面有四个子元素。那么这几个元素之间是如何排列的呢?这就是本文主要分析的内容。
注意:父容器里面没有定义grid-template-columns
和grid-template-rows
等,它们的出现会对本文的理解出现干扰。
从上到下按行分布row
【默认值】

从左到右按列分布column

特例dense
这个grid-auto-flow
的取值还有:dense
,row dense
和column dense
。这个dense
比较难理解,留作后续文章说明。
grid-auto-flow | value |
---|---|
row | 行分布 |
column | 列分布 |
dense | 紧密分布 |
row dense | 行紧密分布 |
column dense | 列紧密分布 |
使用grid-template-columns
和grid-template-rows
,会改变目前本文中的grid-auto-flow
的表现。个人猜测,可能就是grid-auto-flow
中的auto
单词的由来吧,使用了template
,就不会auto
了。
相关链接
- https://newsn.net/say/css-flex.html
- https://newsn.net/say/css-grid.html
- https://newsn.net/say/flex-direction.html
总结
本文中,grid
布局中的auto-flow
的概念,和flex
布局中的主轴方向flex-direction
概念非常类似,大家可以多加对比。更多苏南大叔的css
经验文章,请参考:


