html - 网格元素应该跨行流动,而不是列

标签 html css css-grid

我有一个网格,其中包含 7 个动态大小的 div,周围有 2 个 block ,这些 block 应与 7 个动态 div 网格的第二行对齐。

我大部分时间都在使用它,只是网格的方向是列,而我希望它是行。看 fiddle ,1-7 应该穿过顶部 https://jsfiddle.net/juzkxo20/5/

<div class='content'>
  <div class='left'></div>
  <div class='column-with-dynamic-content'>
    <div class='dynamic'>1</div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>    
  </div>
  <div class='column-with-dynamic-content'>
    <div class='dynamic'>2</div>
    <div class='dynamic'></div>
  </div>
    <div class='column-with-dynamic-content'>
    <div class='dynamic'>3</div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>    
  </div>
  <div class='column-with-dynamic-content'>
    <div class='dynamic'>4</div>
    <div class='dynamic'></div>
  </div>
    <div class='column-with-dynamic-content'>
    <div class='dynamic'>5</div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>    
  </div>
  <div class='column-with-dynamic-content'>
    <div class='dynamic'>6</div>
    <div class='dynamic'></div>
  </div>
    <div class='column-with-dynamic-content'>
    <div class='dynamic'>7</div>
    <div class='dynamic'></div>
  </div>
  <div class='right'></div>
</div>

.content {
  display: grid;
  grid-template-columns: 1fr 7fr 1fr;
  grid-auto-rows: 50px;  
  grid-gap: 10px;
grid-auto-flow: column;
}

.column-with-dynamic-content {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  grid-auto-rows: 50px;
  grid-gap: 10px;
  grid-column: 2 / 3;
}

.left {
  grid-column-start: 1;
  grid-row: 2 / 3 ;
}

.right {
  grid-column-end: -1;
  grid-row: 2 / 3 ;
}

/* just demo styles */
.left, .right { border: 2px solid red; }
.dynamic { background-color: lightgray;  border: 1px solid gray; }

最佳答案

这是解决您问题的一种方法,我刚刚开始学习 css 网格,但我认为其中大部分是正确的。

您正在使用 .column-with-dynamic-content 创建一个包含 7 列的模板,但是,您在此容器中只有 3 个子 div,它正在寻找 7 个。您需要此类包含所有 7 个父 div包含动态 div。我在下面创建了一个类来向您展示。

.content {
  display: grid;
  grid-template-columns: 1fr 7fr 1fr;
  grid-auto-rows: 50px;
  grid-gap: 10px;
  grid-auto-flow: column;
}

.column-with-dynamic-content {
  display: grid;
  grid-auto-rows: 50px;
  grid-gap: 10px;
}

.seven-children-column {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  grid-auto-rows: 50px;
  grid-gap: 10px;
  grid-column: 2 / 3;
}

.left {
  grid-column-start: 1;
  grid-row: 2 / 3;
}

.right {
  grid-column-end: -1;
  grid-row: 2 / 3;
}


/* just demo styles */

.left,
.right {
  border: 2px solid red;
}

.dynamic {
  background-color: lightgray;
  border: 1px solid gray;
}
<div class='content'>
  <div class='left'></div>
  <div class='seven-children-column'>
    <div class='column-with-dynamic-content'>
      <div class='dynamic'>1</div>
      <div class='dynamic'></div>
      <div class='dynamic'></div>
    </div>
    <div class='column-with-dynamic-content'>
      <div class='dynamic'>2</div>
      <div class='dynamic'></div>
    </div>
    <div class='column-with-dynamic-content'>
      <div class='dynamic'>3</div>
      <div class='dynamic'></div>
      <div class='dynamic'></div>
    </div>
    <div class='column-with-dynamic-content'>
      <div class='dynamic'>4</div>
      <div class='dynamic'></div>
    </div>
    <div class='column-with-dynamic-content'>
      <div class='dynamic'>5</div>
      <div class='dynamic'></div>
      <div class='dynamic'></div>
    </div>
    <div class='column-with-dynamic-content'>
      <div class='dynamic'>6</div>
      <div class='dynamic'></div>
    </div>
    <div class='column-with-dynamic-content'>
      <div class='dynamic'>7</div>
      <div class='dynamic'></div>
    </div>
  </div>
  <div class='right'></div>
</div>

关于html - 网格元素应该跨行流动,而不是列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47229684/

相关文章:

javascript - 简单但丢失 : Embeding Javascript into HTML

css - 触控笔颜色转换功能(色调、饱和度)

html - 使用 css 网格创建马赛克样式网格

html - li 元素之间的小空白

CSS - 在屏幕上移动网格元素调整大小

html - 使用 CSS 网格将复选框堆叠到右列并将标签堆叠到左侧

CSS 网格 : content to use free space but scroll when bigger

jquery - 使用导航键 jquery 跳转滚动 ul of div

javascript - 仅使用数据量选择元素

javascript - 为什么它不断重复我正在更新的当前行?