As Flexbox são uma maneira simples e rápida de se obter um layout responsivo.
GA IN TI MECaixas flexíveis, ou flexbox, é um novo modo de layout no CSS3.
O uso de flexbox garante que os elementos se comportem de maneira previsível quando o layout da página deve acomodar diferentes tamanhos de tela e diferentes dispositivos de exibição.
Para muitas aplicações, o modelo de caixa flexível se apresenta muito melhor do que o modelo de blocos, uma vez que não usa flutuadores, nem as margens do recipiente flex se desmoronam com as margens de seus conteúdos.
Existem diversas aplicações para flexbox com diversas variações, mas no GainTime, a nossa preocupação é que, num cenário onde n colunas possuem m conteúdos de s tamanhos diferentes, todas as n colunas tenham a mesma altura.
No GainTime, as flexboxes só existem em telas > 768px (.sm), telas inferiores a isso (.xs) aplicam o layout de blocos.
.flex-box
Aplicando a classe .flex-box
, todos os elementos .col
que são filhos diretos de .flex-box
se distribuem automagicamente em largura, e terão sempre a mesma altura, desde que permaneçam na mesma linha.
<div class="flex-box">
<div class="col"></div>
<div class="col"></div>
</div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
But it's big
.flex-box
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
But it's big
Bom, como já dissemos, a .flexbox
iguala a altura das .col
que estão na mesma linha. O que acontece é que as vezes, quando estamos trabalhando com um conteúdo que é preenchido automaticamente por uma linguagem de programação (como uma listagem de usuários, por exemplo), queremos que o nosso conteúdo passe para a próxima linha automaticamente, sem "quebrar" a visualização. Para isso, pensamos na classe .wrap
para acompanhar a .flex-box
. Esta classe supõem que a largaura das .col
foi determinada pelo programador.
Consideramos que a melhor forma de obter múltiplas linhas é utilizando o nosso Grid-System baseado em caixas flexíveis.
.col {
width: 45%;
max-width: 45%;
}
.col {
width: 45%;
}
É possível aninhar flexboxes, basta definir uma .col
como .flex-box
.
<div class="flex-box">
<div class="col flex-box">
<div class="col flex-box">
<div class="col"></div>
<div class="col"></div>
</div>
<div class="col"></div>
</div>
<div class="col flex-box">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
</div>