
由爱拼社举办的拼图大赛进行到最后一关,1 号选手小蓝披荆斩棘成为全场黑马。本关卡需要选手使用 CSS Grid 布局完成拼图页面,但是由于小蓝技术水平有限,拼图的效果没有达到预期。现在邀请你作为协助嘉宾帮助小蓝优化拼图页面的效果。 本题需要在已提供的基础项目中,使用 CSS 让拼图正确显示。
开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:
其中:
├── css
│ └── style.css
├── images
└── index.htmlindex.html 是主页面。images 是图片文件夹。css/style.css 是待补充的 css 文件。在浏览器中预览 index.html 页面效果如下:

请使用
Grid完善css/style.css中的 TODO 代码,使article元素下第二个div在右侧占据 2 列的位置,第 6 个div在左侧占据 2 列的位置,最终实现下图效果。

提示:grid-column: start / end; ,其中 start 对应值为数字,表示网格项的起始位置。end 对应值为数字,表示网格项的结束位置。
css/style.css 文件外的任何内容。/* TODO:待补充代码 在 grid-column 后填空*/
/* 第二个 div */
section div:nth-of-type(2){
grid-column: 2/4; /*待补充代码 */
}
/* 第六个 div */
section div:nth-of-type(6) {
grid-column: 1/3; /*待补充代码 */
}
/* 以下代码无需修改 */
section {
width: 70%;
margin: 0 auto;
line-height: 0;
position: relative;
}
section img {
width: 100%;
}
section article {
position: absolute;
top: 0;
width: 100%;
background: white;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-gap: 20px;
mix-blend-mode: lighten;
}
section div {
background: #000;
height: 14vw;
}<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>爱拼才会赢</title>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<section>
<img src="./images/person.png" alt="">
<article>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</article>
</section>
</body>
</html><!DOCTYPE html> 声明了文档类型为 HTML5,让浏览器以 HTML5 标准来解析页面。<html lang="en"> 定义了 HTML 文档的根元素,并指定语言为英语。<meta charset="UTF-8"> 设置字符编码为 UTF - 8,支持多种语言字符的显示。<meta name="viewport" content="width=device-width, initial-scale=1.0"> 用于响应式设计,使页面在不同设备上能正确缩放显示。<title>爱拼才会赢</title> 设置页面标题,显示在浏览器标签上。<link rel="stylesheet" href="./css/style.css"> 引入外部 CSS 样式表,用于美化页面。<section> 是一个语义化的容器元素,用于组合相关内容。<img src="./images/person.png" alt=""> 在 section 内插入一张图片,src 属性指定图片路径,alt 属性用于图片无法显示时的替代文本。<article> 是一个独立的内容块,这里用于包含拼图块。<div> 元素代表拼图块,目前没有具体内容,仅作为拼图块的占位元素。/* 第二个 div */
section div:nth-of-type(2) {
grid-column: 2/4;
}
/* 第六个 div */
section div:nth-of-type(6) {
grid-column: 1/3;
}
/* 以下代码无需修改 */
section {
width: 70%;
margin: 0 auto;
line-height: 0;
position: relative;
}
section img {
width: 100%;
}
section article {
position: absolute;
top: 0;
width: 100%;
background: white;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-gap: 20px;
mix-blend-mode: lighten;
}
section div {
background: #000;
height: 14vw;
}section div:nth-of-type(2) 选择器选中 section 元素下的第二个 div 元素。grid-column: 2/4; 表示该元素在网格布局中从第 2 列开始,到第 4 列结束,从而在右侧占据 2 列的位置。section div:nth-of-type(6) 选择器选中 section 元素下的第六个 div 元素。grid-column: 1/3; 表示该元素从第 1 列开始,到第 3 列结束,在左侧占据 2 列的位置。section 样式: width: 70%; 设置 section 的宽度为视口宽度的 70%。margin: 0 auto; 使 section 在水平方向上居中显示。line-height: 0; 去除行间距,避免图片和其他元素之间出现间隙。position: relative; 设置相对定位,为内部的绝对定位元素(article)提供定位参考。section img 样式:width: 100%; 使图片宽度充满其父元素 section。section article 样式: position: absolute; 设置绝对定位,使其相对于 section 进行定位。top: 0; 将 article 定位在 section 的顶部。width: 100%; 宽度充满 section。background: white; 设置背景颜色为白色。display: grid; 启用网格布局模式。grid-template-columns: 1fr 1fr 1fr; 将网格容器划分为 3 列,每列宽度相等(1fr 表示一个灵活的分数单位)。grid-gap: 20px; 设置列与列之间的间隙为 20 像素。mix-blend-mode: lighten; 设置混合模式为 lighten,使拼图块与下方图片混合时,根据颜色混合规则产生特殊效果(使拼图块看起来像是覆盖在图片上)。section div 样式: background: #000; 设置背景颜色为黑色,代表拼图块的颜色。height: 14vw; 设置高度为视口宽度的 14%,使拼图块高度随视口宽度变化而等比例变化,保持响应式效果。三、工作流程▶️
section 容器,内部有一张图片和一个包含 7 个 div 元素的 article 容器,这些 div 作为拼图块的占位。<link> 标签引入外部 CSS 样式表,将样式与 HTML 结构关联起来。section 进行整体布局设置,包括宽度、居中显示、行间距和定位方式。同时设置图片宽度充满 section,为后续拼图块的覆盖效果做准备。article 元素启用网格布局,并定义其列结构为 3 列且等宽,设置列间隙,同时通过绝对定位将其覆盖在图片上方,并设置混合模式以实现与图片的融合效果。grid-column 属性,根据题目要求分别对第二个和第六个 div 进行列位置的调整,使其在网格布局中占据特定的列,从而实现拼图块的正确排列效果。div (拼图块)设置黑色背景和相对视口宽度的高度,使其在页面上显示为具有一定大小和颜色的拼图块。