1 回答
TA贡献1818条经验 获得超11个赞
更新
我删除了800px/600px
明确的高度,网格默认填充整个屏幕。
为简单起见,我拉伸了所有图像以填充整个网格单元。需要注意的是grid-row
和grid-column
值是如何运作的。通过指定每个网格单元应跨越多远,高度和宽度自然分布在整个网格中。对于这个例子,我将网格设置为800px
宽和600px
高。
我使用fr
网格规则的单位,因此它们将根据与其他孩子的关系相对分布。下面一行告诉浏览器将网格设置为 8 个单位长。第一列将是总宽度的 3/8(800px
在本例中)。第二列看起来比其他列窄,所以我做到了2fr
。
grid-template-columns: 3fr 2fr 3fr;
-1
当您在网格子测量中看到 a 时,本质上意味着转到末尾。例如,以下代码片段表示从第 3 行开始并跨越到末尾,无论有多少行。
grid-row: 3 / -1;
演示
.wrapper {
display: grid;
grid-template-columns: 3fr 2fr 3fr;
grid-template-rows: repeat(8, 1fr);
padding: 1em;
grid-gap: 0.5em;
background-color: #eee;
}
.wrapper>div {
position: relative;
}
.wrapper>div::after {
position: absolute;
transform: translate(-50%, -50%);
top: 50%;
left: 50%;
background-color: #333;
color: white;
padding: .5rem;
}
.bed {
grid-column: 1;
grid-row: 1 / 3;
}
.bed::after {
content: 'BED';
}
.pillow {
grid-column: 2;
grid-row: 1 / 3;
}
.pillow::after {
content: 'PILLOW';
}
.kitchen {
grid-column: 3;
grid-row: 2 / 5;
}
.kitchen::after {
content: 'KITCHEN';
}
.living-room {
grid-column: 1 / 3;
grid-row: 3 / -1;
}
.living-room::after {
content: 'LIVING ROOM';
}
.sofa {
grid-column-start: 3;
grid-row: 5 / -1;
}
.sofa::after {
content: 'SOFA';
}
img {
width: 100%;
height: 100%;
}
<div class="wrapper">
<div class="bed"><img src="http://placehold.it/300x300" alt=""></div>
<div class="pillow"><img src="http://placehold.it/300x300" alt=""></div>
<div class="kitchen"><img src="http://placehold.it/300x300" alt=""></div>
<div class="living-room"><img src="http://placehold.it/300x300" alt=""></div>
<div class="sofa"><img src="http://placehold.it/300x300" alt=""></div>
</div>
- 1 回答
- 0 关注
- 66 浏览
添加回答
举报