html - CSS 网格 - 跨行

标签 html css css-grid

我想将 2 列的网格 div 放置在与第 2 行 div 内联的位置(见图)。总行数是动态的。 enter image description here

 <div class='content'>
  <div class='left'></div>
  <div class='column-with-dynamic-content'>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>    
  </div>
  <div class='column-with-dynamic-content'>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
  </div>
    <div class='column-with-dynamic-content'>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>    
  </div>
  <div class='column-with-dynamic-content'>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
  </div>
    <div class='column-with-dynamic-content'>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>    
  </div>
  <div class='column-with-dynamic-content'>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
  </div>
    <div class='column-with-dynamic-content'>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
  </div>
  <div class='right'></div>
</div>

CSS

.content{
    display: grid;
    grid-template-columns: repeat(9, 1fr);
    grid-gap: 100px 1em;
}

为什么我需要添加文本才能发布这个问题

最佳答案

您可以使用两个网格容器进行此布局。

主网格容器将管理左侧、中间和右侧的元素。中心项包含动态内容。

嵌套容器将管理动态内容。

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

.column-with-dynamic-content {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(12%, 1fr)); /* OR...
     grid-template-columns: repeat(7, 1fr); ...which is less responsive, 
                                               but may still work for you. */
  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='column-with-dynamic-content'>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
    <div class='dynamic'></div>
  </div>
  <div class='right'></div>
</div>

jsFiddle demo

关于html - CSS 网格 - 跨行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47225825/

相关文章:

php - 链接到页面上的 id 但重新定位

Javascript 转换一个接一个

css - 移动网络的 max-device-width 和 max-width 有什么区别?

html - 显示图例文本时防止容器增长

javascript - 完全使用 iframe 嵌入页面,没有边框,曾经有边框的地方没有空格

html - 如何更改 Materialise 中空(未选中)复选框的边框颜色

javascript - 禁用侧边栏滚动(如果是双子座滚动条)

html - 如何使用CSS更改iframe src

html - 为什么我的模板区域没有按预期堆叠?

css - 如何定位 CSS 网格中的最后一列?