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

前端之家收集整理的这篇文章主要介绍了html – flex-grow在列布局中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图让views-cntnr占用views-cntnr和menubar divs未使用的任何空间.为此,我将flex显示设置为列方向.然后我将views-cntnr的flex-grow属性设置为1.似乎没有做任何事情. JSFiddle

注意:不确定这是否重要,但我有一些嵌套的flex显示.

HTML

  1. <script src="https://code.jquery.com/jquery.min.js"></script>
  2. <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  3. <script src="https://code.jquery.com/jquery-2.1.4.js"></script>
  4. <script src="https://code.jquery.com/jquery-1.11.3.js"></script>
  5. <script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  6.  
  7. <section class="analysis">
  8. <div class="menubar">
  9. <div class="view-ctrls text-center">
  10. <div class="btn-group" role="group">
  11. <button class="btn btn-default" ng-class="{'active-view': active_views[0]}" ng-click="toggleView(0)">R-Theta</button>
  12. <button class="btn btn-default" ng-class="{'active-view': active_views[1]}" ng-click="toggleView(1)">Cartesian</button>
  13. <button class="btn btn-default" ng-class="{'active-view': active_views[2]}" ng-click="toggleView(2)">Longitudinal</button>
  14. <button class="btn btn-default" ng-class="{'active-view': active_views[3]}" ng-click="">Console</button>
  15. </div>
  16. </div>
  17. </div>
  18. <div id="views-cntnr">
  19. <div class="r1">
  20. <div id="v1" class="view">V1</div>
  21. <div id="v2" class="view">V2</div>
  22. <div id="v3" class="view">V3</div>
  23. </div>
  24. <div class="r2">
  25. <div id="v4" class="view">V4</div>
  26. </div>
  27. </div>
  28. <div id="frame-ctrl-cntnr">
  29. <div id="frame-num" class="frame-ctrl"># X</div>
  30. <div id="frame-range-cntnr" class="frame-ctrl">
  31. <input type="range">
  32. </div>
  33. </div>
  34. </section>

CSS

  1. .analysis {
  2. display: flex;
  3. flex-direction: column;
  4. }
  5.  
  6.  
  7. /* MENUBAR */
  8.  
  9. .menubar {
  10. padding: 4px 0 4px;
  11. background-color: #eee;
  12. }
  13.  
  14.  
  15. /* menubar */
  16.  
  17.  
  18. /* VIEWS */
  19.  
  20. #views-cntnr {
  21. display: flex;
  22. flex-direction: column;
  23. flex-grow: 1;
  24. }
  25.  
  26.  
  27. /* ROW 1 */
  28.  
  29. .r1 {
  30. display: flex;
  31. }
  32.  
  33. .r1 .view {
  34. flex-grow: 1;
  35. border: black 1px solid;
  36. border-right: none;
  37. }
  38.  
  39. .r1 .view:last-child {
  40. border-right: black 1px solid;
  41. }
  42. /* row 1 */
  43.  
  44. /* ROW 2 */
  45. .r2 .view {
  46. border: black 1px solid;
  47. border-top: none;
  48. }
  49.  
  50.  
  51. /* row 2 */
  52.  
  53.  
  54. /* views */
  55.  
  56.  
  57. /* FRAME CTRL */
  58.  
  59. #frame-ctrl-cntnr {
  60. display: flex;
  61. }
  62.  
  63. .frame-ctrl {
  64. border: black 1px solid;
  65. border-top: none;
  66. border-right: none;
  67. }
  68.  
  69. .frame-ctrl:last-child {
  70. border-right: black 1px solid;
  71. }
  72.  
  73. #frame-num {
  74. width: 50px;
  75. }
  76.  
  77. #frame-range-cntnr {
  78. flex-grow: 1;
  79. padding: 4px;
  80. }
  81.  
  82. /* frame ctrl */

解决方法

代码中的所有内容都运行良好.

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

flex-grow属性在容器中分配可用空间.由于容器中没有可用空间,flex-grow无关.

尝试对CSS进行此调整:

  1. .analysis {
  2. display: flex;
  3. flex-direction: column;
  4. height: 100vh;
  5. }

我们告诉flex容器是视口的高度.现在容器的高度高于内容的高度,你会注意到flex-grow正在进行工作.

Revised Fiddle

猜你在找的HTML相关文章