在 React js 中使 flexbox 容器高度为 100%

IT技术 html css reactjs flexbox
2022-07-16 01:00:00

我正在尝试创建一个 3 列的弹性盒容器。3列部分工作。但我希望他们采取完整的可用高度,不包括应用栏。

演示 SS

CSS

.columnContainer {
    display: flex;
    height: 100%;

}
.leftContainer {
    flex : 1;
    height: 200px;
    background-color: black;
}

.rightContainer {
    flex : 1;
    height: 200px;
    background-color: blue;
}

.middleContainer {
    flex : 3;
    height: 200px;
    background-color: green;
}

我添加了 200px 只是为了在屏幕上显示这些列。尝试了 100%,但它没有显示任何内容。

在 react js 部分,

<div>
        <HomeBar />
        <div className={'columnContainer'}>
            <div className={'leftContainer'}>

            </div>
            <div className={'middleContainer'}>

            </div>
            <div className={'rightContainer'}>

            </div>
        </div>
      </div>

需要帮忙 :(

2个回答

您可以通过使用“vh”单位来实现这一点,这是一种比使用百分比更有效的方法,因为如果您希望孩子的身高为 100%,则不需要将每个父母的身高设置为 100%。

 .columnContainer { 
   display: flex; 
   height: calc(100vh - 60px);
}

这是从视口高度排除 60 像素应用栏高度的示例。

请参阅 patlarpan 的答案,了解一种简单的方法

您必须将最外层容器的高度设置为 100%。这是您的固定代码(基于您的小提琴

class TodoApp extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      items: [{
          text: "Learn JavaScript",
          done: false
        },
        {
          text: "Learn React",
          done: false
        },
        {
          text: "Play around in JSFiddle",
          done: true
        },
        {
          text: "Build something awesome",
          done: true
        }
      ]
    }
  }

  render() {
    return (
       <div className={'container'}>
        
        <div className={'columnContainer'}>
            <div className={'leftContainer'}>

            </div>
            <div className={'middleContainer'}>

            </div>
            <div className={'rightContainer'}>

            </div>
        </div>
      </div>
    )
  }
}

ReactDOM.render( < TodoApp / > , document.querySelector("#app"))
html,
body {
  height: 100%;
}

#app {
  height: 100%;
}

.container {
  height: 100%;
  margin: 0px;
  padding: 0px;
}

.columnContainer {
  display: flex;
  height: 100%;
}

.leftContainer {
  height: 100%;
  flex: 1;
  margin: 10px;
  background-color: black;
}

.rightContainer {
  flex: 1;
  margin: 10px;
  background-color: black;
  height: 100%;
}

.middleContainer {
  flex: 2;
  margin: 10px;
  background-color: black;
  height: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="app"></div>