我有一个相当简单的12列的css网格.我正在使用CSS网格的行首和行尾功能来精确地将我的项目放置在我想要它们的位置.但我遇到了一个问题,我在右侧添加的项目越多,左侧就会不断扩大和增长.

例如,如果只添加了3个文档,则如下所示:

enter image description here

但有了7份文件,我的左侧现在变得疯狂扩张,而不是像它应该的那样保持在顶部:

enter image description here

理想情况下,我希望我的左侧不会移动或扩展,无论我在右侧添加多少项,就像这样:

enter image description here

我知道我可以很容易地使用flexbox完成这一点,但我真的想使用CSS网格和行开始,行结束功能来做到这一点.

下面是我的代码(https://play.tailwindcss.com/fy2kFCCb9T):

<div class="h-screen bg-gray-900 p-4 text-gray-300">
  <!-- Grid -->
  <div class="grid grid-cols-12 gap-4">
    <!-- Right: Documents -->
    <div class="row-start-1 col-start-7 col-span-6 row-span-3 space-y-4">
      <div class="p-2 bg-gray-700 rounded">Document #1</div>
      <div class="p-2 bg-gray-700 rounded">Document #2</div>
      <div class="p-2 bg-gray-700 rounded">Document #3</div>
      <div class="p-2 bg-gray-700 rounded">Document #4</div>
      <div class="p-2 bg-gray-700 rounded">Document #5</div>
      <div class="p-2 bg-gray-700 rounded">Document #6</div>
      <div class="p-2 bg-gray-700 rounded">Document #7</div>
    </div>

    <!-- Left: Category -->
    <div class="col-span-6 row-start-1">
      Category
    </div>

    <!-- Left: Name -->
    <div class="col-span-6 row-start-2">
      Name
    </div>

    <!-- Left: Price -->
    <div class="col-span-6 row-start-3">
      Price
    </div>
  </div>
</div>

推荐答案

您可以考虑声明显式的网格行跟踪.这意味着您可以调整显示剩余项的行的大小,这样它们就不会因为自动调整网格行的大小而分散开来.

之前:

┏━━━━━━━━━━━━━━━━━━━━━┓
┃                     ┃
┃ grid-auto-row: auto ┃
┃                     ┃
┠─────────────────────┨
┃                     ┃
┃ grid-auto-row: auto ┃
┃                     ┃
┠─────────────────────┨
┃                     ┃
┃ grid-auto-row: auto ┃
┃                     ┃
┗━━━━━━━━━━━━━━━━━━━━━┛

之后:

┏━━━━━━━━━━━━━━━━━━━━━┓
┃ `min-content`       ┃
┠─────────────────────┨
┃ `min-content`       ┃
┠─────────────────────┨
┃ `min-content`       ┃
┠─────────────────────┨
┃ `1fr`               ┃
┃                     ┃
┃                     ┃
┃                     ┃
┃                     ┃
┗━━━━━━━━━━━━━━━━━━━━━┛

<script src="https://cdn.tailwindcss.com/3.3.5"></script>

<div class="h-screen bg-gray-900 p-4 text-gray-300">
  <!-- Grid -->
  <div class="grid grid-cols-12 gap-4 grid-rows-[repeat(3,min-content)_1fr]">
    <!-- Right: Documents -->
    <div class="row-start-1 col-start-7 col-span-6 row-span-4 space-y-4">
      <div class="p-2 bg-gray-700 rounded">Document #1</div>
      <div class="p-2 bg-gray-700 rounded">Document #2</div>
      <div class="p-2 bg-gray-700 rounded">Document #3</div>
      <div class="p-2 bg-gray-700 rounded">Document #4</div>
      <div class="p-2 bg-gray-700 rounded">Document #5</div>
      <div class="p-2 bg-gray-700 rounded">Document #6</div>
      <div class="p-2 bg-gray-700 rounded">Document #7</div>
    </div>

    <!-- Left: Category -->
    <div class="col-span-6 row-start-1">
      Category
    </div>

    <!-- Left: Name -->
    <div class="col-span-6 row-start-2">
      Name
    </div>

    <!-- Left: Price -->
    <div class="col-span-6 row-start-3">
      Price
    </div>
  </div>
</div>

或者,您可以将左边的元素包装在一个容器中,这样它们根本不在任何网格行中.这意味着它们将作为块元素进行布局,从而从顶部堆叠:

<script src="https://cdn.tailwindcss.com/3.3.5"></script>

<div class="h-screen bg-gray-900 p-4 text-gray-300">
  <!-- Grid -->
  <div class="grid grid-cols-12 gap-4">
    <!-- Right: Documents -->
    <div class="row-start-1 col-start-7 col-span-6 row-span-3 space-y-4">
      <div class="p-2 bg-gray-700 rounded">Document #1</div>
      <div class="p-2 bg-gray-700 rounded">Document #2</div>
      <div class="p-2 bg-gray-700 rounded">Document #3</div>
      <div class="p-2 bg-gray-700 rounded">Document #4</div>
      <div class="p-2 bg-gray-700 rounded">Document #5</div>
      <div class="p-2 bg-gray-700 rounded">Document #6</div>
      <div class="p-2 bg-gray-700 rounded">Document #7</div>
    </div>

    <div class="col-span-6 space-y-4">
      <!-- Left: Category -->
      <div>
        Category
      </div>

      <!-- Left: Name -->
      <div>
        Name
      </div>

      <!-- Left: Price -->
      <div>
        Price
      </div>
    </div>
  </div>
</div>

Css相关问答推荐

在菜单中最后一项之后排除MUI分隔符

在Angular mat-drawer组件中防止在mat-drawer-innercontainer中添加滚动条

R SHINY:FILL CONTAINER=TRUE时调整DT数据表高度,

下拉菜单未展开- bootstrap

如何通过重复的网格区域来简化网格布局?

Angular Material - 将 matsnackbar 置于所有对话框之上

Tailwind css break-word 在输入字段中不起作用

tailwind 类的别名?

用css画3个三角形

预期失败时使用toHaveStyle进行测试

有没有办法让 mui v5 呈现没有 css-xxx 前缀的类名?

将 CSS 注入 Shadow 根.然而风格正在受到影响

如何在 nth-child 中正确传递 CSS 变量?

CSS nth-child 表示大于和小于

位置元素垂直固定,绝对水平

flex-wrap 如何与 align-self、align-items 和 align-content 一起使用?

从 css 添加标题属性

如何对齐标签和文本区域?

CSS 悬停与 JavaScript 鼠标悬停

如何在页面上居中 twitter bootstrap 选项卡?