我有一个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行的样子:
列间距始终正确。
答案 0 :(得分:0)
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
::before,
::after {
box-sizing: inherit;
}
.thumbnail-grid {
display: grid;
grid-template-columns: 25% 25% 25% 25%;
grid-row-gap: 5px;
grid-column-gap: 5px;
margin: 8px;
background: lightblue;
}
.thumbnail-grid-cell {
width: 100px;
height: 100px;
border: 1px solid black;
position: relative;
}
<div class="thumbnail-container">
<div class="thumbnail-grid">
<div class="thumbnail-grid-cell"></div>
<div class="thumbnail-grid-cell"></div>
</div>
</div>
<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>
</div>
</div>
<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>
<div class="thumbnail-grid-cell"></div>
</div>
</div>
答案 1 :(得分:0)
这里很难找到解决方案,因为没有足够的数据来重现问题。但这可能是:
由于您没有明确定义网格中的任何行,因此会隐式添加行,并且默认情况下将其高度设置为grid-auto-rows: auto
。
auto
和1fr
值将延伸以占据容器中的空白区域。
因此,您在图片#1中看到的差距是而不是行之间的差距。
行之间的实际差距为5px,由grid-row-gap
规则设置。
行之间存在间隙,因为网格项未填充行的高度。
这样看:
height: 250px
。height: 100px
。如果有三行,则需要此可用空间,并且行将关闭。
以下是三种可能的解决方案:
auto
fr
或grid-auto-rows: min-content
height: 250px
;这会将容器的高度设置为内容的高度(即height: auto
)align-content: start
添加到容器有关详细信息,请参阅以下帖子: