【问题标题】:CSS Grid auto-fit + minmax adds phantom rowCSS Grid auto-fit + minmax 添加幻像行
【发布时间】:2018-05-04 02:28:24
【问题描述】:

Chrome 的 CSS 网格中似乎存在一个奇怪的错误(在 Firefox 中不会发生)。当使用 repeat(auto-fit, minmax(300px, 1fr)) 作为 grid-template-columns 样式时会发生这种情况。出于某种原因,即使只有两个子 div,父 div 也会认为还有另一个元素并生成大量空白和不必要的网格间隙。知道如何在不进行 janky 修复的情况下合法地解决此问题吗?

以下是该错误的重现: https://codepen.io/rantis/full/gXxxRB/

.two_item_grid_container {
  repeat(auto-fit, minmax(300px, 1fr));
  /* If you reduce the min size to 45px the grid fixes itself for some reason */
}

【问题讨论】:

  • 您应该发布足够多的代码,以便我们重现问题。
  • @Michael_B 请参阅上面的编辑。有一个指向我制作的 codepen 演示的链接,它显示了这个问题。
  • @PorcupineRending 有关调试代码的问题需要将代码包含在问题本身中;到场外演示的链接是不够的。
  • @Michael_B 我最终向 Chrome 开发团队报告了这个错误,他们确认这是一个错误,但已经针对 Chrome v63 及更高版本进行了修复;因此,当它公开推出时,问题就不会那么严重了。

标签: html css css-grid


【解决方案1】:

在这种情况下使用auto-fill 时,Chrome 和 Firefox / Edge 之间似乎存在渲染差异。这是一个可能的解决方法:

使用更明确的列大小和媒体查询。

.two_item_grid_container {
     display: grid;
     grid-template-columns: repeat(2, minmax(300px, 1fr));
     grid-auto-rows: auto;
     grid-gap: 20px;
}

@media ( max-width: 500px ) {
  .two_item_grid_container {
     grid-template-columns: 1fr;
  }
}

revised codepen

【讨论】:

  • 谢谢迈克尔!这似乎是 Chrome 结束时的一个错误。你能说出实际发生的事情吗?
  • Chrome 似乎正在为潜在入住创建轨道。不知道为什么。因此,当您的第二个项目包装时,Chrome 已经保留了空间。在这种情况下,Firefox 和 Edge 似乎更明智。
  • 可能有一个自然的解决方法,但我不知道它可能是什么。我测试了auto-fill 和 flexbox,但都没有让事情变得更容易。所以我选择了媒体查询锤。
  • 那很不幸,我希望避免变通,但我想我还是需要设置媒体查询。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多