【发布时间】:2019-06-23 19:42:36
【问题描述】:
我有一个像这样的整洁的响应式网格:
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
这使得每个网格项目至少有 200 像素宽。其中一项(红色项)的宽度是原来的两倍,如下所示:
grid-column-end: span 2;
到目前为止很棒!
现在,当我调整到较小的宽度时,红色项目将网格强制为两列。这给了我一个奇怪的小列,即使我将最小宽度指定为 200 像素。看:
我真的希望红色项目折叠成一列,这样网格就不会中断。
但问题是,我不知道总网格的宽度,所以我不能使用在特定视口大小触发的媒体查询。
有没有办法将红色项目强制到一列,或者以另一种方式定义网格列来解决这个问题?
【问题讨论】:
-
虽然您可能不知道设计开始中断的确切尺寸,但您需要开始寻找那些断点,然后使用媒体查询来预测中断。顺便说一句,如果您可以发布您的minimal reproducible example 代码(包括允许该代码重现您的问题的虚拟内容),那么您可能会得到更好或更多的答案。或者,您应该/可以首先针对移动设备(小屏幕)进行设计,然后使用断点来调整大屏幕的设计。这可能会也可能不会简化您需要做的工作。
-
不幸的是我做不到。我正在开发一个可视化网站构建器,这是我在客户设计自己的布局时预期的问题。例如,200px 值可以是任何给定的宽度。
-
如果没有足够的代码来重现问题(即使是在非常基础的层面上),也很难提供解决方案。我们只能在这一点上猜测。例如,也许您可以将第一项从当前网格中取出。让它作为一个单独的容器,无论是网格还是弹性。但这只是猜测;没有代码,我无法测试或显示结果。
-
您是在寻找纯 CSS 解决方案还是愿意使用 javascript?