【问题标题】:CSS Grid container shrink to items sizeCSS Grid 容器缩小到项目大小
【发布时间】:2021-04-26 16:02:59
【问题描述】:

我正在尝试让网格容器的宽度不超过其行的宽度,即尽可能多地容纳列,然后折叠到其子项的宽度。

例如,如果网格项的总数是 16,容器的总空间量是 45px,每个网格项是 10px 宽,那么期望的结果是 4 x 4 网格宽 40px(不是 45px )。

我尝试将显示设置为 inline-grid,但这使得 auto-fill 只显示一列。

.outer {
  width: 280px; /* this varies */
  background: orange;
  resize: both;
  overflow: auto;
  height: 300px;
  padding: 10px;
}
.items {
  background: green;
  display: grid;
  grid-template-columns: repeat(auto-fill, 50px);
  justify-content: end;
  column-gap: 10px;
  row-gap: 10px;
}
.item {
  height: 50px;
  width: 50px;
  background: blue;
}
<div class="outer">
  <div class="items">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
</div>

此图像中的空间不应是网格容器的一部分。

【问题讨论】:

标签: css css-grid


【解决方案1】:

将其父级视为一个网格容器,您可以在其中应用相同的规则来限制网格的宽度:

.outer {
  width: 280px; /* this varies */
  background: orange;
  resize: both;
  overflow: auto;
  height: 300px;
  padding: 10px;
  /* added */
  display:grid;
  grid-template-columns: repeat(auto-fill, 50px);
  justify-content: end;
  column-gap: 10px;
  /**/
}
.items {
  grid-column:1/-1; /* take all the columns */
  background: green;
  display: grid; /* you can use "inherit" here */
  grid-template-columns: repeat(auto-fill, 50px); /* you can use "inherit" here */
  column-gap: 10px; /* you can use "inherit" here */
  row-gap: 10px;
}
.item {
  height: 50px;
  width: 50px;
  background: blue;
}
<div class="outer">
  <div class="items">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2020-02-23
    • 2020-12-16
    相关资源
    最近更新 更多