P粉3047046532023-08-21 13:34:12
之前的答案非常好,但我还想提到,对于网格来说,也有一种固定布局的等效方法,你只需要将你的轨道大小写为minmax(0, 1fr)
而不是1fr
。
P粉8180888802023-08-21 00:00:55
默认情况下,网格项的大小不能小于其内容的大小。
网格项的初始大小为min-width: auto
和min-height: auto
。
您可以通过将网格项设置为min-width: 0
,min-height: 0
或overflow
(除visible
之外的任何值)来覆盖此行为。
来自规范:
这是一个更详细的解释,涵盖了弹性项,但也适用于网格项:
这篇文章还涵盖了嵌套容器的潜在问题和主要浏览器之间的已知渲染差异。
要修复您的布局,请对您的代码进行以下调整:
.month-grid { display: grid; grid-template: repeat(6, 1fr) / repeat(7, 1fr); background: #fff; grid-gap: 2px; min-height: 0; /* 新增 */ min-width: 0; /* 新增;Firefox需要 */ } .day-item { padding: 10px; background: #DFE7E7; overflow: hidden; /* 新增 */ min-width: 0; /* 新增;Firefox需要 */ }
1fr
与minmax(0, 1fr)
上面的解决方案是在网格项级别上操作的。对于容器级别的解决方案,请参阅以下文章: