Я пытаюсь создать контейнер гибкой коробки из 3 столбцов. 3-х колонная часть работает. Но я хочу, чтобы они занимали всю доступную высоту, за исключением панели приложения.
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;
}
Я добавил 200 пикселей, чтобы показать эти столбцы на экране. Пробовал 100%, но ничего не показало.
И в части реакции js,
<div>
<HomeBar />
<div className = {'columnContainer'}>
<div className = {'leftContainer'}>
</div>
<div className = {'middleContainer'}>
</div>
<div className = {'rightContainer'}>
</div>
</div>
</div>
Нужна помощь :(
Отвечает ли это на ваш вопрос? Как заставить React Flexbox растянуться на всю высоту экрана






см. ответ Patelarpan, чтобы узнать, как это сделать
Вы должны установить высоту самого внешнего контейнера на 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>Вы можете добиться этого, используя единицы измерения «vh», и это более эффективный способ, чем использование процентов, потому что вам не нужно устанавливать высоту каждого родителя на 100%, если вы хотите, чтобы высота ребенка составляла 100%.
.columnContainer {
display: flex;
height: calc(100vh - 60px);
}
Вот пример исключения высоты панели приложения 60 пикселей из высоты области просмотра.
Но это вызовет проблемы с мобильными устройствами, где клавиатура заставляет реальный vh менять
Ваш ответ здесь, кажется, применим к этот вопрос тоже. Спасибо за лаконичное решение!
Проверьте мои ответы @Kim. Надеюсь, что это вам поможет :)