web前端入门到实战:CSS 网格布局:网格线

本系列第一篇讲到如何创建网格容器,以及在容器元素上能够使用的属性。网格格式化上下文一旦创建,你也就有了网格线了。有了网格线,你就能在网格项目上添加属性,对项目做定位(place items)了。

读完本篇文章,你将学到:

  • 定位属性:grid-column-startgrid-column-endgrid-row-startgrid-row-end 以及对应的简写属性 grid-columngrid-row
  • 如何使用行号(line number)设置 grid-area 属性。
  • 如何根据命名网格线(line name)定位项目。
  • 在定位项目时,显式网格和隐式网格上的表现有何不同。
  • 使用 span 关键字,再讲一点福利内容 subgrid。
  • 当混合使用自动布局(auto-placed)和确定布局(placed)定位项目时,需要注意些什么。

网格线定位

在网格中定位一个项目时,需要先设置它从哪根线开始,到哪儿根线结束。举个例子,我要在一个 5x5 的网格中定位一个项目,让它占据第二列和第三列,第一行到第三行。我会使用下面的 CSS 代码(注意,这里使用的是网格线,而非网格轨道)。

专门建立的学习Q-q-u-n: 767273102 ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习技巧
(从零基础开始到WEB前端项目实战教程,学习工具,全栈开发学习路线以及规划)
.item {
  grid-column-start: 2;
  grid-column-end: 4;
  grid-row-start: 1;
  grid-row-end: 4;
}

上面的代码还可以简写为以下形式:斜线之前表示起始线(start line),斜线之后表示终止线(end line)。

.item {
  grid-column: 2 / 4;
  grid-row: 1 / 4;
}

效果:

注意,虽然 .item 的内容很少,但还是占满了整个定位区域。这是因为项目上的对齐属性 align-selfjustify-self 的默认值为 stretch

如果项目只需跨越一个轨道,那么可以忽略设置终止线,因为项目默认就跨域一个轨道。举个例子,设置一个只占据第二列的项目。之前会这么写:

.item {
  grid-column: 2 / 3;
}

其实可以简写成这样的:

.item {
  grid-column: 2;
}

grid-area 属性定位

我们还能用 grid-area 属性定位项目。下一篇文章会全面讲它的用法,不过现在我们只讲使用行号来设置它的方式:

.item {
  grid-area: 1 / 2 / 4 / 4;
}

grid-area 属性行号的设置顺序是这样的:grid-row-startgrid-column-startgrid-row-endgrid-column-end。如果你是在水平、从左到右的语言环境下开发的(比如英语),那么这几个分别对应的方向是 topleftbottomright——跟设置 margin 的方向是相反的——逆时针。

这种设置网格线的方式是为了能适配不同的书写模式(下面会介绍)——先设置起始端,在设置结束端,这与代表物理方向的 topleft… 是不同的。当然,上面这种设置项目位置的方式我不会用,还是会使用 grid-columngrid-row 这两个简写属性,因为它们的可读性更高。

显式网格中的网格线

在一个网格容器中,使用 grid-template-columnsgrid-template-rows 设置的那部分网格区域称为 显式网格。在定义显式区域的同时,还会定义网格线。

这些网格线会编号,起始值是 1,在行内和块方向两个维度上编号。对水平书写模式、从左向右排版的语言来说:行内方向(inline d

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值