Eu tenho uma página da web simples com algum conteúdo Lipsum centralizado na página. A página funciona bem no Chrome e Firefox. Se eu reduzir o tamanho da janela, o conteúdo preenche a janela até que não possa mais e, em seguida, adiciona uma barra de rolagem e preenche o conteúdo fora da tela, na parte inferior.
No entanto, a página não é centralizada no IE11. Posso centralizar a página no IE flexionando o corpo, mas, se o fizer, o conteúdo começará a sair da tela em direção à parte superior e cortar a parte superior do conteúdo.
Abaixo estão os dois cenários. Veja os Fiddles associados. Se o problema não for evidente de imediato, reduza o tamanho da janela de resultados para que seja forçada a gerar uma barra de rolagem.
Nota: Este aplicativo destina-se apenas às versões mais recentes do Firefox, Chrome e IE (IE11), todos com suporte para a Recomendação Candidata do Flexbox , portanto, a compatibilidade de recursos não deve ser um problema (em teoria).
Editar : ao usar a API Fullscreen para exibir em tela cheia o div externo, todos os navegadores centralizam corretamente o CSS original. No entanto, ao sair do modo de tela inteira, o IE volta a ser centralizado horizontalmente e alinhado verticalmente no topo.
Editar : o IE11 usa implementação não específica do fornecedor do Flexbox. Atualizações de layout de caixa flexível ("Flexbox")
Centraliza e redimensiona corretamente no Chrome / FF, não centraliza, mas redimensiona corretamente no IE11
Fiddle: 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%;
}
Centra corretamente em todos os lugares, corta o topo quando dimensionado para baixo
Fiddle: 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%;
}
fonte
-ms-flexbox
para o IE ..Respostas:
Eu descobri que o navegador tem problemas para alinhar verticalmente os contêineres internos, quando apenas o estilo de altura mínima está definido ou quando o estilo de altura está ausente. O que fiz foi adicionar estilo de altura com algum valor e isso resolver o problema para mim.
por exemplo :
Portanto, agora temos o estilo de altura, mas a altura mínima irá substituí-lo. Dessa forma, ou seja, está feliz e ainda podemos usar min-height.
Espero que isso seja útil para alguém.
fonte
-ms-flex-align:center;
do IE10. Suporte paraalign-items
foi adicionado apenas no IE11 .min-height
realmente substitui aheight
regra, mas se o conteúdo exceder o,min-height
ele simplesmente se estenderá para fora dos limites. A resposta de @ericodes resolve este problema e a solução funciona em todos os navegadores que suportam flex.Tente embrulhar qualquer div com o qual você tenha flexboxed
flex-direction: column
em um contêiner que também seja flexboxed.Acabei de testar isso no IE11 e funciona. Uma correção estranha, mas até que a Microsoft faça sua correção de bug interna externa ... terá que servir!
HTML:
CSS:
2 exemplos para você testar no IE11: http://codepen.io/philipwalton/pen/JdvdJE http://codepen.io/chriswrightdesign/pen/emQNGZ/
fonte
min-height
vez de umaheight
regra rígida , enquanto ainda centraliza verticalmente em todos os navegadores que suportam o uso dedisplay: flex
.display:flex
é necessário no invólucro, e talvez qualquer um destes na criança:width: 100%
flex-basis:100%
flex-grow:1
dependendo do seu conteúdo / estilo.align-items
estiver definida. Você tem que envolver o flexbox original com um flexbox sem esta propriedade.align-items
propriedade (FlexContainerWrapper)?Aqui está minha solução de trabalho (SCSS):
fonte
Para o caso de alguém chegar aqui com o mesmo problema que eu tive, que não foi abordado especificamente nos comentários anteriores.
Eu tinha
margin: auto
o elemento interno que fez com que ele grudasse na parte inferior de seu pai (ou do elemento externo). O que consertou para mim foi mudar a margem paramargin: 0 auto;
.fonte
Este é um bug conhecido que parece ter sido corrigido internamente na Microsoft.
https://connect.microsoft.com/IE/feedback/details/802625/min-height-and-flexbox-flex-direction-column-dont-work-together-in-ie-10-11-preview
fonte
A resposta original de https://github.com/philipwalton/flexbugs/issues/231#issuecomment-362790042
fonte
Eu atualizei os dois violinos. Eu espero que isso faça seu trabalho.
centrando
centralizar e rolar
fonte
Não tenho muita experiência com,
Flexbox
mas me parece que a altura forçada nas tagshtml
ebody
faz com que o texto desapareça no topo quando redimensionado - não consegui testar no IE, mas encontrei o mesmo efeito no Chrome.Eu bifurquei seu violino e removi as declarações
height
ewidth
.Também parecia que as
flex
configurações deveriam ser aplicadas a outrosflex
elementos. No entanto, aplicando-display: flex
se aos.inner
problemas causados, eu defini explicitamente o.inner
comodisplay: block
e o.outer
comoflex
para o posicionamento.Defino a
.outer
altura mínima para preencher a janela de visualizaçãodisplay: flex
, e defino o alinhamento horizontal e vertical:Eu configurei
.inner
paradisplay: block
explicitamente. No Chrome, parecia que era herdadoflex
de.outer
. Eu também defino a largura:Isso corrigiu o problema no Chrome, esperançosamente, ele pode fazer o mesmo no IE11. Esta é minha versão do violino: http://jsfiddle.net/ToddT/5CxAy/21/
fonte
Encontrou uma boa solução que funcionou para mim, verifique este link https://codepen.io/chriswrightdesign/pen/emQNGZ/?editors=1100 Primeiro, adicionamos um div pai, depois mudamos min-height: 100% para min- altura: 100vh. Ele funciona como um encanto.
fonte
Se você pode definir a largura e altura do pai, há uma maneira mais simples de centralizar a imagem sem ter que criar um contêiner para ela.
Por algum motivo, se você definir a largura mínima, o IE também reconhecerá a largura máxima.
Esta solução funciona para IE10 +, Firefox e Chrome.
https://jsfiddle.net/HumbertoMendes/t13dzsmn/
fonte