当前位置: 首页 > 面试题库 >

flex-grow在列布局中不起作用

慕容聪
2023-03-14
问题内容

我正在尝试views-cntnr占用views-cntnrmenubardiv未使用的任何空间。为此,我将flex显示设置为列方向。然后,我将flex-grow属性设置views-cntnr为1。似乎没有做任何事情。

注意:不确定这是否重要,但是我正在进行一些嵌套的flex显示。

HTML

<script src="https://code.jquery.com/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

<section class="analysis">
  <div class="menubar">
    <div class="view-ctrls text-center">
      <div class="btn-group" role="group">
        <button class="btn btn-default" ng-class="{'active-view': active_views[0]}" ng-click="toggleView(0)">R-Theta</button>
        <button class="btn btn-default" ng-class="{'active-view': active_views[1]}" ng-click="toggleView(1)">Cartesian</button>
        <button class="btn btn-default" ng-class="{'active-view': active_views[2]}" ng-click="toggleView(2)">Longitudinal</button>
        <button class="btn btn-default" ng-class="{'active-view': active_views[3]}" ng-click="">Console</button>
      </div>
    </div>
  </div>
  <div id="views-cntnr">
    <div class="r1">
      <div id="v1" class="view">V1</div>
      <div id="v2" class="view">V2</div>
      <div id="v3" class="view">V3</div>
    </div>
    <div class="r2">
      <div id="v4" class="view">V4</div>
    </div>
  </div>
  <div id="frame-ctrl-cntnr">
    <div id="frame-num" class="frame-ctrl"># X</div>
    <div id="frame-range-cntnr" class="frame-ctrl">
      <input type="range">
    </div>
  </div>
</section>

CSS

.analysis {
  display: flex;
  flex-direction: column;
}


/* MENUBAR */

.menubar {
  padding: 4px 0 4px;
  background-color: #eee;
}


/* menubar */


/* VIEWS */

#views-cntnr {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}


/* ROW 1 */

.r1 {
  display: flex;
}

.r1 .view {
  flex-grow: 1;
  border: black 1px solid;
  border-right: none;
}

.r1 .view:last-child {
  border-right: black 1px solid;
}
/* row 1 */

/* ROW 2 */
.r2 .view {
  border: black 1px solid;
  border-top: none;
}


/* row 2 */


/* views */


/* FRAME CTRL */

#frame-ctrl-cntnr {
  display: flex;
}

.frame-ctrl {
  border: black 1px solid;
  border-top: none;
  border-right: none;
}

.frame-ctrl:last-child {
  border-right: black 1px solid;
}

#frame-num {
 width: 50px;
}

#frame-range-cntnr {
  flex-grow: 1;
  padding: 4px;
}

/* frame ctrl */

问题答案:

您代码中的所有内容都可以正常工作。

唯一的问题是 您的flex容器没有指定的高度 。因此,高度解析auto,表示内容的高度。

flex-grow属性在容器中分配 可用 空间。容器中没有可用空间,flex-grow因此无关。

尝试对CSS进行此调整:

.analysis {
    display: flex;
    flex-direction: column;
    height: 100vh;
}

这告诉flex容器是视口的高度。现在,容器的高度比内容容器的高度高,您会注意到flex-grow它正在工作。



 类似资料:
  • WeUI提供了快速的 flex 布局 示例代码 <template> <div class="page"> <div class="page__bd page__bd_spacing"> <div class="weui-flex"> <div class="weui-flex__item"> <div class="placeholde

  • 参考 Flex 布局教程:语法篇

  • 我有这样的布局: 我试图将其用于我的索引页面,如下所示: 但它就是不起作用,引导和css文件没有被索引页使用,页脚和页眉也没有。我使用thymeleaf布局方言2.2.2我缺少什么?

  • Flex是Flexible Box的缩写,意为“弹性布局”,2009年它由W3C提出了一种新的网页布局方案。QAP也支持flex布局。目前flex支持的容器属性有:flexDirection、flexWrap、justifyContent、alignItems、width和height等属性。 flexDirection flexDirection属性决定了主轴的方向,它有两个值(不支持row-r

  • 我很难让Chrome注意到布局中的flex-basis部分。它在布局中运行良好。 下面的代码片段演示了这个问题:黄色、蓝色和粉红色的条是基于flex的50px、25%和75%,显示在列和行flex方向上。 如果您在Firefox(或IE11或Edge)中运行,那么列和行都按预期划分区域: 左和右之间的唯一区别是。 我尝试将添加到中,这使Chrome注意到flex的基础,但却引起了一个不同的问题--

  • 我有4个盒子,它是一个标准的2列2行盒子。不幸的是我必须提供ie支持。在internet explorer中,flex wrap不起作用,所以所有的框都在一排,看起来很乱。有没有一种可以替代柔性包装的方法呢?代码非常基本,在所有浏览器中都能工作,但在IE中不行。