【图片版】学习CSS网格布局(1)

6.3 例15

.item1 { grid-area: 2 / 2 / 3 / 3; }

属性grid-areagrid-row-start, grid-column-start, grid-row-endgrid-column-end的简写形式。

如果四个值都指定,则第一个表示 grid-row-start, 第二个表示 grid-column-start, 第三个表示 grid-row-end ,第四个表示 grid-column-end

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

7 网格项目跨越行列


网格项目默认都占用一行和一列,但可以使用前一节中定位项目的属性来指定项目跨越多行或多列。

7.1 例16

.item1 { grid-column-start: 1; grid-column-end: 4; }

通过grid-column-startgrid-column-end属性值的设置,使该网格项目跨越多列。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

7.2 例17

.item1 { grid-row-start: 1; grid-row-end: 4; }

通过grid-row-startgrid-row-end属性值的设置,使该网格项目跨越多行。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

7.3 例18

.item1 { grid-row: 2 / 5; grid-column: 2 / 4; }

简写属性 grid-rowgrid-column 即能用来定位项目,也能用来使项目跨越多个行列。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

7.4 例19

.item1 { grid-row: 2 / span 3; grid-column: span 2; }

关键字 span 用来指定跨越行或列的数量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

8 网格线命名


当利用属性grid-template-rowsgrid-template-columns定义网格时,可以同时定义网格线的名称。网格线名称可以用于定位网格项目。

8.1 例20

grid { display: grid; grid-template-rows: [row-1-start] 1fr [row-2-start] 1fr [row-2-end]; grid-template-columns: [col-1-start] 1fr [col-2-start] 1fr [col-3-start] 1fr [col-3-end]; }

用属性grid-template-rowsgrid-template-columns定义网格,同时定义网格线名称。

为避免混淆,网格线名称应避免使用规范中的关键字(span等)。

定义网格线名称的方法是要将其放在中括号内([name-of-line]),并要和网格轨道相对应。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8.2 例21

grid { display: grid; grid-template-rows: [row-start row-1-start] 1fr [row-1-end row-2-start] 1fr [row-2-end row-end]; grid-template-columns: [col-start] 1fr [col-2-start] 1fr [col-3-start] 1fr [col-end]; }

可以给同一网格线定义多个名称,方法就是在中括号内用空格将多个名称分开。

每一个网格线名都可以被引用,以用来定位网格项目。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

9 用网格线名定位项目


利用命名的网格线,可以很方便地进行项目定位。

9.1 例22

.item1 { grid-row-start: row-2-start; grid-row-end: row-end; grid-column-start: col-2-start; grid-column-end: col-end; }

引用网格线名称不用加中括号。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

9.2 例23

.item1 { grid-row: row-2-start / row-end; grid-column: col-2-start / col-end; }

简写属性grid-rowgrid-column也可以利用网格线名称来定位项目。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

10 用同名网格线命名和定位项目


函数repeat()可以定义同名网格线。这节省了给每条网格都命名的时间。

10.1 例24

grid { display: grid; grid-template-rows: repeat(3, [row-start] 1fr [row-end]); grid-template-columns: repeat(3, [col-start] 1fr [col-end]); }

函数repeat()可以用来定义同名网格线。 这样多个网格线拥有相同的名字。

同名网格线会被分配一个位置编号,做为其唯一标识。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

10.2 例25

.item1 { grid-row: row-start 2 / row-end 3; grid-column: col-start / col-start 3; }

用同名网格线来定位项目时,应注意在网格线名称和编号之间有一个空格。

本例中,项目1的行定位开始于第2条名称是row-start的网格线,结束于第3条名称是row-end的网格线;列定位开始于第1条名称是col-start的网格线,结束于第3条名称是col-start的网格线。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

11 用网格区域命名和定位项目


如同网格线命名,可以用属性grid-template-areas给网格区域命名。网格区域名称可以用来定位网格项目。

11.1 例26

grid { display: grid; grid-template-areas: “header header” “content sidebar” “footer footer”; grid-template-rows: 150px 1fr 100px; grid-template-columns: 1fr 200px; }

一组区域名称要放在单引号或双引号内,每一个名称之间以空格分隔。

每一组名称定义一行,每一个名称定义一列。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

11.2 例27

header { grid-row-start: header; grid-row-end: header; grid-column-start: header; grid-column-end: header; }

网格区域名称可以用在属性grid-row-start, grid-row-end, grid-column-start, 和 grid-column-end的值中,用来定位项目。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

11.3 例28

footer { grid-row: footer; grid-column: footer; }

网格区域名称也可以用于简写属性grid-rowgrid-column的值中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

11.4 例29

aside { grid-area: sidebar; }

网格区域名称也可以用于简写属性grid-area的值中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

12 隐式网格


隐式网格用来在显式网格之外定位项目。有时在显示网格中没有足够的空间,或者是要在显示网格之外定位项目就要用到隐式网格。这时可以把这些项目放置在隐式网格中。

隐式网格可以通过属性 grid-auto-rows, grid-auto-columns, 和 grid-auto-flow 来定义。

12.1 例30

grid { display : grid; grid-template-rows: 70px; grid-template-columns: repeat(2, 1fr); grid-auto-rows: 140px; }

本例中,只定一个行轨道,因此项目 1 和 2 高 70px 。

第2行轨道有隐式网格自动创建并为项目 3 和 4 分配了空间。 属性grid-auto-rows 定义了隐式网格的行轨道尺寸,即项目3和4的高度是 140px 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

12.2 例31

grid { display : grid; grid-auto-flow: row; }

缺省的网格布局方向是行的方向(row)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

12.3 例32

grid { display : grid; grid-auto-flow: column; }

网格的布局方向可以定义为列的方向(column)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

12.4 例33

grid { display : grid; grid-template-columns: 30px 60px; grid-auto-flow: column; grid-auto-columns: 1fr; }

本例中,我们只定义了两个列轨道的尺寸30px 和 60px。

隐式网格中自动创建其它列并给项目3,4,5分配空间;分配的空间尺寸是通过属性 grid-auto-columns定义的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

13 隐式命名的网格区域


网格线名称可以任意指定,但分配以 -start-end 结尾的名字有额外的益处,这样隐式地创建了具名网格区域,该名称可以用于项目定位。

13.1 例34

grid { display : grid; grid-template-rows: [outer-start] 1fr [inner-start] 1fr [inner-end] 1fr [outer-end]; grid-template-columns: [outer-start] 1fr [inner-start] 1fr [inner-end] 1fr [outer-end]; }

本例中,行和列都有名为inner-startinner-end的网格线,它们隐式地给网格区域分派了名称(inner)。

item1 { grid-area: inner; }

这样我们就能够直接使用网格区域名来定位,而不需要再用网格线来定位项目了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

14 隐式命名的网格线


隐式命名网格线和隐式命名的网格区域的工作原理刚好相反。

14.1 例35

grid { display : grid; grid-template-areas: “header header” “content sidebar” “footer footer”; grid-template-rows: 80px 1fr 40px; grid-template-columns: 1fr 200px; }

定义网格区域时隐式的命名了网格线的名称。这些网格线的名称是基于区域名加上-start-end后缀组成的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

14.2 例36

item1 { grid-row-start: header-start; grid-row-end: content-start; grid-column-start: footer-start; grid-column-end: sidebar-end; }

本例中,header是通过隐式网格线名称进行定位的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

15 层叠网格项目


通过项目定位可以使多个项目层叠在一起,属性z-index可以改变层叠项目的层次。

15.1 例37

.item-1, .item-2 { grid-row-start: 1; grid-column-end: span 2; } .item-1 { grid-column-start: 1; z-index: 1; } .item-2 { grid-column-start: 2 }

本例中,项目1 和 2 行定位开始于第1条行网格线,并跨越两列。

两个项目都是用网格线编号进行定位。项目1起始于第1条列网格线,项目2起始于第2条列网格线,这使得两个项目在第一行中间列发生层叠。

缺省情况下,项目2将层叠于项目1之上;然而,给项目1设置属性z-index: 1就使得项目1层叠于项目2之上。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

15.2 例38

.overlay { grid-row-start: header-start; grid-row-end: content-end; grid-column-start: content-start; grid-column-end: sidebar-start; z-index: 1; }

本例中,利用在 grid-template-areas 定义中的隐式网格线名称,定位了一个网格项目(overlay),并将层叠于上层。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16 网格项目的对齐方式


CSS的 盒模型对齐模块 补充了CSS网格的内容,网格项目可以按行或列的轴线方向实现多种对齐方式。

属性justify-itemsjustify-self 以行轴为参照对齐项目,属性align-itemsalign-self 以列轴为参照对齐项目。

属性justify-itemsalign-items 是网格容器的属性,并支持如下这些值:

  • auto

  • normal

  • start

  • end

  • center

  • stretch

  • baseline

  • first baseline

  • last baseline

16.1 例39

.grid { grid-template-rows: 80px 80px; grid-template-columns: 1fr 1fr; grid-template-areas: “content content” “content content”; } .item { grid-area: content } .grid { justify-items: start }

在行的轴线起点处对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16.2 例40

grid { justify-items: center; }

在行的轴线中点处对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16.3 例41

grid { justify-items: end; }

在行的轴线终点处对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16.4 例42

grid { justify-items: stretch; }

在行的轴线方向延伸并填满整个区域。stretch是缺省值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16.5 例43

grid { align-items: start; }

在列的轴线起点处对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16.6 例44

grid { align-items: center; }

在列的轴线中点处对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16.7 例45

grid { align-items: end; }

在列的轴线终点处对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16.8 例46

grid { align-items: stretch; }

在列的轴线方向延伸并填满整个区域。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

16.9 例47

grid { justify-items: center; align-items: center; }

项目定位于行轴和列轴线的中间位置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

17 网格项目的对齐方式2


项目可以用属性align-self 和 justify-self定义自己的对齐方式,并支持如下这些属性值:

  • auto

  • normal

  • start

  • end

  • center

  • stretch

  • baseline

  • first baseline

  • last baseline

17.1 例48

.item1 { justify-self: start } .item2 { justify-self: center } .item3 { justify-self: end }

属性justify-self 在行的轴线方向定义对齐方式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

17.2 例49

.item1 { align-self: start } .item2 { align-self: center } .item3 { align-self: end }

属性align-self 在列的轴线方向定义对齐方式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

17.3 例50

.item1 { justify-self: center align-self: center }

项目1定位在行的轴线和列的轴线的中间位置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

18 网格轨道的对齐方式


在网格容器中,网格轨道延轴线方向有多种对齐方式。

属性align-content用于定义网格轨道延着行的轴线的对齐方式,而属性justify-content用于定义网格轨道沿着列的轴线的对齐方式。并分别支持如下属性:

  • normal

  • start

  • end

  • center

  • stretch

  • space-around

  • space-between

  • space-evenly

  • baseline

  • first baseline

  • last baseline

18.1 例51

.grid { width: 100%; height: 300px; grid-template-columns: repeat(4, 45px); grid-template-rows: repeat(4, 45px); grid-gap: 0.5em; justify-content: start; }

列的轨道在行的轴线起点处对齐。start 是缺省值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

18.2 例52

.grid { justify-content: end; }

列的轨道在行的轴线终点处对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

18.3 例53

.grid { justify-content: center; }

列的轨道在行的轴线中间处对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

18.4 例54

.grid { justify-content: space-around; }

在每一列的两侧平均分配额外空间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

18.5 例55

.grid { justify-content: space-between; }

在列与列之间平均分配额外的空间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

演示程序

18.6 例56

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

[外链图片转存中…(img-Vrts1Wzh-1715046359314)]

演示程序

18.3 例53

.grid { justify-content: center; }

列的轨道在行的轴线中间处对齐。

[外链图片转存中…(img-AvWZRgpn-1715046359314)]

演示程序

18.4 例54

.grid { justify-content: space-around; }

在每一列的两侧平均分配额外空间。

[外链图片转存中…(img-tD2jdQK8-1715046359314)]

演示程序

18.5 例55

.grid { justify-content: space-between; }

在列与列之间平均分配额外的空间。

[外链图片转存中…(img-hbihmjVU-1715046359315)]

演示程序

18.6 例56

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-wuISYGbE-1715046359315)]

[外链图片转存中…(img-7CLtedMU-1715046359315)]

[外链图片转存中…(img-wyU3KaGy-1715046359315)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值