【发布时间】:2020-02-28 22:57:54
【问题描述】:
如果我为grid-gap 设置一个变量值,例如10%,则父级(<div id="grid">) 的padding-bottom 开始在子级(<div class="grid-item">) 内部流动。为什么会这样?如何防止这种行为?
这是一个最小的例子:
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
#grid {
padding-bottom: 100px;
display: grid;
grid-gap: 10%;
grid-template-columns: 100px;
}
.grid-item img {
width: 100%;
}
<div id="grid">
<div class="grid-item"><img src="https://cdn.sstatic.net/Img/teams/overview/secure.png?v=03c691959884">
<h3>Stack Overflow</h3>
</div>
<div class="grid-item"><img src="https://cdn.sstatic.net/Img/teams/overview/secure.png?v=03c691959884">
<h3>Stack Overflow</h3>
</div>
</div>
您可以使用开发工具检查网格父级 (<div id="grid">) 并查看填充或查看此屏幕截图以查看问题(填充(绿色)侵犯网格元素的空间(虚线)框)):
【问题讨论】:
-
grid-gap:10vw 或 10vh 可能会像您预期的 10% 那样工作?没有填充,我可以在这里看到
-
@G-Cyr 为了清晰起见,我添加了一个屏幕截图。如果可能,我想使用 10%。
-
好的,使用
grid-gap: 10vh 10vw;你应该得到预期的结果,而不会从浏览器中计算错误。这是一个具有两个值的演示。 % 和 vh/vw 单位 codepen.io/gc-nomade/pen/ZEEvZEL -
@G-Cyr 我知道我可以通过不使用 %.我仍然想了解这个问题 - 这是一个错误吗?
-
@G-Cyr 并不是一个真正的错误,但这是由于百分比值的计算方式。如您所知,我们需要一个参考,并且对于间隙,它的高度是自动的,因此我们首先找到没有间隙的高度,然后我们计算间隙并将间隙添加到先前的高度(我们停在这里或者我们将有一个无限循环)-->我们有一个溢出