css 封装在容器中的元件的无缝网格

ergxz8rk  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(51)

我尝试显示一个元素网格,每行元素的数量固定。然而,由于服务器端的原因,这些元素被封装在容器div中的批次(可变大小)中。下面是它的样子:

<div class="grid">
    <div class="container">
      <div class="element"></div>
      <div class="element"></div>
      <div class="element"></div>
      <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>

字符集
在网格中,我想在每行显示4个元素(最好使用flexbox,但不是必需的)。我还没有弄清楚如何在元素的数量不能被4整除时,在第一个元素的元素之后直接显示下一个容器的元素。
我现在得到的是:
x1c 0d1x的数据
我想要的:



我发现得到我想要的结果的唯一方法是使用JS将其他容器的项目移动到第一个,但这不是一个适当的解决方案,因为这些元素将出现在哪里。我想一个纯HTML/CSS解决方案。
以下是我目前为止的CSS:

.element {
  width: 30px;
  height : 30px;
  border : 1px solid black;
}

.container {
  margin-bottom: 5px;
  display : flex;
  flex-wrap: wrap;
  gap: 5px;
  width : 100%;
}

.grid {
  width: 150px;
  display: flex;
  flex-wrap: wrap;
}
<div class="grid">
    <div class="container">
      <div class="element"></div>
      <div class="element"></div>
      <div class="element"></div>
      <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>

的数据

lvmkulzt

lvmkulzt1#

对容器使用display: gridinline-grid,对子 Package 器使用display: contents

.element {
  width: 30px;
  height: 30px;
  border: 1px solid black;
}

.container {
  margin-bottom: 5px;
  display: contents;
}

.grid {
  display: inline-grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(3, 1fr);
  gap: 5px;
}

个字符

tyg4sfes

tyg4sfes2#

你所需要做的就是将容器设置为inline-block,并将宽度固定为小于每个元素宽度的5倍,这样你就可以得到每行4个元素。

.element {
  outline: 1px solid black;
  height: 48px;
  width: 48px;
  display: inline-block;
}

.container {
  outline: 1px solid blue;
  max-width: 206px
}

个字符

相关问题