Flexbox, min-высота и IE11
Я пытаюсь сделать простой дизайн с flexbox, но у меня проблемы с IE11. В принципе, я хочу нижний колонтитул, который прилипает к нижней части, только если контент недостаточно высок. У меня нет проблем с Chrome, как это:
*,
*:after,
*:before {
box-sizing: border-box;
}
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
body {
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
<header>
Header
</header>
<main>
<p>Main</p>
<p>Main</p>
<p>Main</p>
<p>Main</p>
<p>Main</p>
</main>
<footer>
Footer
</footer>
просто играть с номером <p>main</p>
чтобы увидеть неправильное поведение с IE11.
есть ли способ достичь этого без JavaScript?
3 ответов
IE имеет min-height
ошибки и должен display: flex
на родительском контейнере flex column containers, в этом случае html
обновите свой CSS следующим образом
*,
*:after,
*:before {
box-sizing: border-box;
}
html, body {
margin: 0;
display: flex;
}
body {
flex-direction: column;
min-height: 100vh;
}
main {
flex-grow: 1;
}
<header>
Header
</header>
<main>
<p>Main</p>
<p>Main</p>
<p>Main</p>
<p>Main</p>
<p>Main</p>
</main>
<footer>
Footer
</footer>
On main
, вместо flex: 1
использовать flex: auto
. Это все, что тебе нужно.
на flex: 1
правило стенографии разбивается на:
flex-grow: 1
flex-shrink: 1
flex-basis: 0
на flex: auto
правило стенографии разбивается на:
flex-grow: 1
flex-shrink: 1
flex-basis: auto
IE имеет проблемы с разбором flex-basis: 0
.
дополнительная информация:
оцените, что это старый поток, но только что подошел к решению, которое действительно помогло мне (может быть не применимо во всех случаях), добавив произвольную фиксированную высоту в пикселях - минимальная высота переопределяет фиксированную высоту, поэтому нет обрезанного содержимого. Вот пример CSS:
.fullheight {
min-height: 100vh;
height: 200px; /*IE 11 flexbox min-height fix*/
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
align-content: center;
}