【问题标题】:CSS Grid Flow Different Sized Blocks [duplicate]CSS Grid Flow不同大小的块[重复]
【发布时间】:2023-03-20 06:00:02
【问题描述】:

是否可以创建一个 CSS 网格,允许不同大小的内容块没有固定的起始位置,而其他块在周围流动?

这是我的测试

HTML

<div class="grid">

  <div class="item">Small 1</div>
  <div class="item">Small 2</div>
  <div class="item large">Large 1</div>
  <div class="item large">Large 2</div>

  <div class="item">Small 3</div>
  <div class="item">Small 4</div>
  <div class="item">Small 5</div>
  <div class="item">Small 6</div>

  <div class="item">Small 7</div>
  <div class="item">Small 8</div>
  <div class="item">Small 9</div>
  <div class="item">Small 10</div>

  <div class="item">Small 11</div>
  <div class="item">Small 12</div>
  <div class="item">Small 13</div>

</div>

CSS

* { 
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}   

body {
  padding: 5em;
}

.grid { 
  display: grid; 
  grid-template-columns: 25% 25% 25% 25%; 
  grid-gap: 1em 1em;
  grid-auto-flow: row dense;
}

.item {
  background: rgba(0, 0, 0, 0.1);
  border-radius: 0.25em;
  padding: 2em;
}

.large {
  background: rgba(255, 0, 0, 0.25);
  grid-column: auto / span 2;
  grid-row: auto / span 2;
}

小提琴: https://jsfiddle.net/bLjzscLs/

预期:

实际:

【问题讨论】:

    标签: html css responsive-design grid css-grid


    【解决方案1】:

    当然可以!只需将height: &lt;insert value that's above 100px here&gt; 添加到.large 下的CSS 并找到正确的值即可达到预期结果。

    例子:

    * {
      padding: 0;
      margin: 0;
      box-sizing: border-box;
    }
    
    body {
      padding: 5em;
    }
    
    .grid {
      display: grid;
      grid-template-columns: 25% 25% 25% 25%;
      grid-gap: 1em 1em;
      grid-auto-flow: row dense;
    }
    
    .item {
      background: rgba(0, 0, 0, 0.1);
      border-radius: 0.25em;
      padding: 2em;
    }
    
    .large {
      background: rgba(255, 0, 0, 0.25);
      grid-column: auto / span 2;
      grid-row: auto / span 2;
      height: 200px;
    }
    <div class="grid">
    
      <div class="item">Small 1</div>
      <div class="item">Small 2</div>
      <div class="item large">Large 1</div>
      <div class="item large">Large 2</div>
    
      <div class="item">Small 3</div>
      <div class="item">Small 4</div>
      <div class="item">Small 5</div>
      <div class="item">Small 6</div>
    
      <div class="item">Small 7</div>
      <div class="item">Small 8</div>
      <div class="item">Small 9</div>
      <div class="item">Small 10</div>
    
      <div class="item">Small 11</div>
      <div class="item">Small 12</div>
      <div class="item">Small 13</div>
    
    </div>

    【讨论】:

    • 感谢您的回答。我将此解释为在设置高度时从动态布局移动到固定布局。对吗?
    • 没错。希望这不是问题。
    【解决方案2】:

    实际上,您的代码将按您预期的方式工作。尝试在 'large 1' 区域添加一个大段落,尽可能多的行,然后自己查看输出。

    &lt;div class="item large"&gt;添加一个包含许多新行的大段落 可能并检查输出&lt;/div&gt;

    无论如何你也可以使用这里提供的代码 -> https://jsfiddle.net/anoopmnm/dopt5s4y/

    或者只是将样式表中的值从 grid-row: auto / span 2; 增加到 grid-row: auto / span 11;

    【讨论】:

    • 谢谢德克斯特 - 我不确定你的答案为什么有效。我的理解是,将跨度从 2 行更改为 11 行将使该块跨越 11 行。你能澄清一下吗?
    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2021-11-18
    • 2021-03-05
    • 1970-01-01
    相关资源
    最近更新 更多