При использовании flex-direction: column
в IE11 вам необходимо установить height
для этого элемента, потому что IE имеет проблемы с настройкой высоты в этом сценарии (даже если вы определили min-height
).Если вы дадите своему телу height: 100vh
, это должно исправить это.
Если вы не хотите, чтобы нижний колонтитул всегда был виден снизу, вы захотите обернуть всеваши элементы в div и установите текущие body
flex стили на это.Таким образом, вы сможете использовать min-height
на body
и все же добавить определенный height: 100%
в свой раздел оболочки приложения.
Посетите этот сайт для получения более подробной информации обо всех ошибках flex: https://github.com/philipwalton/flexbugs#flexbug-3
Вот пример фрагмента в самой простой форме.Как правило, я не помещал гибкие макеты непосредственно в элементы HTML или body.Не уверен, если это вызывает проблемы или нет.Самым большим отличием от вашей структуры является то, что я использую .app
, чтобы обернуть все, включая нижний колонтитул, чтобы я мог применить к нему гибкий стиль, и использую .main
в качестве гибкого элемента, который сдвигает нижний колонтитул вниз.
html,body {
height: 100vh;
margin: 0;
}
.app {
display: flex;
flex-direction: column;
height: 100%;
}
header,
footer {
flex: 0 0 auto;
}
.main {
flex: 1 1 auto;
}
/* presentation only */
header,
footer {
background: salmon;
padding: 12px;
}
.main {
background: lightgray;
padding: 12px;
}
<div class="app">
<header> header</header>
<div class="main"> main </div>
<footer>footer</footer>
</div>