We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
网格布局在众多布局方法中, 功能强大, 如Bootstrap的栅格化布局, 在浏览器中内置了, 而且突破了12个格子的限制, 还可以定义到每一个单元格的内容排列方式, 功能格外的强大.
容器, 就是开启Grid Format Context, 也就是栅格化格式上下文的容器, 所有设置 display:grid;或者display:inline-grid属性的元素, 都是一个GFC的容器, 容器的子元素叫项目, 容器的后代元素不能叫项目, 只能叫内容.
display:grid;
display:inline-grid
display:inline-grid; display:grid;
grid布局, 默认是block级别的元素, 可以设置成inline-grid成内联元素.
grid
inline-grid
行/列, 也就是row/column, 分别指的是开始布局的x/y轴方向, 行和列的交叉就变成了单元格.
在容器的GFC下, x/y的布局方向交叉, 构成单元格, 而每一个单元格都是由左单元格线, 右单元格线, 上单元格线, 下单元格线构成的.
方法(一)
grid-template-rows: 100px 100px 100px; grid-template-columns: 100px 100px 100px;
可以直接指定固定宽度, 也可以百分比数值, 此外, 还可以指定每一行/列的单元格线名称
grid-template-rows: [r1] 100px [r2] 100px [r3] 100px [r4];
实际上, 和这2个货长得差不多还有一个叫grid-template-areas的属性, 用来定义区域的 名称的.
grid-template-areas
grid-template-areas: 'a a a' 'a d e' 'f i j';
上面则是定义了9个区域的名称情况.可以同名, 但是同名的区域必须是在同一整列或一整行. 定义了区域的名称之后, 可以直接使用区域名称-start, 区域名称-end来引用单元格的起始网格线, 结束网格线.
区域名称-start
区域名称-end
方法(二)
grid-template-rows: 1fr 1fr 1fr; grid-template-columns: 1fr 1fr 1fr;
指定fr关键字,片段的意思, 其实是一个比例单位, 代表着三列的网格比例为1:1:1, 也可以是小数, 也可以是关键字auto, 代表自动填充, 也可以一个范围minmax(100px, 1fr);
fr
片段
auto
minmax(100px, 1fr);
方法(三)
grid-template-rows: repeat(3, 100px); grid-template-columns: repeat(3, 100px);
另外可以利用repeat方法, 第一个参数是循环的次数, 第二个参数是网格的宽度, 如果是grid-template-columns的话, 就是网格的高度.
grid-template-columns
此外还有几个关键字,
auto-fill
grid-template-rows: repeat(auto-fill, 100px);
默认单元格式以row的形式排列,一行结束后在另一行开始排.
grid-auto-flow: row; 或 grid-auto-flow: column;
设置整体布局,可以分为2个方向,行/列, 整个容器的在水平反向的对齐方式justify-content, 在垂直方向的align-content.
justify-content
align-content
justify-content: start|center|end|stretch|space-around|space-between| space-evenly; align-content: start |center|end|stretch|space-around|space-between|space-evenly; 或者 place-centent: <align-content> <justify-content>;
类似table布局的td元素的text-align, Grid布局也可以设置单元格内容的居中布局方式.
table
text-align
align-items: start | end | center | stretch; justify-items: start | end | center | stretch; 或者 place-items: <align-items> <justify-items>;
align-items 是设置内容在水平位置对齐的效果 justify-items 是设置内容在垂直位置对齐的效果
align-items
justify-items
间隙, 分为行间隙, grid-row-gap, 和列间隙grid-column-gap, 列之间的间隙, 这个间隙是可以设置的
grid-row-gap
grid-column-gap
grid-row-gap:10px; grid-column-gap:10px; 或 grid-gap: 10px 10px;
grid-gap 是 grid-row-gap 和 grid-column-gap的缩写.
grid-gap
浏览器为了渲染特定未知的网格, 会自动的生成填补的网格, 这个时候,如果需要定义自动的网格信息. 可以用grid-auto-rows;
grid-auto-rows
grid-auto-rows: 100px; grid-auto-columns: 100px;
grid-auto-rows, grid-auto-columns 和grid-template-rows,grid-template-colummns的属性值一样.
grid-auto-columns
grid-template-rows
grid-template-colummns
以上所有的属性, 都是在容器上定义的, 属于容器属性. 简单的概括就是,
grid-template-column
place-centent
place-items
grid-auto-flow
以上是容器上可以设置的属性信息, 为了达到更加精细, 可以设置特定单元格的信息, 还可以在项目上去设置单元格的信息.
grid-column-start
grid-column-end
grid-column-start: 列开始的网格线位置; grid-column-end: 列结束的网格线位置; grid-row-start: 行开始的网格线位置; grid-row-end: 行结束的网格线位置;
其中列开始的网格线位置,行开始的网格线位置等等的属性值是具体的数字, 表示网格线条的位置, 当超过当前已有的网格线, 则浏览器会自动生成网格. 此外, 还可以是在grid-template-areas,grid-template-rows,grid-template-columns定义的网格线名称.
列开始的网格线位置,行开始的网格线位置
grid-column是grid-column-start,grid-column-end的简写, grid-row 是是grid-row-start,grid-row-end的简写.
grid-column
grid-row
grid-row-start
grid-row-end
grid-column: <start>/<end>; grid-row: <start>/<end>;
中间以斜杠进行连接, 同时还可以用span 关键字进行表示从开始位置跨域多少个单元格
span
grid-column: 1 / span 2; 等同于 grid-column: 1 / 3; 等同于 grid-column-start: 1 grid-column-start: 3;
指定具体的网格放置的区域
grid-area: a; 或者 grid-area: <row-start> / <column-start> / <row-end> / <column-end>;
也可以是又网格线名称围起来的区域;
justify-self: start | center | end | stretch ; align-self: start | center | end | stretch ;
和项目属性一样, 只是设置在单元格上
CSS Grid 网格布局教程(阮一峰)
A Complete Guide to Grid(by Chris House)
How to Build an Off-Canvas Navigation With CSS Grid(by Ian Yates)
Introduction to the CSS Grid Layout With Examples(by Dogacan Bilgili)
本文github地址html功能强大的Grid网格布局, 如有侵权或其他问题, 请issue留言, 感谢!
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
网格布局在众多布局方法中, 功能强大, 如Bootstrap的栅格化布局, 在浏览器中内置了, 而且突破了12个格子的限制, 还可以定义到每一个单元格的内容排列方式, 功能格外的强大.
开启Grid布局
容器, 就是开启Grid Format Context, 也就是栅格化格式上下文的容器, 所有设置
display:grid;
或者display:inline-grid
属性的元素, 都是一个GFC的容器, 容器的子元素叫项目, 容器的后代元素不能叫项目, 只能叫内容.grid
布局, 默认是block级别的元素, 可以设置成inline-grid
成内联元素.设置容器的单元格
行/列, 也就是row/column, 分别指的是开始布局的x/y轴方向, 行和列的交叉就变成了单元格.
单元格线条
在容器的GFC下, x/y的布局方向交叉, 构成单元格, 而每一个单元格都是由左单元格线, 右单元格线, 上单元格线, 下单元格线构成的.
设置每行/列的单元格的个数或宽度
方法(一)
可以直接指定固定宽度, 也可以百分比数值, 此外, 还可以指定每一行/列的单元格线名称
实际上, 和这2个货长得差不多还有一个叫
grid-template-areas
的属性, 用来定义区域的名称的.
上面则是定义了9个区域的名称情况.可以同名, 但是同名的区域必须是在同一整列或一整行. 定义了区域的名称之后, 可以直接使用
区域名称-start
,区域名称-end
来引用单元格的起始网格线, 结束网格线.方法(二)
指定
fr
关键字,片段
的意思, 其实是一个比例单位, 代表着三列的网格比例为1:1:1, 也可以是小数, 也可以是关键字auto
, 代表自动填充, 也可以一个范围minmax(100px, 1fr);
方法(三)
另外可以利用repeat方法, 第一个参数是循环的次数, 第二个参数是网格的宽度, 如果是
grid-template-columns
的话, 就是网格的高度.此外还有几个关键字,
auto-fill
, 尽可能的填充剩余的宽度/高度, 这常用在某些场景下,比如容器的宽度不固定的情况下, 需要和repeat共用grid-template-rows: repeat(auto-fill, 100px);
设置单元格的排列方向
默认单元格式以row的形式排列,一行结束后在另一行开始排.
设置整体布局
设置整体布局,可以分为2个方向,行/列, 整个容器的在水平反向的对齐方式
justify-content
, 在垂直方向的align-content
.设置单元格的内容居中
类似
table
布局的td元素的text-align
, Grid布局也可以设置单元格内容的居中布局方式.align-items
是设置内容在水平位置对齐的效果justify-items
是设置内容在垂直位置对齐的效果间隙:grid-row-gap/grid-column-gap
间隙, 分为行间隙,
grid-row-gap
, 和列间隙grid-column-gap
, 列之间的间隙, 这个间隙是可以设置的grid-gap
是grid-row-gap
和grid-column-gap
的缩写.自动生成的单元格: grid-auto-rows, grid-auto-columns
浏览器为了渲染特定未知的网格, 会自动的生成填补的网格, 这个时候,如果需要定义自动的网格信息. 可以用
grid-auto-rows
;grid-auto-rows
,grid-auto-columns
和grid-template-rows
,grid-template-colummns
的属性值一样.容器属性小结
以上所有的属性, 都是在容器上定义的, 属于容器属性. 简单的概括就是,
grid-template-column
,grid-template-rows
,place-centent
,justify-content
,align-content
,place-items
,justify-items
,align-items
,grid-gap
,grid-column-gap
,grid-row-gap
grid-auto-flow
grid-auto-rows
,grid-auto-columns
grid-template-areas
项目属性部分
以上是容器上可以设置的属性信息, 为了达到更加精细, 可以设置特定单元格的信息, 还可以在项目上去设置单元格的信息.
设置特定的单元格的位置/大小
grid-column-start
,grid-column-end
grid-column
是grid-column-start
,grid-column-end
的简写,grid-row
是是grid-row-start
,grid-row-end
的简写.中间以斜杠进行连接, 同时还可以用
span
关键字进行表示从开始位置跨域多少个单元格指定某个单元格的位置/大小 grid-area
指定具体的网格放置的区域
也可以是又网格线名称围起来的区域;
指定某个单元的对齐方式: justify-self 和 align-self
和项目属性一样, 只是设置在单元格上
小结
参考
The text was updated successfully, but these errors were encountered: