Flexbox and Internet Explorer 11 (display:flex in <html>?)
According to http://caniuse.com/#feat=flexbox:
"IE10 and IE11 default values for flex
are 0 0 auto
rather than 0 1 auto
, as per the draft spec, as of September 2013"
So in plain words, if somewhere in your CSS you have something like this: flex:1
, that is not translated the same way in all browsers. Try changing it to 1 0 0
and I believe you will immediately see that it -kinda- works.
The problem is that this solution will probably mess up firefox, but then you can use some hacks to target only Mozilla and change it back:
@-moz-document url-prefix() {
#flexible-content{
flex: 1;
}
}
Since flexbox
is a W3C Candidate and not official, browsers tend to give different results, but I guess that will change in the immediate future.
If someone has a better answer I would like to know!
Use another flex container to fix the min-height
issue in IE10 and IE11:
HTML
<div class="ie-fixMinHeight">
<div id="page">
<div id="header"></div>
<div id="content"></div>
<div id="footer"></div>
</div>
</div>
CSS
.ie-fixMinHeight {
display:flex;
}
#page {
min-height:100vh;
width:100%;
display:flex;
flex-direction:column;
}
#content {
flex-grow:1;
}
See a working demo.
- Don't use flexbox layout directly on
body
because it screws up elements inserted via jQuery plugins (autocomplete, popup, etc.). - Don't use
height:100%
orheight:100vh
on your container because the footer will stick at the bottom of window and won't adapt to long content. - Use
flex-grow:1
rather thanflex:1
cause IE10 and IE11 default values forflex
are0 0 auto
and not0 1 auto
.