css - 当容器被赋予最大尺寸时,为什么灵活网格会失去灵活性?
问题描述
我有一个网格容器,它生成一个包含尽可能多的300px
列的网格。它也是一个弹性项目,flex: 1
用于填充其父项。
请注意,弹性项目的最小尺寸min-content
默认为 ,0
不像流布局中那样。这会产生循环依赖,因为容器的最小大小取决于网格的大小,而网格的大小取决于容器的大小。
然而,这似乎并不重要,因为灵活的网格列很好地回流。至少在我设置最大尺寸之前。一旦我设置了最大尺寸,min-content
就不再重新计算,并保持在当时网格的任何尺寸。反过来,容器不再缩小,网格也不会重新计算其列。
这是为什么?
这是一个最小的例子来说明这个问题。启用时缩小屏幕尺寸max-width
,禁用时缩小一次。一旦列重排,一次不重排。这在所有主要浏览器中始终如一地发生。
body {
display: flex;
}
.container {
border: 1px solid red;
flex: 1;
/* vvvv TOGGLE ME vvvvv */
max-width: 700px;
/* ^^^^^^^^^^^^^^^^^^^^ */
display: grid;
grid-template-columns: repeat(auto-fit, 300px);
gap: 1rem;
}
.item {
padding: 2rem 0;
background-color: cornflowerblue;
border: 1px solid blue;
}
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
解决方案
推荐阅读
- java - 如何从 docx4j 运行中简洁地提取文本?
- java - 如何防止 Wicket AutocompleteAjaxComponent 转义?
- excel-dna - 在 Excel-DNA XLL 内的 VBA 中以编程方式引用多个 COM dll
- mapbox - Mapbox GL JS 在不同的缩放级别上缺少一些符号
- nativescript - 如何在 Tabview 中动态删除特定选项卡
- php - 如何安装 WMI 以使用 PHP 在 Ubuntu 中工作?
- c++ - 我想将处理后的图像从 OpenCV 保存为 `input_name+enhanced.input_image_format`
- mongodb - 结果组 cond mongodb push array
- c# - 想从数据库中的表中选择单个列并将其存储在 asp.net 列表中
- message - 如何保持消息处理系统中相关消息的顺序?