J'ai une page Web simple avec du contenu Lipsum centré sur la page. La page fonctionne bien dans Chrome et Firefox. Si je réduis la taille de la fenêtre, le contenu remplit la fenêtre jusqu'à ce qu'il ne puisse pas, puis ajoute une barre de défilement et remplit le contenu hors de l'écran, vers le bas.
Cependant, la page n'est pas centrée dans IE11. Je peux centrer la page dans IE en fléchissant le corps, mais si je le fais, le contenu commence à sortir de l'écran vers le haut et coupe le haut du contenu.
Voici les deux scénarios. Voir les Fiddles associés. Si le problème n'est pas évident tout de suite, réduisez la taille de la fenêtre de résultats afin qu'elle soit obligée de générer une barre de défilement.
Remarque: cette application ne cible que les dernières versions de Firefox, Chrome et IE (IE11), qui prennent toutes en charge la recommandation candidate de Flexbox , la compatibilité des fonctionnalités ne devrait donc pas être un problème (en théorie).
Modifier : lorsque vous utilisez l'API Plein écran pour plein écran sur le div externe, tous les navigateurs centrent correctement en utilisant le CSS d'origine. Cependant, en quittant le mode plein écran, IE revient à être centré horizontalement et aligné verticalement en haut.
Edit : IE11 utilise une implémentation spécifique non-fournisseur de Flexbox. Mises à jour de la disposition de la boîte flexible («Flexbox»)
Centre et redimensionne correctement dans Chrome / FF, ne centre pas mais redimensionne correctement dans IE11
Violon: http://jsfiddle.net/Dragonseer/3D6vw/
html, body
{
height: 100%;
width: 100%;
}
body
{
margin: 0;
}
.outer
{
min-width: 100%;
min-height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.inner
{
width: 80%;
}
Centre correctement partout, coupe le haut lorsqu'il est redimensionné
Violon: http://jsfiddle.net/Dragonseer/5CxAy/
html, body
{
height: 100%;
width: 100%;
}
body
{
margin: 0;
display: flex;
}
.outer
{
min-width: 100%;
min-height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.inner
{
width: 80%;
}
la source
-ms-flexbox
pour IE ..Réponses:
J'ai trouvé que le navigateur avait des problèmes pour aligner verticalement les conteneurs intérieurs, lorsque seul le style de hauteur minimale est défini ou lorsque le style de hauteur est absent du tout. Ce que j'ai fait, c'est d'ajouter un style de hauteur avec une certaine valeur et cela résout le problème pour moi.
par exemple :
Nous avons donc maintenant un style de hauteur, mais la hauteur min l'écrasera. De cette façon, c'est heureux et nous pouvons toujours utiliser min-height.
J'espère que cela est utile pour quelqu'un.
la source
-ms-flex-align:center;
pour IE10. La prise en charge de aalign-items
été ajoutée uniquement dans IE11 .min-height
remplace effectivement laheight
règle, mais si le contenu dépasse le,min-height
il s'étendra simplement en dehors des limites. La réponse de @ericodes résout ce problème et la solution fonctionne sur tous les navigateurs prenant en charge flex.Essayez d'emballer tout div avec lequel vous avez flexboxed
flex-direction: column
dans un conteneur qui est également flexbox.Je viens de tester cela dans IE11 et cela fonctionne. Un correctif étrange, mais jusqu'à ce que Microsoft rende sa correction de bogue interne externe ... il faudra le faire!
HTML:
CSS:
2 exemples à tester dans IE11: http://codepen.io/philipwalton/pen/JdvdJE http://codepen.io/chriswrightdesign/pen/emQNGZ/
la source
min-height
au lieu d'uneheight
règle stricte, tout en se centrant verticalement sur tous les navigateurs prenant en charge l'utilisation dedisplay: flex
.display:flex
est nécessaire sur le wrapper, et peut-être l'un de ces deux sur l'enfant: enwidth: 100%
flex-basis:100%
flex-grow:1
fonction de votre contenu / style.align-items
est définie. Vous devez envelopper la flexbox d'origine avec une flexbox sans cette propriété.align-items
propriété (FlexContainerWrapper)?Voici ma solution de travail (SCSS):
la source
Juste au cas où quelqu'un arriverait ici avec le même problème que moi, qui n'est pas spécifiquement abordé dans les commentaires précédents.
J'avais
margin: auto
sur l'élément intérieur qui l'a fait coller au bas de son parent (ou à l'élément extérieur). Ce qui a résolu le problème pour moi, c'est de changer la margemargin: 0 auto;
.la source
Il s'agit d'un bogue connu qui semble avoir été corrigé en interne chez Microsoft.
https://connect.microsoft.com/IE/feedback/details/802625/min-height-and-flexbox-flex-direction-column-dont-work-together-in-ie-10-11-preview
la source
La réponse originale de https://github.com/philipwalton/flexbugs/issues/231#issuecomment-362790042
la source
j'ai mis à jour les deux violons. j'espère que cela fera votre travail.
centrage
centre et défilement
la source
Je n'ai pas beaucoup d'expérience avec,
Flexbox
mais il me semble que la hauteur forcée sur les baliseshtml
etbody
fait disparaître le texte en haut lors du redimensionnement - je n'ai pas pu tester dans IE mais j'ai trouvé le même effet dans Chrome.J'ai bifurqué votre violon et enlevé les déclarations
height
etwidth
.Il semblait également que les
flex
paramètres devaient être appliqués à d'autresflex
éléments. Cependant, en appliquantdisplay: flex
aux.inner
problèmes causés, j'ai explicitement défini le.inner
surdisplay: block
et défini.outer
surflex
pour le positionnement.J'ai défini la
.outer
hauteur minimale pour remplir la fenêtre, ledisplay: flex
, et définir l'alignement horizontal et vertical:Je me suis mis
.inner
àdisplay: block
explicitement. Dans Chrome, il semblait héritéflex
de.outer
. J'ai également défini la largeur:Cela a résolu le problème dans Chrome, j'espère que cela pourrait faire la même chose dans IE11. Voici ma version du violon: http://jsfiddle.net/ToddT/5CxAy/21/
la source
J'ai trouvé une bonne solution ce qui a fonctionné pour moi, vérifiez ce lien https://codepen.io/chriswrightdesign/pen/emQNGZ/?editors=1100 Premièrement, nous ajoutons un div parent, deuxièmement, nous changeons min-height: 100% en min- hauteur: 100vh. Il fonctionne comme un charme.
la source
Si vous pouvez définir la largeur et la hauteur du parent, il existe un moyen plus simple de centraliser l'image sans avoir à créer un conteneur pour elle.
Pour une raison quelconque, si vous définissez la largeur minimale, IE reconnaîtra également la largeur maximale.
Cette solution fonctionne pour IE10 +, Firefox et Chrome.
https://jsfiddle.net/HumbertoMendes/t13dzsmn/
la source