html - 是否可以在 CSS-Grid-Cell 中放置多个元素而不重叠?

标签 html css grid-layout css-grid

我有三列和一行,我想将每个网格元素放入三个结果单元格之一。这就是我想要的,使用三个容器元素:

main {
  display: grid;
  grid-template-columns: 33% 33% auto;
  grid-gap: 15px;
}

.container {
  background-color: orange;
}

.element {
  transition: height 0.5s;
  margin: 15px;
  height: 100px;
  background-color: grey;
}

.element:hover {
  height: 200px;
}
<main>
  <div class="container">
    <div class="element"></div>
    <div class="element"></div>
    <div class="element"></div>
  </div>

  <div class="container">
    <div class="element"></div>
    <div class="element"></div>
    <div class="element"></div>
  </div>

  <div class="container">
    <div class="element"></div>
    <div class="element"></div>
    <div class="element"></div>
  </div>
</main>

我知道这可以使用三个容器,但我想避免使用任何不是真正“必要”的东西。

使用多行并将元素从一行扩展到两行或三行不会像我在上面发布的示例中那样“平滑”。但是,使用多行并仅调整一个元素的大小会调整整个行的大小,这会影响下一行的位置。

解决方案是将同一列的每个元素放入同一单元格中。这样最多只有一行,每次调整元素大小时,它只会影响同一列中元素的位置,这正是我想要的。

将多个元素放在同一个单元格中的问题是它们会不断重叠,我发现没有办法阻止它们这样做。

那么有没有办法只使用 css-grid 布局将多个元素放在同一个单元格中而不重叠?

最佳答案

分配给网格的元素不会应用任何流,没有办法绕过它。它们将一个接一个地拍打到网格上,就好像它们是绝对定位的一样。不过,它们将遵守任何 z-index 值。

这是因为规范explicitly states如果元素被分配到相交的区域,则允许元素重叠。

此外,规范 encourages将网格与 flexboxes 混合,以获得更复杂的布局。

关于html - 是否可以在 CSS-Grid-Cell 中放置多个元素而不重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45264354/

相关文章:

html - <a> inside <li> 不会链接到页面,但会与 anchor 一起使用

html - 在导航栏品牌附近添加灯光效果到背景

css - ReactJS 水平对齐 material-ui 元素

text - 如何调整可变高度文本属性 kivy?

html - 如何关闭两个元素之间的空间

html - vuetify v-col xs ="12"只填充一半的宽度

javascript - HTML - CSS - 响应式相同尺寸的图像网格,悬停时出现框

javascript - 我有一个文本框,我希望用户单击按钮时可以切换到网格。这在asp.net中可能吗?

java - 包含卡片布局的网格布局 - 可以做到吗?

javascript - HTML5 在 Canvas 上编辑文本