【发布时间】:2020-05-28 07:54:11
【问题描述】:
我有一个包含四个表单的页面。每个表单的布局都是使用以下 CSS 网格配置定义的,该配置在所有表单之间共享:
.base-grid-wrapper {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-row-gap: 1em;
grid-column-gap: 1em;
width: 75%;
}
自从 Chrome 80 发布以来,这些表单中的第一个的样式已经(某种程度上)被打破了。 grid-template-columns 的计算值是不一致的,但仅适用于四种形式中的第一种。对于以下三种形式——它们使用相同的基本网格定义——网格的列是统一大小的,这是我在使用 repeat(12, 1fr) 时所期望的。在 Chrome 80 之前,情况并非如此:所有表单的网格都有统一大小的列。
在其他浏览器(Safari 和 Firefox)中,列按预期呈现。 Chrome 80 中是否有一些变化会导致这种情况?搜索 Chrome 更新日志,我似乎找不到任何相关内容。
我尝试查看是否有任何范围更广的 CSS 规则可能导致此问题,但我找不到任何东西。我承认我不是最高级的 CSS 用户,所以我肯定会错误地配置网格,或者其他什么,但是看看下面链接的 Stackblitz 看看是否是这种情况。
我看到了其他几个类似的 Stackoverflow 问题,但似乎没有一个完全符合我所看到的问题:
CSS grid behaviour different in Chrome and Firefox
--> 可能与我的问题最相似,但没有任何相关的解决方案,但确实有问题的确认
Has anybody faced issue working with Chrome 80 and CSS Grid
--> 类似于我的问题,但它没有一个很好的问题示例,因此它没有任何有用的响应
Why does Chrome 80 cause this grid-template-rows: auto problem
--> 配置与我的情况非常不同,因此与我所看到的内容无关
不管怎样,这是一个使用 Angular Material 的 Angular 8 应用程序,但我很确定这不是问题的根源,尤其是考虑到它在其他浏览器中的工作原理。
这是一个复制问题的 Stackblitz(确保在 Chrome 80+ 中打开):editable & (inspectable) hosted app。
这里还有一些截图:
第一种形式
Chrome Devtools - grid outline
Firefox Devtools - grid outline
Chrome Devtools - non-uniformly-computed grid column widths
后期形式,使用相同的基本网格定义
【问题讨论】:
-
改用
repeat(12, minmax(0,1fr))来解决问题,但我不知道为什么 -
多么好的研究和书面问题,作为平台的新成员,同样如此。致敬,欢迎来到 SO!
-
@TemaniAfif 完全有效!这是一个多么奇怪的解决方案……谢谢!
-
@IngoBürk 我在 SO 上潜伏多年,所以即使直到今天我还没有帐户,我还是尽力提出了一个有价值的问题。感谢您的补充!
-
这并不奇怪,这是合乎逻辑的,但我缺乏所有细节来解释它为什么有效,尤其是在以前的版本中并非如此。如果我找到原因会添加答案
标签: html css angular angular-material css-grid