【问题标题】:Automatic grid layout that fit content适合内容的自动网格布局
【发布时间】:2017-09-28 08:30:12
【问题描述】:

我想创建一个自动网格而不指定确切的行数和列数。

然后每个网格单元将足够宽以适应内容(自动)。 然后,如果网格不够宽以容纳 3 列,那么如果将有 2 列,如果不足以容纳 2 列,那么它将有 1 列,依此类推。 然后,如果宽度不足以容纳 1 列,则 1 列将被限制为 100% 宽度(无水平滚动)。

我认为你可以使用 flex box 来做到这一点,其中 flex-item 将被限制为 100% max-width,并且 flex-wrap 将被启用,因此如果足够宽,它可以将所有内容放在 1 行中,但会换行到下一行如果不够宽,直到只有 1 个弹性项目,并且该项目将被限制为 100% 宽度。那么css网格布局有什么意义呢?

我正在尝试使用grid-template-columns: repeat(auto-fit, minmax(18em, 1fr));,但如果宽度小于 18em,您最终会出现水平滚动。如果你把它降低到 1 厘米,那么你总是会得到 1 厘米的小柱子,并且内容会溢出网格单元格。

我只是在学习网格布局,所以希望有人能帮助我。

更新:代码:

.wpr{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(25em, 1fr));
  grid-gap: 1em;
}
.wpr > div{
  background-color: red;
}
img{
  width: 100%;
  display: inline-block;
  padding-bottom: 100%;
  background-color: blue;
}
.wpr > div:nth-child(1){
  grid-row: auto / span 5;
}
<div class="wpr">
  <div>
    A<br/>
    Author<br/>
    <img/>
  </div>
  <div>B</div>
  <div>C</div>
  <div>D</div>
  <div>E</div>
  <div>F</div>
  <div>G</div>
  <div>H</div>
  <div>I</div>
  <div>J</div>
  <div>K</div>
  <div>L</div>
  <div>M</div>
</div>

更新:插图:

理想情况下:

【问题讨论】:

  • 默认情况下,网格项目不能缩小到其内容大小以下。这可能会导致滚动条被渲染。但您可以覆盖此设置:stackoverflow.com/q/43311943/3597276
  • 它实际上包裹了我的网格项目中的所有单词,从而产生了超小的列。所以为了避免这种情况,我在minmax(24em, 1fr) 中添加了最小尺寸,这会导致溢出。设置 min-width: 0 和 overflow: auto 不会覆盖它。无论如何,我决定使用固定编号的 12 col 网格。我不认为我能解决这个问题......目前。

标签: css grid-layout


【解决方案1】:

我建议不要使用弹性盒子,尽管最近越来越多的人使用它们,我只会让 div 彼此相邻对齐,这样你就可以创建一个具有所需宽度的 CSS 盒子:比如 100%或 50%,甚至将其简单地设置为“自动”。然后使用 display: inline-block;和浮动:左;在盒子上;这样你就可以有一个漂亮的布局,它会响应。

例子:

    .box1 {
        width: 49%;
        height: auto;
        float: left;
        overflow: hidden;
        margin: auto;
    display: inline-block;
    }

.box2 {
    width: 49%;
    height: autox;
    float: left;
    overflow: hidden;
    margin: auto;
display: inline-block;

}

【讨论】:

  • 为什么不使用弹性盒子?
  • 我用float尝试了inline-block,很不错。但是如果有空的空间,你如何让它们成长呢?
  • 弹性盒子是响应式的,但不要总是改变你想要的解释方式。创建一个 100% 的容器,然后将这些框设为百分比,例如,如果您希望 4 个框每个框为 20%。这有意义吗?
  • 有点,是的。但是如果在小屏幕上,我想要 2 个甚至 1 个盒子,那么我必须使用媒体查询将所有盒子设置为 100%。那么它与使用网格布局并没有什么不同......
  • 不,它不会有太大的不同,但我认为你会这样实现你的目标,使用媒体 quaries 和你 2 或 1 取决于断点
猜你喜欢
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多