Bootstrap 4 使用 flex-grow 使嵌套的行填充父级填充视口高度
Posted
技术标签:
【中文标题】Bootstrap 4 使用 flex-grow 使嵌套的行填充父级填充视口高度【英文标题】:Bootstrap 4 make nested row fill parent that has been made to fill viewport height using flex-grow 【发布时间】:2018-08-02 07:38:09 【问题描述】:目前,我有一个 (class="d-flex flex-column") 包含一个导航栏和一个容器,并且这个容器包含一个 (class="d-flex flex-column") 以及包含两行.我使用 flex-grow 让我的容器填满页面。我希望在这个嵌套容器中创建第二行以再次使用 flex-grow 填充其父级,但它不起作用。如何在 Bootstrap v4 中使用 flex-grow 使嵌套元素增长以填充已填充视口高度的父元素?
我不应该结合 flex 和 container 来做我想做的事吗?如果是这样,我该怎么做?
当我执行以下操作时,当容器扩展以填充高度时,容器内的行只是保持相同的高度,它不会相应地扩展。
<div class="d-md-flex flex-column h-100">
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
<button class="btn btn-outline-warning mr-auto" type="submit">Back</button>
<button class="btn btn-outline-success" type="submit">Logout</button>
</nav>
<div class="container-fluid flex-grow">
<div class="row">
<div class="col-md-9">
<div class="row">
<div class="col-md-12">
<div class="btn-toolbar justify-content-between" id="label-toolbar">
<div class="btn-group">
<select class="form-control form-control-sm" id="label-option">
<option>Main</option>
<option>Unknown</option>
</select>
<button type="button" class="btn btn-outline-primary btn-sm" id="create-button">Create</button>
<button type="button" class="btn btn-outline-primary btn-sm" id="delete-button">Delete</button>
<button type="button" class="btn btn-outline-primary btn-sm" id="edit-button">Edit</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-outline-success btn-sm" id="previous-button">Previous</button>
<button type="button" class="btn btn-outline-success btn-sm" id="next-button">Next</button>
</div>
</div>
<div id="draw-area"></div>
</div>
</div>
</div>
<div class="col-md-3 label-sidebar"></div>
</div>
</div>
</div>
更新 使用@ZimSystem 代码时会出现以下错误。我该如何解决这个问题?
【问题讨论】:
@ZimSystem 发布了相关的sn-p @ZimSystem 我唯一使用的是 .flex-grow flex: 1 0 auto; ,其余的都是引导 css。我实际上是在问,当我有嵌套容器时,我应该怎么做,并且我想让所有嵌套部分填充它们的父级,并且父级填充视口高度 这两行在哪里?我在容器流体中只看到 1。你是说 col-md-9 里面的那一行? 工具栏和绘图区 【参考方案1】:我认为您只需要记住 flex-grow 适用于 display:flex
的子代,而不是父代。因此,如果父母也是孩子 flex-grow 将起作用。
.flex-fill
flex: 1 1 auto;
在你的情况下,<div class="container-fluid flex-fill"></div>
也应该是d-flex
,这样你就可以使用 flex-grow 让它的子级增长,然后继续到绘图区域。
https://codeply.com/go/gT3jsg43Lv
<div class="d-md-flex flex-column h-100">
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
<button class="btn btn-outline-warning mr-auto" type="submit">Back</button>
<button class="btn btn-outline-success" type="submit">Logout</button>
</nav>
<div class="container-fluid d-flex h-100">
<div class="row flex-grow">
<div class="col-md-9">
<div class="row h-100">
<div class="col-md-12 d-flex flex-column flex-grow">
<div class="btn-toolbar justify-content-between" id="label-toolbar">
<div class="btn-group">
<select class="form-control form-control-sm" id="label-option">
<option>Main</option>
<option>Unknown</option>
</select>
<button type="button" class="btn btn-outline-primary btn-sm" id="create-button">Create</button>
<button type="button" class="btn btn-outline-primary btn-sm" id="delete-button">Delete</button>
<button type="button" class="btn btn-outline-primary btn-sm" id="edit-button">Edit</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-outline-success btn-sm" id="previous-button">Previous</button>
<button type="button" class="btn btn-outline-success btn-sm" id="next-button">Next</button>
</div>
</div>
<div id="draw-area" class="flex-grow bg-warning"> draw area </div>
</div>
</div>
</div>
<div class="col-md-3 label-sidebar"></div>
</div>
</div>
</div>
注意: flex-fill 实用程序类将包含在下一个 Bootstrap 4.1 版本中:https://github.com/twbs/bootstrap/commit/2137d61eacbd962ea41e16a492da8b1d1597d3d9
这是另一个带有可滚动右列和顶部导航栏的示例: https://codeply.com/p/93751rK5WQ
相关Bootstrap 4.0 - responsive header with image + navbar + full-height bodyHow to make the row stretch remaining height
【讨论】:
非常感谢!知道为什么会出现上述错误(发布了新图片,稍后将删除),即导航栏没有拉伸吗?以上是关于Bootstrap 4 使用 flex-grow 使嵌套的行填充父级填充视口高度的主要内容,如果未能解决你的问题,请参考以下文章
bootStrap4下d-flexflex-grow-1 无法获取理想宽度的解决方法!