Css布局 - Grid 布局

139 阅读3分钟

Grid 布局号称是最强大的布局方案,他将网页划分为一个个网格,可以任意组合不通的网格。

基本概念

容器 :container 采用网格布局的区域
项目 :item 容器内采用网格定位的子元素
行   :row 水平区域
列   :column 垂直区域

单元格:cell 行和列的交叉区域称为单元格,正常情况 m 行 和n 列 会产生 m * n 个单元格
网格线:grid line 水平网格线划分出 行,垂直网格线划分出列;

容器属性:

`displaygrid / inline-gird ;`

制定一个容器使用网格布局;
设置后 grid 布局后,item 的 float, dislay:inline-block;display:table-cell, valtical-align,和column-* 都将失效;

gird-template 是下面的简写

grid-template-columns: 定义每一列的宽 可以使用绝对单位,百分比等
grid-template-rows :定义每一行的高

关键字:

repeat() : 重复的次数,重复的值 eg. repeat(3,100px)

auto-fill :自动填充 eg. gird-template-columns: repeat(auto-fill,100px), 按100px 自动去填充,直到不能放置更多;

fr: fraction 的缩写,意为片段, 如果两列的宽度为 1rf , 2fr 就代表后者是前者的2倍;

可以和绝对单位组合使用,除去绝对单位的部分,按 fr 去分配,eg. grid-template-columns: 150px 1fr 2fr;

minmax(min,max) :产生一个长度范围, 接收mix,max 两个参数

auto: 表示由浏览器自己决定

grid-gap: 设置间距

grid-row-gap: 设置行间距

grid-cloumn-gap:设置列间距

grid-template-areas: 用于标记区域

eg. grid-template-areas: "haeder header header" "sidebar content content" "footer footer footer";

grid-auto-flow: 制定子元素放置顺序 默认 row “先行后列” 从左到右依次;

row: 默认值; 从左到右

column: 从上到下

row dense : 先行后列

column dense: 先列后行

place-items: 是下面的简写,如果只有一个值,则认为第二个值与第一个值相同;

justify-items:start | end | center | stetch; 设置单元格内容的水平位置(左,中,右); stetch:默认值; 拉伸占满整个宽度

algn-items: start | end | center | stetch; 设置单元格内容的垂直位置(上,中,下); stetch:默认值; 拉伸占满整个高度

place-content: 是下面的简写;

justify-content: 设置 整个内容区域在容器的水平位置(左,中,右)

align-content: 设置整个内容区域在容器的垂直位置(上,中,下)

属性值有:

start: 对齐容器的起始边框

center:容器内部剧中

end:对齐容器的结束边框

stretch:项目大小没有指定时,拉伸占据整个网格容器

space-around: 每两个项目两侧间隔相等;距离容器有相等的间隔

space-between:项目与项目的间隔相等;距离容器没有间隔

space-evevnly:项目距离项目距离容器的间隔都相等;

项目属性:

grid-column-start,
grid-column-end,
grid-row-start,
grid-row-end,

用来指定项目(item)的位置,具体方法是指定项目的四个边框分别定位在那个网格线;设置横跨,和纵跨;

例如:

`.item1{

    grid-cloumn-start:1

    grid-cloumn-end: span 2,// 占据2个单元格

}`

grid-column: / 简写

grid-row: / 简写

grid-area: 属性指定item 放在哪一个区域。与grid-template-areas 结合使用 还可以用作:grid-row-start,grid-row-end,grid-column-start,grid-column-end 的简写

grid-area: / / /

place-self: 的简写,如果只有一个值,代表第二个值等于第一个值;

justify-self: 设置单元格内容的水平位置(左,中,右)

align-self: 设置单元格的垂直位置(上,中,下)

属性值:start, center, end , stretch 默认值,占满单元格的整个宽/高度

参考

CSS Grid 网格布局教程: www.ruanyifeng.com/blog/2019/0…

B站视频:【15分钟学会 CSS grid 栅格布局-哔哩哔哩】b23.tv/SZBuTOW