html – 当flex-direction为’column’时,CSS flex-basis不起作用

我的目标是使用flexBox创建一个两列布局,其中第一列有两行,第二列有一行,如下所示:

设置灵活基础:第三个项目的100%给出了所需的效果,但只有当容器的弹性方向为行时:

将flex-direction更改为列会导致以下内容,除非高度被明确设置,这在我的项目中是不可行的:

如何获取第一个图像而不显式设置容器的高度?

Here’s a Plunker illustrating the problem.

body {
  display: flex;
  height: 100px;
  width: 100px;
}
.container {
  display: flex;
  flex-direction: column; /* Setting this to `row` gives the expected effect,but rotated */
  flex-grow: 1;
  flex-wrap: wrap;
  /* height: 100%; */ /* Setting this fixes the problem,but is infeasible for my project*/
}
.item {
  flex-grow: 1;
}
.one {
  background-color: red;
}
.two {
  background-color: blue;
}
.three {
  background-color: green;
  flex-basis: 100%;
}
<div class="container">
  <div class="item one">&nbsp;</div>
  <div class="item two">&nbsp;</div>
  <div class="item three">&nbsp;</div>
</div>

解决方法

为什么它不起作用

Flex包装只有当Flex项目的初始主要大小溢出了Flex容器时才会发生.在flex-direction:row的情况下,这是当它们的flex项目比容器宽.使用flex-direction:column,它们必须溢出容器的高度.

但是在CSS中,高度与宽度基本不同. CSS中的容器的高度由其孩子的高度确定.因此,没有限制容器高度的东西,它们的挠曲物品永远不会溢出;他们只是使他们的容器更高.如果不溢出,就不会包装.

可能的解决方案:

你必须约束容器的高度.显而易见的方式(你说的是桌子),设置一个显式的高度或最大高度.

问问自己为什么需要约束高度.是否留在视口内?您可以使用viewport-relative单位,并设置像max-height:100vh.是否等于此Flex容器外的另一列的高度?您可能可以用另一个flexBox限制它.将此flex容器设置为外部flexBox中的flex项目.然而,外部的flexBox中的其他东西必须建立它的高度.

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在&#39;&#39;,则表示换行,用&#39;&#39;切割。
代码实现 option = { backgroundColor: &amp;#39;#080b30&amp;#39;, tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...