将一个 flex 列的内容围绕另一个 flex 列排列

3
我希望CONTENT列能够环绕左侧的rowChild592列。
我有以下代码:

enter image description here

我希望它看起来像这样:

enter image description here

我在这里看到一个关于如何使 div 设置为表格单元格环绕的答案:

我是不是需要使用表格重新制作所有内容,还是可以将 flex 列包裹在另一个列中?

.rowParent,
.columnParent {
  display: flex;
}

.columnParent {
  flex-direction: column;
}

.flexChild {
  flex: 1;
}

#flexymenu {
  flex-grow: 2;
  height: 100%;
}

.frame {
  display: block;
  margin: 0 auto;
}

.socialwrap {
  display: flex;
}
<div id="container" class="flexChild rowParent">
  <div id="rowChild592" class="flexChild">
    <h1></h1>
    <div class="socialwrap"></div>
  </div>
  <div id="flexymenu" class="flexChild columnParent">
    <div id="columnChild85412" class="flexChild rowParent">
      <div id="rowChild97758" class="flexChild"></div>
      <div id="rowChild52237" class="flexChild"></div>
    </div>
    <div id="columnChild59385" class="flexChild selected">
      <div class="frame">CONTENT</div>
    </div>
  </div>
</div>


Flexbox并不是为了将元素包裹在其他元素周围而设计的。它只能沿着列或行对齐元素。这里有一个更完整的解释:https://dev59.com/QFsW5IYBdhLWcg3w4qiw#34481128 - Michael Benjamin
@Michael_B 感谢您的解释!Grid 能做到这个吗? - Steven Ellen Starar
1个回答

1
flex布局中,元素可以沿着列行对齐。一个flex项目不能跨越列和行,这可能导致一个项目的内容围绕着另一个项目包裹。因此,flexbox不是实现布局的好选择。阅读更多。grid布局中,元素可以跨越列行。一个网格项目可以被配置为占据尽可能多的行和列,从而允许一个项目的内容围绕其他项目包裹,除了目前存在的一个限制: 网格区域必须是矩形的
此行为在规范的两个部分中定义。

9. 放置网格项

每个网格项都有一个网格区域,即一组矩形的网格单元,该网格项占用。


7.3. 命名区域: grid-template-areas 属性
如果一个命名网格区域跨越多个网格单元,但这些单元不形成一个填充的矩形,则该声明无效。
注意:非矩形或不连通的区域可能在此模块的未来版本中被允许。

因此,可预见的未来不可能出现类似俄罗斯方块形状的网格区域,这会使您的布局简单易懂。

要让文本环绕图像,请使用经典的float属性。毕竟,这正是它被设计用来做的。

如果您考虑在弹性或网格容器内部使用float,那么它将无法工作。在flex formatting contextgrid formatting context中都会忽略浮动。


谢谢,这真的有助于我澄清我的理解!我正在尝试弄清楚如果边框图像可以与元素的形状“俄罗斯方块”一样,并且像这样浮动元素是否可行? - Steven Ellen Starar
这带来了另一个问题。您应该发布一个新的问题,重点关注边框图像和浮动,以便它能够得到充分的关注。 - Michael Benjamin
1
这个答案现在仍然相关吗?我猜是的... - Shahin Dohan
1
这个答案现在还相关吗?我猜是的... - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接