css - 固定定位的页脚,但也是 Flexbox 元素流的一部分

标签 css flexbox

我正在尝试使用 Flexbox,但遇到了以下文档结构的问题

<div class="parent">
  <div class="child A">
    <div class="top-section"></div>
    <ul class="main-section">
      <li></li>
      ...
    </ul>
  </div>
  <div class="child B">

  </div>
</div>

我希望 child B 始终固定在屏幕底部,并让 child A 填充 child B 上方的剩余空间>。

child A 中,top-section 应该始终位于顶部并具有固定的高度,main-section 应该填充剩余的高度child A 中的空间,并且可以在 y 轴上滚动。

我尝试过类似的方法

.parent {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  min-height: 100%;
}

.childA {
  flex: 4;
  width: 100%;
}

.childB {
  position   : absolute;
  bottom     : 0;
  min-height : 250px;
  max-height : 20%;
  width      : 100%;
}

.main-section {
  overflow-y : scroll;
}

虽然它正确地将 child B 固定到了底部,但它不再是元素流的一部分,因此,main-section 在它下面延伸并且是无法溢出。

非常感谢任何帮助

最佳答案

我做了这个 fiddle 来演示解决方案:http://jsfiddle.net/aequalsb/mL5gtsep/

它利用绝对定位来适本地设置 topbottom 属性,这样容器就可以在不依赖特定宽度和高度的情况下拉伸(stretch)到它们的极限。

尽管 CSS 最初使用 % 设置属性,但在 DOM 中,长度由浏览器计算,并可作为特定 px 长度提供给 javascript/jQuery——OP 然后可以使用它来执行鼠标拖动操作调整容器的大小。

关于css - 固定定位的页脚,但也是 Flexbox 元素流的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30284255/

相关文章:

html - 固定标题自动调整大小

angular - 如何使用 Angular Flex Layout 垂直居中?

html - 重新排列没有绝对位置的 flex 元素

html - 宽度窄时元素被挤压

javascript - 将鼠标悬停在父 div 上时同时更改图像和标题

javascript - 打开和关闭节点时更改jstree小三 Angular 形图标

html - 控制 flexbox 中的链接包装元素

css - 如何将 flex-start 元素居中对齐?

jquery - bootstrap select 在没有选择按钮的情况下仅在链接单击时显示下拉菜单

css - 在 font-awesome (v5) 图标周围添加边框