html - 行间距比预期宽
问题描述
我有一个 4 个单元格宽的网格布局(显示:网格)。当只有两行时,它们之间的间距比它应该的要大。如果有三行或更多行,一切看起来都应该如此。这基本上是 html 的样子:
<div class="thumbnail-container">
<div class="thumbnail-grid">
<div class="thumbnail-grid-cell"></div>
<div class="thumbnail-grid-cell"></div>
<div class="thumbnail-grid-cell"></div>
<!-- and so on... -->
</div>
</div>
这些是我的CSS规则:
.thumbnail-container {
overflow: scroll;
}
.thumbnail-grid {
display: grid;
grid-template-columns: auto auto auto auto;
grid-row-gap: 5px;
grid-column-gap: 5px;
height: 250px;
margin: 8px;
}
.thumbnail-grid-cell {
width: 100px;
height: 100px;
border: 1px solid black;
position: relative;
}
只是为了澄清:
这是 2 行的样子:
这是 3 行的样子:
列间距始终正确。
解决方案
在这里很难找到解决方案,因为没有足够的数据来重现问题。但它可能是这样的:
因为您没有在网格中明确定义任何行,所以行被隐式添加,并且它们的高度默认设置为grid-auto-rows: auto
.
auto
和1fr
值将拉伸以占据容器中的空白空间。
因此,您在图像#1 中看到的间隙不是行之间的间隙。
行之间的实际间隙为 5px,由您的grid-row-gap
规则设置。
由于网格项未填充行的高度,因此行之间会出现间隙。
这样看:
- 有两排。
- 容器设置为
height: 250px
. - 行均分高度,因此每行的高度均为 122.5px(减去 5px 网格行间距后)。
- 但这些行内的项目设置为
height: 100px
. - 所以项目的底部边缘和行的底部边缘之间有 22.5px 的间隙。
当你有三行时,需要这个可用空间,并且行关闭。
以下是三种可能的解决方案:
- 而不是
auto
orfr
,尝试grid-auto-rows: min-content
- 取下
height: 250px
容器上的;这将容器的高度设置为内容的高度(即height: auto
) - 添加
align-content: start
到容器中
有关更多详细信息,请参阅这些帖子:
推荐阅读
- scala - 为什么 ((_: Int, _: Int) => _ / _) 当 ((_: Int) / (_: Int)) 编译时不编译?
- c - 有没有办法在同一个循环中渲染我的 Termbox 游戏和处理键盘事件?
- http - HTTP Auth 与复杂 URL
- android-studio - 为什么打开flutter项目时Android Studio中缺少LogCat和AVD Manager
- deserialization - 如何使用 Spring Cloud Stream 编写通用反序列化器?(Batch-Consumer)
- google-apps-script - 是否可以使用 Google Apps 脚本将文档另存为 epub?
- codenameone - 调查 Codename One iOS 应用程序上的 Java.Lang.NullPointerException
- android - 应用程序意外关闭 - Kotlin
- html - HTML 数据列表数组
- javascript - 如何在 ReactJS 中使用 clearInteval 让计时器自行清除?