Je prévois de m'éloigner des mises en page «flottantes» et d'utiliser CSS flexbox pour de futurs projets. J'ai été ravi de voir que tous les principaux navigateurs dans leurs versions actuelles semblent prendre en charge (d'une manière ou d'une autre) flexbox.
Je me suis dirigé vers "Résolu par Flexbox" pour regarder quelques exemples. Cependant, l'exemple "Sticky Footer" ne semble pas fonctionner dans Internet Explorer 11. J'ai joué un peu et je l'ai fait fonctionner en ajoutant display:flex
au <html>
et width:100%
au<body>
Ma première question est donc la suivante: quelqu'un peut-il m'expliquer cette logique? J'ai juste bidouillé et ça a marché, mais je ne comprends pas très bien pourquoi ça a fonctionné de cette façon ...
Ensuite, il y a l'exemple "Media Object" qui fonctionne dans tous les navigateurs à l'exception - vous l'avez deviné - d'Internet Explorer. J'ai bidouillé avec ça aussi, mais sans succès.
Ma deuxième question est donc la suivante: y a-t-il une possibilité "propre" de faire fonctionner l'exemple "Media Object" dans Internet Explorer?
la source
Réponses:
Selon http://caniuse.com/#feat=flexbox :
"Les valeurs par défaut pour IE10 et IE11
flex
sont0 0 auto
plutôt que0 1 auto
, selon le projet de spécification, à partir de septembre 2013"Donc, en termes simples, si quelque part dans votre CSS vous avez quelque chose comme ceci:,
flex:1
cela n'est pas traduit de la même manière dans tous les navigateurs. Essayez de le changer en1 0 0
et je crois que vous verrez immédiatement que cela fonctionne.Le problème est que cette solution va probablement gâcher Firefox, mais vous pouvez ensuite utiliser des hacks pour cibler uniquement Mozilla et le modifier:
Comme il
flexbox
s'agit d'un candidat au W3C et non officiel, les navigateurs ont tendance à donner des résultats différents, mais je suppose que cela changera dans un avenir immédiat.Si quelqu'un a une meilleure réponse, j'aimerais savoir!
la source
-ms-flex: 1 0 0;
et IE11flex: 1 0 0;
..?flex: 1 0 0;
. Maisflex: 1 0 0%;
( notez le % ) ouflex: 1 0 auto;
fonctionnera.flex: 1;
Je suppose que cela dépend de ce que vous recherchez, cependant ...flex-basis
. Github a une bonne discussion sur les raisons pour lesquellesflex:1 0 100%
fonctionne dans certains cas pour IE11 tandis queflex: 1 0 0%
ou mêmeflex: 1 0 auto
fonctionne dans d'autres. Vous devez connaître le contenu à l'avance.Utilisez un autre conteneur flex pour résoudre le
min-height
problème dans IE10 et IE11:HTML
CSS
Voir une démo fonctionnelle .
body
car elle des éléments insérés via des plugins jQuery (saisie semi-automatique, popup, etc.).height:100%
ouheight:100vh
sur votre conteneur car le pied de page restera en bas de la fenêtre et ne s'adaptera pas au contenu long.flex-grow:1
plutôt que deflex:1
causer les valeurs par défaut IE10 et IE11 pourflex
sont0 0 auto
et non0 1 auto
.la source
flex-direction: column
à.ie-fixMinHeight
éviter les effets secondaires. Si vous n'avez pas de code HTML spécifique à IE, vous pouvez utiliser.fixMinHeight { display: -ms-flexbox; -ms-flex-direction: column; }
height
vsmin-height
était la clé.Vous avez juste besoin
flex:1
; Cela résoudra le problème pour l'IE11. Je seconde Odisseas. Attribuez également une hauteur de 100% aux éléments html, body .Modifications CSS:
URL de travail: http://jsfiddle.net/3tpuryso/13/
la source
display: flex;
styles et associés doivent être appliqués à la fois aubody
conteneur et: jsfiddle.net/Skateside/nezdrrkrmain
cesse de croître correctement (en chrome, au moins); si vous ajoutez suffisamment de contenu, il dépassera le pied de page. jsfiddle.net/3tpuryso/65html
à lamin-height: 100%
place, pour suivre votre contenuVoici un exemple d'utilisation de flex qui fonctionne également dans Internet Explorer 11 et Chrome.
HTML
la source
Html
.Parfois, c'est aussi simple que d'ajouter: '-ms-' devant le style Comme -ms-flex-flow: row wrap; pour le faire fonctionner aussi.
la source