css - flex 容器内的 DIV 向下推整行

标签 css flexbox

我正在使用指令开发一个 angular/js 应用程序,这个特定的 flex 容器使用可能包含一个或多个元素的 div(指令)。当一个指令包含 3 个 flexbox 元素时,如果它不能完全适合该指令中的所有元素,它会将整行向下推,而不是说将一个留在第一行并将其余的放在第二行。相反,它会在顶部留下一个空白空间,并将所有 3 个推到第二行。在这种情况下使用指令的原因是为了重用并将通用功能组合在一起。

为简化起见,这演示了我在使用 div 时遇到的问题。查看示例,如果您调整窗口大小,您会发现一旦没有足够的空间容纳第 6 个气泡,该 div 中的所有 3 个气泡都会被推到第二行。 example on codepen

dl,
dt,
dd {
  /* resetting definition list styling */
  margin: 0;
  padding: 0;
}

.bubble {
  display: block;
  border-radius: 1rem;
  background: rgb(52, 58, 64);
  color: rgb(255, 255, 255);
  text-align: center;
  font-weight: 600;
  padding: 1rem;
  width: 10rem;
  height: 10rem;
}

.flex-container {
  display: inline-flex;
  flex-wrap: wrap;
}

.flex-container div {
  display: inline-flex;
}
<div class="flex-container">
  <div>
    <dl class="bubble">1</dl>
  </div>
  <div>
    <dl class="bubble">2</dl>
  </div>
  <div>
    <dl class="bubble">3</dl>
  </div>
  <div>
    <dl class="bubble">4</dl>
    <dl class="bubble">5</dl>
    <dl class="bubble">6</dl>
  </div>
</div>

我是否有可能在第 3 个气泡之后让包含 3 个元素的 div 开始,并只包装那些不适合第二行的元素?

最佳答案

更新:

使用

.flex-container div {
  display: contents;
}

代替

.flex-container div {
  display: inline-flex;
}

display: contents 基本上忽略元素并使元素的父元素,或在本例中为 flex-container,子元素的父元素或此处的 dl 标签。这只会影响布局。子元素仍然保留从其包装元素继承的任何样式。

关于css - flex 容器内的 DIV 向下推整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101097/

相关文章:

html - Flex 元素不需要是 Flex 容器内的显式元素吗?

css - 中心 rsCaption

javascript - 用 jquery 制表符不起作用

html - css3 flex 框内的复选框

html - Flex-grow 取决于子内容的存在

html - 使用 CSS 使 div 不均匀居中

html - 共享相同线性渐变背景的 CSS 元素

javascript - slideToggle 不在表格上设置动画

html - 将 flex 元素固定到容器底部

css - 如何将 Flexbox 与 Web 组件和影子 DOM 一起使用