如何在不给定高度的情况下使内容在弹性框中可滚动?

Posted

技术标签:

【中文标题】如何在不给定高度的情况下使内容在弹性框中可滚动?【英文标题】:How to make content scrollable inside a flex box without given the height? 【发布时间】:2021-04-05 22:43:02 【问题描述】:

我正在尝试在列 flexbox 内创建一个带有页脚的 flex 行拆分面板。但是,我发现除非我通过编码height: calc(100% - FooterHeight) 来限制容器的高度,否则我无法使内容可滚动。有谁知道实现这一目标的替代方法?

提前致谢!

Sandbox URL

我的代码:

import React from "react";
import "./styles.css";

const lefts = new Array(15).fill("Left");
const rights = new Array(15).fill("Right");

export default function App() 
  return (
    <div className="height">
      <div className="column">
        <div className="row">
          <div className="row-left">
            lefts.map((left, index) => 
              return (
                <div key=index className="item">
                  left + index
                </div>
              );
            )
          </div>
          <div className="row-right">
            rights.map((right, index) => 
              return (
                <div key=index className="item">
                  right + index
                </div>
              );
            )
          </div>
        </div>
        <div className="footer">Footer</div>
      </div>
    </div>
  );


我的 CSS:

.height 
  height: 600px;
  width: 600px;
  background-color: gray;
  display: flex;
  flex-direction: column;


.column 
  flex: 1;
  display: flex;
  flex-direction: column;
  height: 100%;


.row 
  flex: 1;
  display: flex;
  height: calc(100% - 60px); // not preferred


.row-left 
  width: 200px;
  border: 1px solid red;
  overflow: auto;


.row-right 
  flex: 1;
  border: 1px solid peru;
  overflow: auto;


.item 
  padding: 16px;


.footer 
  flex-shrink: 0;
  height: 60px;
  border: 1px solid blue;

【问题讨论】:

【参考方案1】:

您需要将 height 替换为 overflow: hidden 以获得 .row

.row 
  flex: 1;
  display: flex;
  overflow: hidden;

这是您的 Codesandbox 的分支: https://codesandbox.io/s/fast-wood-1wxii

【讨论】:

以上是关于如何在不给定高度的情况下使内容在弹性框中可滚动?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不滚动的情况下使此页眉和页脚可见?

如何在不单击下一个单元格且不调整单元格高度的情况下使 UITableViewCell 中的下拉菜单可点击?

如何在没有固定高度的情况下使动态div溢出

如何在不重复自己的情况下使该算法更懒惰?

如何在不影响其兄弟位置的情况下将 div 绝对定位在弹性框中? [复制]

CSS Flex Box:如何在不丢失弹性项目高度的情况下将“弹性项目”垂直对齐到中间?