我正在尝试views-cntnr占用views-cntnr和menubardiv未使用的任何空间。为此,我将flex显示设置为列方向。然后,我将flex-grow属性设置views-cntnr为1。似乎没有做任何事情。
views-cntnr
menubar
flex-grow
注意:不确定这是否重要,但是我正在进行一些嵌套的flex显示。
<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>
.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,表示内容的高度。
auto
该flex-grow属性在容器中分配 可用 空间。容器中没有可用空间,flex-grow因此无关。
尝试对CSS进行此调整:
.analysis { display: flex; flex-direction: column; height: 100vh; }
这告诉flex容器是视口的高度。现在,容器的高度比内容容器的高度高,您会注意到flex-grow它正在工作。