Изготовление контейнера flexbox высотой 100% в реактивном режиме - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь создать контейнер flex-box из 3 столбцов.3 колонки часть работ.Но я хочу, чтобы они приняли полную доступную высоту, исключая панель приложения.

Demo 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;
}

Я добавил 200 пикселей только для отображения этих столбцов на экране.Перепробовал 100%, но ничего не показывалось.

И в ответной части,

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

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

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

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

Нужна помощь: (

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы можете достичь этого, используя vh единицу, и это более эффективный способ, чем %, потому что вам не нужно устанавливать для каждого родителя высоту 100%, если вы хотите, чтобы дочерний рост составлял 100%.

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

здесь 60px высота панели приложения исключена из высоты области просмотра

0 голосов
/ 19 мая 2018

см. Ответ Пателарпана о простом способе сделать это

Вы должны установить высоту внешнего контейнера на 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...