Considere o seguinte trecho:
.parent {
display: flex;
flex-direction: column;
width: 400px;
border: 1px solid red;
align-items: center;
}
.child {
border: 1px solid blue;
}
<div class="parent">
<div class="child">
Lorem Ipsum is simply dummy text of the printing and typesetting industry
</div>
<div class="child">
Lorem Ipsum is simply dummy text of the printing and typesetting industry
</div>
</div>
No Chrome, o texto está agrupado conforme o esperado:
Mas, no IE11, o texto não está quebrando :
Este é um bug conhecido no IE? (se sim, um ponteiro será apreciado)
Existe uma solução alternativa conhecida?
Essa pergunta semelhante não tem uma resposta definida e um ponteiro oficial.
css
internet-explorer
flexbox
internet-explorer-11
Misha Moroshko
fonte
fonte
align-items: center
do elemento pai. Isso parece ser o que está causando issoRespostas:
Adicione isto ao seu código:
Sabemos que um filho em nível de bloco deve ocupar toda a largura do pai.
O Chrome entende isso.
O IE11, por qualquer motivo, deseja uma solicitação explícita.
Usando
flex-basis: 100%
ouflex: 1
também funciona.Mostrar snippet de código
Nota: Às vezes, será necessário classificar os vários níveis da estrutura HTML para identificar qual contêiner obtém o
width: 100%
. Texto de quebra de CSS não funciona no IEfonte
flex: 1 1 50%; display: flex; align-items: center;
Não surpreendentemente, o IE falha ao digitar textos longos nas células. A configuraçãowidth:100%
funciona, mas a configuraçãomin-width: 100%
não! Deveria, mas não ' t (como todas as coisas IE), então eu tenteimax-width: 99%
, e surpreendentemente, ele faz trabalho eu acho que usando.width:100%
poderia ser melhor?flex-direction: column
o pai para que isso funcionasse.Eu tive o mesmo problema e o ponto é que o elemento não estava adaptando sua largura ao contêiner.
Em vez de usar
width:100%
, seja consistente (não misture o modelo flutuante e o modelo flex) e use flex adicionando isto:Ou:
Isso funcionou para mim.
fonte
Como Tyler sugeriu em um dos comentários aqui, usando
na criança pode trabalhar (trabalhou para mim). Usar
align-self: stretch
apenas funciona se você não estiver usandoalign-items: center
(o que eu fiz).width: 100%
só funciona se você não tiver vários filhos dentro do seu flexbox que deseja mostrar lado a lado.fonte
Olá, eu tive que aplicar a largura de 100% ao seu elemento de avô. Não é seu (s) elemento (s) filho (s).
fonte
De alguma forma, todas essas soluções não funcionaram para mim. Existe claramente um bug no IE
flex-direction:column
.Eu só consegui funcionar depois de remover
flex-direction
:fonte
As soluções propostas não me ajudaram com ".child {width: 100%;}", pois eu tinha uma marcação mais complicada. No entanto, encontrei uma solução - remova "align-items: center;", e isso também funciona para este caso.
fonte
align-items: center
. Veja stackoverflow.com/a/39365207/630170A única maneira de conseguir 100% consistentemente evitar esse erro da coluna de direção flexível é usar uma consulta de mídia de largura mínima para atribuir uma largura máxima ao elemento filho em telas de tamanho de área de trabalho.
Você precisará definir elementos filho naturalmente embutidos (por exemplo,
<span>
ou<a>
) para algo diferente de embutido (principalmente exibição: bloco ou exibição: bloco embutido) para que a correção funcione.fonte
Não encontrei minha solução aqui, talvez alguém seja útil:
Boa sorte!
fonte
Isso funcionou para mim.
fonte
Eu também encontrei esse problema.
A única alternativa é definir uma largura (ou largura máxima) nos elementos filho. O IE 11 é um pouco estúpido, e eu apenas passei 20 minutos para perceber essa solução.
fonte
Eu tive um problema semelhante com imagens transbordando em um invólucro flexível.
Adicionar um
flex-basis: 100%;
ou maisflex: 1;
ao filho transbordado corrigido funcionou para mim.fonte
Por que usar uma solução complicada se uma simples também funciona?
fonte