O que é CSS Flexbox e quando você deve usá-lo?
O CSS flexbox é um modelo de layout unidimensional que permite organizar elementos em linhas e colunas dentro de um contêiner. Você também pode controlar a ordem e a orientação deles. Desenvolvedores web o utilizam para criar sites responsivos e aplicações web que se adaptam a diferentes tamanhos e orientações de tela. Nos referimos ao flexbox como um modelo de layout unidimensional porque ele se concentra em organizar os elementos ao longo de um único eixo por vez. O eixo pode ser horizontal ou vertical.
Existem dois conceitos principais que você deve conhecer antes de começar a trabalhar com flexbox: flex container e flex item.
Um contêiner flex é um elemento HTML com um layout flex. Você pode organizar e alinhar elementos de várias maneiras dentro de um contêiner flexível. Para tornar um elemento HTML um contêiner flex, você precisa adicionar
display: flex aos seus estilos CSS.
Itens flex são os filhos diretos de um contêiner flex. Esses elementos podem ser organizados e alinhados dentro de um contêiner flex com base em suas propriedades. Eles também podem encolher ou expandir para se ajustar ao espaço disponível.
Este é um exemplo com um contêiner main e três elementos filhos div:
<main>
<div id="first-div"></div>
<div id="second-div"></div>
<div id="third-div"></div>
</main>
Se você definir apenas o width, height e background-color desses elementos div na folha de estilo CSS, cada elemento filho será colocado em sua própria linha porque o container não é flex por padrão.
<link rel="stylesheet" href="styles.css">
<main>
<div id="first-div"></div>
<div id="second-div"></div>
<div id="third-div"></div>
</main>
div {
width: 80px;
height: 50px;
}
#first-div {
background-color: #4d70b2;
}
#second-div {
background-color: #5c4db2;
}
#third-div {
background-color: #4da3b2;
}
Mas se você adicionar display: flex ao contêiner main, os elementos div serão reorganizados para caber na mesma linha e eles encolherão se necessário (para ver as prévias, ative o editor interativo):
<link rel="stylesheet" href="styles.css">
<main>
<div id="first-div"></div>
<div id="second-div"></div>
<div id="third-div"></div>
</main>
main {
display: flex;
}
div {
width: 80px;
height: 50px;
}
#first-div {
background-color: #4d70b2;
}
#second-div {
background-color: #5c4db2;
}
#third-div {
background-color: #4da3b2;
}
Por padrão, um contêiner flex será um elemento de nível de bloco, então o próprio contêiner estará em sua própria linha em relação a outros elementos e contêineres.
Agora que você sabe mais sobre flex containers e flex items, você também deve conhecer as propriedades flex. Essas propriedades determinam como os itens flex serão organizados, redimensionados e distribuídos dentro do contêiner flex. Alguns dos mais comumente usados são flex-direction, justify-content, align-items e flex-wrap.
Great. Agora vamos falar um pouco sobre o modelo flex. Este modelo define como os itens flex são organizados dentro de um contêiner flex. Todo contêiner flex tem dois eixos:
- O eixo principal.
- O eixo cruzado.
flex-direction define a direção do eixo principal. O valor padrão de flex-direction é row, que posiciona todos os itens flex na mesma linha, na direção do idioma padrão do seu navegador (da esquerda para a direita ou da direita para a esquerda):
flex-direction: row; /* Default */
Para inverter os itens na linha, você pode usar flex-direction: row-reverse:
<link rel="stylesheet" href="styles.css">
<main>
<div id="first-div"></div>
<div id="second-div"></div>
<div id="third-div"></div>
</main>
main {
display: flex;
flex-direction: row-reverse;
}
div {
width: 80px;
height: 50px;
}
#first-div {
background-color: #4d70b2;
}
#second-div {
background-color: #5c4db2;
}
#third-div {
background-color: #4da3b2;
}
Isso irá inverter a ordem dos itens flexíveis. Se você quiser alinhar os itens flex verticalmente, basta definir flex-direction como column no contêiner flex. Isso mudará a direção do eixo principal:
<link rel="stylesheet" href="styles.css">
<main>
<div id="first-div"></div>
<div id="second-div"></div>
<div id="third-div"></div>
</main>
main {
display: flex;
flex-direction: column;
}
div {
width: 80px;
height: 50px;
}
#first-div {
background-color: #4d70b2;
}
#second-div {
background-color: #5c4db2;
}
#third-div {
background-color: #4da3b2;
}
Agora os elementos div serão alinhados verticalmente porque o eixo principal será vertical e o eixo cruzado será horizontal.
Você também pode inverter a ordem dos itens flex verticalmente com flex-direction: column-reverse:
<link rel="stylesheet" href="styles.css">
<main>
<div id="first-div"></div>
<div id="second-div"></div>
<div id="third-div"></div>
</main>
main {
display: flex;
flex-direction: column-reverse;
}
div {
width: 80px;
height: 50px;
}
#first-div {
background-color: #4d70b2;
}
#second-div {
background-color: #5c4db2;
}
#third-div {
background-color: #4da3b2;
}
O CSS flexbox é um modelo de layout poderoso que oferece uma maneira flexível e eficiente de organizar elementos dentro de um contêiner. Ao entender os conceitos-chave de flex containers, flex items e as várias propriedades flex, você pode criar sites dinâmicos e responsivos que se adaptam a diferentes tamanhos e orientações de tela.Este módulo não possui perguntas. Marque como concluído.