html flex 组件未组合在 flex : 1 0 auto layout

标签 html css flexbox bootstrap-4

我使用以下 HTML 构建了一个着陆页。

我也有carefully constructed a bootply ,准确显示了粉红色 div 如何扩展得太远,没有按预期覆盖屏幕。

https://www.bootply.com/bYlAS71OWw

我有一个粉红色区域,它应该调整大小以占用填充浏览器的可用空间,但不会创建滚动条。

面包屑和标题似乎没有从使用的整体区域中减去。

  • headingcol 中,并且是 flex,
  • .breadcrumb 是 flex 的。

页面为标题和面包屑的组合高度创建滚动条。

<app-dashboard>
  <div class="app-body">

    <main class="main">
      <ol class="breadcrumb">
        <li class="breadcrumb-item">
          <a href="#/">Home</a>

        </li>
        <li class="breadcrumb-item active">
          <span tabindex="0">Property Locations</span>
        </li>    
      </ol>

      <div class="container-fluid d-flex h-100">
        <router-outlet></router-outlet>
        <ng-component class="d-flex flex-grow w-100">
          <div class="row w-100">
            <div class="col">
               HEADING    
            </div>
            <div class="d-flex flex-grow bg-pink-300 h-100 w-100">
              THIS SHOULD GROW, BUT NOT CREATE A SCROLLBAR
            </div>
          </div>
        </ng-component>
      </div>
    </main>

  </div>
  <footer class="app-footer">
    <span>
      <a href="..."></a>Pander.</span>
    <span>
      <i class="fa fa-fw fa-code-fork"></i>
    </span>
  </footer>
</app-dashboard>

flex-grow 的 CSS 是:

.flex-grow {
  flex: 1 0 auto;
}

最佳答案

请简化示例(例如删除自定义标签)。我只粗略地了解您要实现的目标,但首先要了解一些事情:

  1. 增长和收缩的是 flex 元素,而不是 flex 容器。当一个元素的直接父元素是一个 flex 容器时,它才会成为一个 flex 元素。您带有 bg-pink-300 的 div 不是 flex 元素,因为它的直接父级只是一个
  2. 您似乎想使用 flexbox 让您的 div 自动填充可用的垂直空间。但是您所有的 flex 容器都是水平容器,因此在垂直方向上您实际上只依赖于百分比高度。

一般来说,你的主容器应该是一个垂直的 flexbox,它定义了不应该溢出的总垂直空间。你的面包屑、标题和粉红色的 div 都作为 flex 元素进入这个容器。 Breadcrumb 和 header 不需要增长或收缩,它们应该有 flex: none。粉红色的 div 可以定义为具有 flex: 1 1 0 以便它在面包屑和标题被削减后增长和收缩以吸收主容器内的任何空间。

关于html flex 组件未组合在 flex : 1 0 auto layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49933946/

相关文章:

javascript - 如何在整页图像 slider 中提供箭头键事件

javascript - 禁用调整固定 flex 的大小

html - 包装时有没有办法改变元素的顺序?

html - 属性inputmode : "obsolete since HTML5.2", 怎么替换呢?

javascript - 将 CSS3 过渡添加到 jQuery Animate 脚本

java - 如何通过提供 servlet 、 java 和 html 代码将印地语文本打印到网页中

html - 直接声明元素的 (min-/max-)width/height 或使用 100% 并从外部继承

javascript - <div> 中的文本重叠

css - Firefox:flexbox 容器内的元素不保持纵横比

无法使用带点的相对路径加载 Javascript 文件