首页 > 解决方案 > 这个布局可以用 Flexbox 完成吗

问题描述

两列左列拆分为两行

在此处输入图像描述

<div class="parent">
<div class="black"></div>
<div class="red"></div>
<div class="orange"></div>
</div>

这将是什么CSS?形状我挣扎flex-direction但无法弄清楚

标签: csslayoutflexbox

解决方案


这是我评论的几个选项:

一旦您将行和列放在一起而不仅仅是一个或另一个,那么网格似乎就是要使用的一个,除非您是关于砌体布局,然后是砌体脚本或列 CSS。部分损坏的布局也可以完成这项工作。你能澄清一下黑色和红色的高度吗?黑色总是更高还是不高?布局是否必须拉伸并填充两列?等等...每种方法的行为都会有所不同,但是 flex 可以将其复制到像素上..这可能不是您所需要的;)

一个或另一个可以满足您的需求,重要的是当真实内容将填充这些框时您最终期望发生的事情;)

* {
  margin: 0;
}

body>div {
  margin: 0.25em;
}

.parent {
  vertical-align: top;
  display: inline-grid;
  grid-template-columns: 219px 259px;
  min-height: 304px;
  border: solid white 18px;
}

.orange {
  grid-row: 1 / span 2;
  grid-column: 2;
}

.red {
  grid-column: 1;
  min-height: 84px;
}

.parent.bis {
  display: inline-table;
  width: 478px;
  border-collapse: collapse;
}

.parent.bis .orange {
  display: table-cell;
  width: 259px;
}

.parent.ter {
  display: inline-flex;
  flex-direction: column;
  flex-wrap: wrap;
  height: 304px;
  width: 478px;
}

.parent.ter .orange,
.column2 .orange {
  width: 259px;
  height: 304px;
}

.column2 {
  column-count: 2;
  width: 478px;
  gap: 0;
  column-gap: 0px;
  border: solid white 18px;
}

.orange {
  background: #e09234;
  min-height: 100%;
}

.red {
  background: #df270d;
  grid-column: 1;
  width: 219px;
}

.black {
  background: #030202;
  min-height: 219px;
  width: 220px;
}

body {
  background: #444;
  margin: 0;
  padding: 1em;
}
<div class="parent">
  <div class="black"></div>
  <div class="red"></div>
  <div class="orange"></div>
</div>
<div class="parent bis">
  <div class="black"></div>
  <div class="red"></div>
  <div class="orange"></div>
</div>


<div class="parent ter ">
  <div class="black"></div>
  <div class="red"></div>
  <div class="orange"></div>
</div>


<div class="column2">
  <div class="black"></div>
  <div class="red"></div>
  <div class="orange"></div>
</div>


推荐阅读