首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flex-grow在列布局中不工作

flex-grow在列布局中不工作
EN

Stack Overflow用户
提问于 2016-02-08 06:11:02
回答 1查看 19.9K关注 0票数 17

我正在尝试让views-cntnr占用views-cntnrmenubar div没有使用的任何空间。为了实现这一点,我将flex display设置为列方向。然后,我将views-cntnrflex-grow属性设置为1。似乎没有做任何事情。JSFiddle

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

HTML

代码语言:javascript
复制
<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

代码语言:javascript
复制
.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 */
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 06:46:27

代码中的所有内容都运行得很好。

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

flex-grow属性分配容器中的可用空间。由于您的容器中没有空闲空间,flex-grow将无能为力。

尝试对您的CSS进行以下调整:

代码语言:javascript
复制
.analysis {
    display: flex;
    flex-direction: column;
    height: 100vh;
}

这将告诉flex容器是视口的高度。现在容器的高度高于内容的高度,您将注意到flex-grow正在执行其工作。

Revised Fiddle

Learn more about the height: auto default on most elements

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35259772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档