Mon site Web est complètement cassé dans IE11. Le problème vient de flex: 1 1 0%;
, que j'utilise partout grâce à autoprefixer et postcss-flexbugs-fixes .
Le site fonctionne sur IE lorsque je le change en flex: 1 1 auto;
, mais certains comportements changent (par exemple, un flexbox avec deux flex: 1 1 auto;
enfants qui ne prennent pas exactement le même espace). Par conséquent, cette solution casse mes conceptions sur d'autres navigateurs (tout en la rendant beaucoup plus agréable - pas cassée - sur IE11).
Comment les gens parviennent-ils à faire construire leurs sites avec Flexbox fonctionne sur IE11?
Edit: voici un stylo qui met en évidence le problème auquel je suis confronté: https://codepen.io/Zephir77167/pen/GMjBrd (essayez-le sur Chrome et IE11) ).
Edit2: voici le code:
HTML:
<div id="a" class="flex">
<div id="b" class="item flex-1">
Hey
</div>
<div id="c" class="item flex-0">
Ho
</div>
<div id="d" class="item flex-1">
Heyheyheyheyho
</div>
</div>
<br />
<div id="a" class="flex">
<div id="b" class="item flex-1-variation">
Hey
</div>
<div id="c" class="item flex-0">
Ho
</div>
<div id="d" class="item flex-1-variation">
Heyheyheyheyho
</div>
</div>
CSS:
* {
box-sizing: border-box;
}
#a {
background-color: pink;
height: 300px;
width: 100px;
}
#b {
background-color: green;
height: 50px;
}
#c {
background-color: blue;
height: 100px;
}
#d {
background-color: yellow;
height: 150px;
}
.flex {
display: flex;
flex-direction: row;
align-items: center;
flex-wrap: wrap;
}
.item.flex-0 {
flex: none;
}
.item.flex-1 {
flex: 1 1 0%;
}
.item.flex-1-variation {
flex: 1 1 auto;
}
En ce qui concerne IE11, vous pouvez le cibler explicitement en utilisant cette règle CSS:
_:-ms-fullscreen, :root .IE11-only-class {
/* IE11 specific properties */
}
Extrait de pile
* {
box-sizing: border-box;
}
#a {
background-color: pink;
height: 300px;
width: 100px;
}
#b {
background-color: green;
height: 50px;
}
#c {
background-color: blue;
height: 100px;
}
#d {
background-color: yellow;
height: 150px;
}
.flex {
display: flex;
flex-direction: row;
align-items: center;
flex-wrap: wrap;
}
.item.flex-0 {
flex: none;
}
.item.flex-1 {
flex: 1 1 0%;
}
_:-ms-fullscreen, :root .IE-FlexAuto {
flex-basis: auto;
}
<div id="a" class="flex">
<div id="b" class="item flex-1 IE-FlexAuto">
Hey
</div>
<div id="c" class="item flex-0">
Ho
</div>
<div id="d" class="item flex-1 IE-FlexAuto">
Heyheyheyheyho
</div>
</div>
Voici un article avec une de mes réponses, qui en parle un peu plus, et fournit également des solutions de script qui pourraient être utiles