O Flexbox recebe um novo comportamento para filhos em posição absoluta

Joe Medley
Joe Medley

Uma versão anterior da especificação de layout CSS Flexible Box definia a posição estática de filhos com posição absoluta como se fossem um item flexível com tamanho de 0 px por 0 px. A versão mais recente da especificação retira-as completamente do fluxo e define a posição estática com base nas propriedades de alinhamento e justificação. No momento em que este artigo foi escrito, o Edge e o Opera 39 para computadores e Android já ofereciam suporte a isso.

Como exemplo, vamos aplicar alguns comportamentos de posicionamento ao seguinte HTML.

<div class="container">
    <div>
    <p>In Chrome 52 and later, the green box should be centered vertically and horizontally in the red box.</p>
    </div>
</div>

Vamos adicionar algo como:

.container {  
    display: flex;  
    align-items: center;  
    justify-content: center;   
}  
.container > * {  
    position: absolute;  
}

No Chrome 52 ou mais recente, o <div> aninhado será centralizado perfeitamente no contêiner <div>.

Comportamento do Chrome52.

Em navegadores não conformes, o canto superior esquerdo da caixa verde fica no centro superior da caixa vermelha.

Comportamento legado.

Se você quiser testar isso no Chrome ou em qualquer outro navegador, faça o download do nosso exemplo ou acesse a demonstração ao vivo.