【问题标题】:Collapsing gaps in CSS grid when using auto-fit - unwanted behaviour when columns wrap使用自动调整时 CSS 网格中的折叠间隙 - 列换行时的不良行为
【发布时间】:2017-12-11 18:34:44
【问题描述】:

我正在尝试使用 CSS 网格的 auto-fit 功能来为不同的屏幕尺寸整齐地包装网格项目。当我放入auto-fitted 网格容器的所有项目大小相同时,这很有效;但是,如果我将项目设置为不同的尺寸,对于小屏幕尺寸,当项目包装时,我会得到不希望的尺寸。

这段代码 sn-p 说明了我遇到的问题(如果您调整浏览器窗口的大小,您可以清楚地看到问题):

.wrapper {
  display: grid;
  padding: 10px;
  width: 90%; 
  grid-gap:10px;
  grid-template-columns: 
    repeat(auto-fit, minmax(300px, 1fr));
  
    box-sizing: border-box;
  border: 1.5px solid darkblue;
}

.first{
  grid-column: span 1;
  box-sizing: border-box;
  border: 1.5px solid darkgrey;
}

.second{
  grid-column: span 2;
  box-sizing: border-box;
  border: 1.5px solid darkgrey;
}
<div class='wrapper'>
  <div class='first'>
   First
  </div>    
  <div class='second'>
    Second
  <div>
</div>

这张不同行为的屏幕截图显示了正在发生的事情:

图片 1 是当项目在全屏时的大小相同时显示的内容 - 这包含到图片 2。

图片 3 是当项目大小不同时显示的内容 - 这首先包裹到图片 4(预期),然后包裹到图片 5 - 这与图片 2 不同。(这将是理想的行为) - 这两个项目的大小不同。

我怀疑这是由于在较小的屏幕尺寸下网格项按照auto-fit 折叠,但没有折叠折叠的网格项之间的间隙。在 Chrome 中调试显示了这一点,但我不知道如何克服它!

我在正确的轨道上吗?当我放入容器中的物品大小不同时,有什么方法可以在图 2 中获得所需的行为?

【问题讨论】:

  • 问题是你在第一个项目上有span: 1,在第二个项目上有span: 2。因此,当它们包装时,它们会保留这些尺寸。然后是在创建第二行后保留在第一行的未占用网格单元的问题。然后是grid-column-gap 的问题。很多事情要克服;您的问题中关于您的总体目标的详细信息不足。
  • @ahx 直接在帖子中添加minimal reproducible example,而不是链接到场外代码沙箱,您的问题会得到很大改善。
  • 感谢您回到我身边。我的总体目标是获得图 2 的效果。当物品包装时,即使它们的尺寸不同。关于你的观点:我故意让它们跨越两种不同的尺寸,因为我希望它们在同一行时以这些比例显示。当它们换行时,我可以看到正在创建一个未占用的网格单元,但由于它是空的,我不知道为什么它没有完全折叠 - 这不是 auto-fit 应该做的吗?恐怕我不明白你的意思:grid-column-gap
  • @TylerH 我的 codepen 在我的计算机上查看它时确实说明了问题(并调整浏览器的大小以模拟小屏幕尺寸)。结合截图,我认为这可以满足这些要求。我不确定它在什么方面不是最小的、完整的和可验证的?我现在看看如何将它直接添加到堆栈溢出中。
  • 一切正常,再次感谢。我认为网格能够解决我所有的布局问题,但我会更详细地研究 flexbox。仅供参考,如果我将 wrapper 上的 grid-gap 设置为 0,尺寸不均匀的问题就会消失,但布局过于狭窄。

标签: css grid-layout css-grid


【解决方案1】:

使用宽度:100%;和浮动:如果您使用 html 但没有看到您的 html 代码,则留在主 div 上,无法正确分辨。如果您在此处粘贴您的部分代码会很好。

【讨论】:

    猜你喜欢
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2021-09-21
    • 1970-01-01
    相关资源
    最近更新 更多