【Grid布局】让你5分钟拿下
内容Grid 布局基本介绍Grid 布局属性展示1. Grid 布局Grid 布局(网格布局)是最强大的 CSS 布局方案。它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。此图使用其他布局做起来着实磨人,但这正是 Grid 布局的杰作Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定
内容
Grid 布局基本介绍
Grid 布局属性展示
1. Grid 布局
Grid 布局(网格布局)是最强大的 CSS 布局方案。它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。

此图使用其他布局做起来着实磨人,但这正是 Grid 布局的杰作
Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。了解 Flex布局:Flex布局详解。
Grid 布局图解:

2. 属性介绍
同很多布局一样,Grid 布局也分为 容器(container) + 项目(item);所以属性就存在:容器属性 + 项目属性。值得庆幸的是:所有的列属性均有行属性与之对应且属性值一致
2.1 容器属性

①:grid-template-columns 控制列模板

display: grid;
grid-template-columns: 100px 100px 100px;
/*表示四行三列,且每个盒子都是100 * 100*/
grid-template-rows: 100px 100px 100px 100px;
常见属性值:
-
repeat(x,y)x 表示重复的此数,y表示重复的值。 (grid-template-columns: 100px 100px 100px;=> grid-template-columns: repeat(3, 100px)) -
repeat(auto-fill,100px)单元格大小固定,但容器大小不确定,此属性会自动填充
-
repeat(4,1fr)fr关键字表示网格布局的比例关系。表示宽度平分为四份;等价于 1fr,1fr,1fr,1fr
-
minmax()函数产生一个长度范围,表示长度就在这个范围之中,他接受两个参数,分别是最小值、最大值(此处表示两列,一列占宽一半;一列最小占 150px,最大占一份) -
auto表示由浏览器自己决定: grid-template-columns: 100px auto 100px; (表示两边100px,中间自适应)
②:grid-template-areas 把容器 任意划分为不同的区域。
grid-template-areas: 'a a a' 'b b b' 'c c c';
注意:此属性要配合项目属性一起使用,具体见项目属性
③:column-gap、row-gap、gap 控制 item(项目)之间的相互距离;gap 为 column-gap、row-gap 的复合属性
/*column-gap: 20px;
row-gap: 20px;*/
gap: 20px;

④:justify-items、align-items 、place-items 设置 单元格内容 水平和垂直对齐方式;place-items 为 复合属性(属性值:start,end,center,strech)
/* justify-items: center;
align-items: center; */
place-items: center;

注意:它控制的是单元格内容
⑤:justify-content、align-content 设置 整个内容区域 水平垂直对齐方式;(属性值:start,end,center,strech,space-around,space-between,space-evenly)
justify-content: center;
align-content: center;

注意:此处控制的是整个内容区域
⑥:grid-auto-columns、grid-auto-rows 设置 多出来的项目 的宽和高
示例:设置了 3*3 的项目,但实际有 10 个项目,此时属性就用来设置多出来的项目
grid-template-columns: repeat(3, 100px);
grid-template-rows: 100px 100px 100px;
grid-auto-rows: 150px;

2.2 项目属性

了解项目属性之前就要对网格线做下了解,网格线让 Grid 布局更加强大
注意:网格线数永远比 item 项大 1;即 3*3 项目就有 4*4 的网格线与之对应
①:grid-column-start、grid-column-end、grid-row-start、grid-row-end 、grid-column(列复合属性) 用来设置 item 的具体位置 依据在哪跟网格线
示例:
/*grid-column-start: 1;
grid-column-end: 3;*/
grid-column: 1/3;
表示 item 在一行上所占空间为:从第一条线->第三条线

注意:使用此属性时,请确保有指定范围的网格线
②:grid-column-start:span 3 往右边扩三格 === grid-column-end:span 3 往左边扩三格

③:grid-area 设置项目占的区域(区域由容器任意分配)
/*容器属性*/
grid-template-areas: 'a a a' 'b b b' 'c c c' 'd d d';
/*项目属性*/
grid-area: b;
表示此项目把 b 区域全部占完

③:grid-area 可对 grid-column-start、grid-column-end、grid-row-start、grid-row-end 进行简写
/* grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 3; */
grid-area: 1/1/3/3;
注意:注意对应关系为:先 start 后 end

注意:第 10 个项目拉伸的原因是,我们在开始时就设置的是 3 * 4 的项目,多出的自适应
④:justify-self、align-content、place-self(复合写法) 设置 单元格内容 水平垂直对齐方式,跟 justify-items 用法完全一致,但只作用于单个项目。
/* justify-self: center;
align-content: center; */
place-self: center;

OVER
更多推荐



所有评论(0)