TL; DR:table-layout: fixed CSS网格有什么类似的东西吗?
table-layout: fixed
我试图用几个月的大4x3网格创建年视图日历,而白天则嵌套7x6网格。
日历应填满页面,因此Year网格容器的宽度和高度分别为100%。
.year-grid { width: 100%; height: 100%; display: grid; grid-template: repeat(3, 1fr) / repeat(4, 1fr); } .month-grid { display: grid; grid-template: repeat(6, 1fr) / repeat(7, 1fr); }
为简单起见,该笔中的每个月都有31天,从星期一开始。
我还选择了一个小得离谱的字体来演示该问题:
网格项(=日单元格)非常简洁,因为页面上有数百个。当日期数字标签过大(使用左上角的按钮随意使用笔中的字体大小)时,网格将逐渐变大并超过页面的正文大小。
有什么办法可以防止这种行为?
我最初宣布年份网格的宽度和高度为100%,所以这可能是起点,但是我找不到任何与网格相关的CSS属性都可以满足这一需求。
免责声明: 我知道有很简单的方法可以设置日历的样式,而无需使用CSS网格布局。但是,这个问题更多地是关于该主题的常识而不是解决具体示例。
默认情况下,网格项目不能小于其内容的大小。
网格项目的初始大小为min-width: auto和min-height: auto。
min-width: auto
min-height: auto
你可以通过设置网格项目覆盖这种行为min-width: 0,min-height: 0或overflow比其它任何值visible。
min-width: 0
min-height: 0
overflow
visible
从规格:
6.6。 网格项目的自动最小大小 为网格项目,该规范定义了提供更合理的默认最小大小auto的值min-width/ min- height在指定的轴的自动最小尺寸也适用于它的网格项目overflow是visible。(效果类似于对弹性物品施加的自动最小尺寸。)
6.6。 网格项目的自动最小大小
为网格项目,该规范定义了提供更合理的默认最小大小auto的值min-width/ min- height在指定的轴的自动最小尺寸也适用于它的网格项目overflow是visible。(效果类似于对弹性物品施加的自动最小尺寸。)
auto
min-width
min- height
这是有关弹性项目的更详细说明,但它也适用于网格项目:
这篇文章还介绍了 嵌套容器的 潜在问题 以及主要浏览器之间 已知的 渲染差异 。
要修复您的布局,请对您的代码进行以下调整:
.month-grid { display: grid; grid-template: repeat(6, 1fr) / repeat(7, 1fr); background: #fff; grid-gap: 2px; min-height: 0; /* NEW */ min-width: 0; /* NEW; needed for Firefox */ } .day-item { padding: 10px; background: #DFE7E7; overflow: hidden; /* NEW */ min-width: 0; /* NEW; needed for Firefox */ }