css区域顺序,CSS-网格布局

简介

Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。

采用网格布局的区域,称为"容器"(container)。容器内部采用网格定位的子元素,称为"项目"(item)。项目只能是容器的顶层子元素,不包含项目的子元素。Grid 布局只对项目生效。Grid 布局的属性分成两类,一类定义在容器上面,称为容器属性;另一类定义在项目上面,称为项目属性。

容器里面的水平区域称为"行"(row),垂直区域称为"列"(column)。行和列的交叉区域,称为"单元格"(cell)。划分网格的线,称为"网格线"(grid line)。

容器属性

display

display: grid 指定一个容器内部采用网格布局,块级元素

display: inline-grid 指定一个容器内部采用网格布局,行内元素

容器设为网格布局以后,子元素(项目)的 float、display: inline-block、display: table-cell、vertical-align 和 column-* 等设置都将失效。

大小

grid-template-columns 属性设置每一列的列宽

grid-template-rows 属性设置每一行的行高

grid-auto-columns 属性设置浏览器自动创建的多余网格的列宽

grid-auto-rows 属性设置浏览器自动创建的多余网格的行高

有时候,一些项目的指定位置,在现有网格的外部。这时,浏览器会自动生成多余的网格,以便放置项目。如果不指定 grid-auto-columns 和 grid-auto-rows 这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高。

(1) 绝对单位或百分比

.container {

display: grid;

grid-template-columns: 100px 100px 100px;

grid-template-rows: 33.33% 33.33% 33.33%;

}

(2) repeat()

.container {

display: grid;

grid-template-columns: repeat(3, 33.33%);

grid-template-rows: repeat(3, 100px 20px 80px);

}

(3) fr

表示比例关系,可以与绝对长度的单位结合使用

.container {

display: grid;

grid-template-columns: 100px 1fr 2fr;

}

(4) minmax()

表示长度就在这个范围之中

.container {

display: grid;

grid-template-columns: 1fr 1fr minmax(100px, 1fr);

}

(5) auto

表示由浏览器自己决定长度

.container {

display: grid;

grid-template-columns: 100px auto 100px;

}

(6) auto-fit

限制单元格的最小宽度,如果容器宽度足够就平均分配剩余空间给每个子元素

.container {

display: grid;

grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));

}

(7) auto-fill

限制单元格的最小宽度,如果容器宽度足够保留剩余空间,不进行分配

.container {

display: grid;

grid-template-columns: repeat(auto-fill, minmax(50px, 1fr));

}

e0c8dceecfe5

auto-fit VS. auto-fill(转)

(8) 网格线名称

使用方括号,指定每一根网格线的名字,同一根线可以有多个名字

.container {

display: grid;

grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4 right-line];

grid-template-rows: [r1] 100px [r2] 100px [r3] auto [r4 bottom-line];

}

间距

grid-column-gap 属性设置列间距

grid-row-gap 属性设置行间距

grid-gap: 合并简写形式

.container {

display: grid;

grid-row-gap: 20px;

grid-column-gap: 20px;

grid-gap: 20px;

}

区域

grid-template-areas 指定"区域"(area),一个区域由单个或多个单元格组成,如果某些区域不需要利用,则使用"点"(.),每个区域的起始网格线,会自动命名为 区域名-start,终止网格线自动命名为 区域名-end

.area {

display: grid;

width: calc(5 * 60px);

height: calc(5 * 60px);

background: white;

grid-template-rows: repeat(5, 60px);

grid-template-columns: repeat(5, 60px);

grid-template-areas: ". g g g . " "o_ . . . . " "o . e e . " "o . . . l " ". g_ g_ g_ . ";

}

.g {

grid-area: g;

background: #ea4335;

}

.o_ {

grid-area: o_;

background: #ff9800;

}

.o {

grid-area: o;

background: #fbbc05;

}

.g_ {

grid-area: g_;

background: #34a853;

}

.l {

grid-area: l;

background: #00bcd4;

}

.e {

grid-area: e;

background: #4285f4;

}

.x {

grid-area: x;

background: #9e9e9e;

}

e0c8dceecfe5

area 效果图(转)

顺序

grid-auto-flow 默认值是 row,即"先行后列",也可以将它设成 column,表示"先列后行";row dense 表示"先行后列并且尽可能紧密填满",column dense 表示"先列后行并且尽量填满空格"

容器对齐

justify-content 属性是整个内容区域在容器里面的水平位置(左中右)

align-content 属性是整个内容区域的垂直位置(上中下)

place-content: 合并简写形式

.container {

justify-content: start | end | center | stretch | space-around | space-between | space-evenly;

align-content: start | end | center | stretch | space-around | space-between | space-evenly;

}

项目对齐

justify-items 属性设置单元格内容的水平位置(左中右)

align-items 属性设置单元格内容的垂直位置(上中下)

place-items: 合并简写形式

.container {

justify-items: start | end | center | stretch(默认);

align-items: start | end | center | stretch(默认);

}

合并简写

grid-template 属性是 grid-template-columns、grid-template-rows 和 grid-template-areas 的合并简写形式

grid 属性是 grid-template-rows、grid-template-columns、grid-template-areas、grid-auto-rows、grid-auto-columns 和 grid-auto-flow 的合并简写形式

项目属性

位置

grid-column-start 属性设置项目左边框所在的垂直网格线,值为数字或网格线的名字

grid-column-end 属性设置项目右边框所在的垂直网格线,值为数字或网格线的名字

grid-row-start 属性设置项目上边框所在的水平网格线,值为数字或网格线的名字

grid-row-end 属性设置项目下边框所在的水平网格线,值为数字或网格线的名字

上面四个属性的值可以为数字、网格线的名字,也可以使用 span 关键字,表示"跨越",即左右边框(上下边框)之间跨越多少个网格。使用这四个属性,如果产生了项目的重叠,则使用 z-index 属性指定项目的重叠顺序。

grid-column: / 属性是 grid-column-start 和 grid-column-end 的合并简写形式

grid-row: / 属性是 grid-row-start 和 grid-row-end 的合并简写形式

grid-area 属性指定项目放在哪一个区域,值可为区域名称或 / / / 的合并简写形式

对齐

justify-self 属性设置单个单元格内容的水平位置(左中右)

align-self 属性设置单个单元格内容的垂直位置(上中下)

place-self: 合并简写形式

.item {

justify-self: start | end | center | stretch(默认);

align-self: start | end | center | stretch(默认);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值