【问题标题】:How to stretch last grid item across full width of screen, when it goes to new row?当它进入新行时,如何在整个屏幕宽度上拉伸最后一个网格项目?
【发布时间】:2020-12-19 13:35:16
【问题描述】:

我有:

display: grid;
grid-template-columns: repeat(auto-fit, minmax(30rem, 1fr));
gap: 1rem;

当没有足够的空间容纳所有三个容器时,我的一个容器会跳下来。这很好。

那么网格有 2 列和 2 行。我希望最后一个元素占据整个屏幕宽度。因此,要占用 2 个网格行而不是 1 个。我可以使用媒体查询手动执行此操作,但没有更好的方法吗?

【问题讨论】:

  • 不,这就是 flexbox 的用途。

标签: css css-grid


【解决方案1】:

不确定在这种情况下网格是否是您的最佳选择。 您可能想要使用 flex 容器,在项目上设置 flex-grow: 1 和 min-width。

例子:

.container {
  display: flex;
  flex-wrap: wrap;
  box-sizing: border-box;
}

.item {
  min-width: 30rem;
  flex-grow: 1;
  box-sizing: border-box;
  justify-content: space-between;
}

然后在容器上使用负边距,在项目上加上边距作为间隙。

【讨论】:

  • 感谢您的建议。我会试试。想要使用网格,因为我希望容器之间有间隙和盒子阴影。关于差距,网格看起来非常好。还不确定我将如何在弯曲之间做同样的差距,但会尝试弄清楚:)
  • 按照我的建议,尝试添加:.container { margin-left: -1rem; margin-right: -1rem },然后 .item { padding-left: 1rem, padding-right: 1rem },会产生和gap一样的效果,纵向做类似的事情。这就是像 Bootstrap 这样的包的做法。
  • 谢谢。我也会尝试这个解决方案。与此同时,我做了 .container {padding: x amount} 和 .flex-items {margin: x amount}。当容器填充折叠时,flex 上有边距。所以现在就像一个魅力。想知道您编写的解决方案是否更好。
猜你喜欢
  • 2020-04-18
  • 1970-01-01
  • 2011-01-26
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多