使CSS网格适合最小空间

Str*_*ler 7 html css css3 css-grid

我有这样的事情:

.row {
  width: 300px;
  border: 1px solid black;
  display: flex;
}

.otherstuff {
  flex-grow: 1;
}

.grid {
  display: grid;
  grid-auto-flow: column;
  gap: 10px 10px;
}

.cell {
  border: 1px solid blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class='row'>
  <div class='stuff'>Stuff</div>
  <div class='otherstuff'>
    <div class='grid'>
      <div class='cell'>Cell 1</div>
      <div class='cell'>Cell 2</div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望网格仅占用所需的最小空间,而不要扩展。我已经阅读了该线程,并看到使用grid-template-columnsauto值是可行的,但是有一种方法可以在不事先知道子代数的情况下进行吗?

谢谢。

kuk*_*kuz 6

您可以使用inline-grid- 请参阅下面的演示:

.row {
  width: 300px;
  border: 1px solid black;
  display: flex;
}

.otherstuff {
  flex-grow: 1;
}

.grid {
  display: inline-grid; /* changed */
  grid-auto-flow: column;
  gap: 10px 10px;
}

.cell {
  border: 1px solid blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class='row'>
  <div class='stuff'>Stuff</div>
  <div class='otherstuff'>
    <div class='grid'>
      <div class='cell'>Cell 1</div>
      <div class='cell'>Cell 2</div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)


Ade*_*ias 5

您可以使用grid-auto-columns: min-contentgrid-auto-columns: max-content,此属性将仅影响未设置大小的列。

grid-auto-columnsCSS属性指定的隐含创建的网格列轨道的大小。

.row {
  width: 300px;
  border: 1px solid black;
  display: flex;
}

.otherstuff {
  flex-grow: 1;
}

.grid {
  display: grid;
  grid-auto-flow: column;
  gap: 10px 10px;
  grid-auto-columns: max-content;
}

.cell {
  border: 1px solid blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class='row'>
  <div class='stuff'>Stuff</div>
  <div class='otherstuff'>
    <div class='grid'>
      <div class='cell'>Cell 1</div>
      <div class='cell'>Cell 2</div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)