đŸŽČ Criando um Dado com Flexbox e CSS Grid Layout

đŸŽČ Criando um Dado com Flexbox e CSS Grid Layout

Quando nos deparamos com uma necessidade de posicionamento usando CSS logo nos perguntamos – SerĂĄ que eu uso Flexbox ou CSS Grid Layout? Qual a melhor abordagem para esse caso? Neste artigo vamos trazer trĂȘs abordagens diferentes para posicionar os pontos das seis faces de um dado. A primeira abordagem serĂĄ com Flexbox e, as outras duas, com CSS Grid Layout.

Criando o arquivo main.css

Exemplo com Flexbox

Criando a primeira face
Criando a segunda face
Criando a terceira face
Criando a quarta face
Criando a quinta face
Criando a sexta face
Centralizando tudo na tela

Exemplo com Grid Template Areas

Posicionando os Pontos
Usando grid-template-areas

Usando grid-area

Centralizando os pontos nas células
Mas ainda estou enxergando um problema

Exemplo com Grid Rows e Grid Columns

Entendendo como funciona: grid-row e grid-column

Posicionando os pontos

ConsideraçÔes finais

Criando o arquivo main.css

Na raiz do projeto crie o arquivo main.css. Nele vamos colocar os estilos que servirĂŁo tanto para o exemplo do flexbox quanto para os exemplos com CSS Grid Layout.

Vamos construir o quadrado que servirĂĄ para todas as faces do dado. Para isso, selecionaremos todos os elementos div com o atributo class cujo valor termina com a string face. E com a classe .pip vamos construir cada ponto.

Em main.css adicione:

* {
margin: 0;
}

body {
background-color: #1b2231;
}

div[class$=“face”] {
width: 104px;
height: 104px;
background-color: #54c59f;
border-radius: 10%;
margin: 16px;
}

.pip {
width: 24px;
height: 24px;
background-color: #080a16;
border-radius: 50%;
margin: 4px;
}

Exemplo com Flexbox

Vamos começar criando o arquivo HTML. Crie um diretório chamado flexbox/index.html:

E vamos importar o main.css. No arquivo flexbox/index.html adicione:

<head>
<link rel=“stylesheet” href=“../main.css”>
</head>

Criando a primeira face (Flexbox)

No arquivo flexbox/index.html:

<head>
<link rel=“stylesheet” href=“../main.css”>
</head>

<!– adicione: –>
<body>
<div class=“first-face”>
<div class=“pip”></div>
</div>
</body>

O resultado serĂĄ um quadrado verde com uma cor escura de background e um cĂ­rculo escuro na parte superior do quadrado:

Centralizando o ponto

No arquivo flexbox/index.html adicione:

<head>
<link rel=“stylesheet” href=“../main.css”>
<!– adicione: –>
<link rel=“stylesheet” href=“style.css”>
</head>

<body>
<div class=“first-face”>
<div class=“pip”></div>
</div>
</body>

Crie o arquivo flexbox/style.css. A primeira etapa Ă© informar ao navegador para tornar .first-face um contĂȘiner flexbox.

.first-face {
display: flex;
}

Olhando não hå grandes alteraçÔes, mas por debaixo dos panos com display: flex podemos usar as linhas MAIN AXIS e CROSS AXIS.

O contĂȘiner first-face agora tem um eixo principal (main axis) horizontal. O eixo principal de um contĂȘiner flexbox que pode ser horizontal ou vertical, mas o padrĂŁo Ă© horizontal. Se adicionarmos outro pip Ă  first-face, ele aparecerĂĄ Ă  direita do primeiro. O contĂȘiner tambĂ©m tem um eixo transversal (cross axis) vertical. O eixo transversal Ă© sempre perpendicular ao eixo principal.

A propriedade justify-content define o alinhamento ao longo do eixo principal (main axis). Como queremos centralizar o pip ao longo do eixo principal, usaremos o valor center.

No arquivo flexbox/style.css:

.first-face {
display: flex;
justify-content: center; /* adicione */
}

A propriedade align-items determina como os itens são dispostos ao longo do eixo transversal (cross axis). Como queremos que o pip seja centralizado ao longo desse eixo, usaremos o valor center aqui também.

No arquivo flexbox/style.css:

.first-face {
display: flex;
justify-content: center;
align-items: center; /* adicione */
}

Criando a segunda face (Flexbox)

No arquivo flexbox/index.html:

<head>
<link rel=“stylesheet” href=“../main.css”>
<link rel=“stylesheet” href=“style.css”>
</head>

<body>
<div class=“first-face”>
<div class=“pip”></div>
</div>
<!– adicione: –>
<div class=“second-face”>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
</body>

No arquivo flexbox/style.css:

.first-face {
display: flex;
justify-content: center;
align-items: center;
}

/* adicione */
.second-face {
display: flex;
}

Agora os dois pontos estĂŁo um do lado do outro. Desta vez, queremos que os pontos fiquem em lados opostos do dado. HĂĄ um valor para justify-content que nos permitirĂĄ fazer exatamente isso: space-between.

A propriedade space-between preenche uniformemente o espaço entre os itens flexíveis (flex items). Como hå apenas dois pontos, isso os afasta um do outro.

No arquivo flexbox/style.css:

.first-face {
display: flex;
justify-content: center;
align-items: center;
}

.second-face {
display: flex;
justify-content: space-between; /* adicione */
}

É aqui que nos deparamos com um problema. Ao contrĂĄrio de antes, nĂŁo podemos definir align-items porque isso afetarĂĄ os dois pontos. Felizmente, o flexbox inclui align-self. Essa propriedade nos permite alinhar itens individuais em um contĂȘiner flexĂ­vel ao longo do eixo transversal da maneira que quisermos! O valor que queremos para essa propriedade Ă© flex-end.

No arquivo flexbox/style.css:

.first-face {
display: flex;
justify-content: center;
align-items: center;
}

.second-face {
display: flex;
justify-content: space-between;
}

/* adicione */
.second-face .pip:nth-of-type(2) {
align-self: flex-end;
}

A pseudo-classe CSS :nth-of-type() corresponde a um ou mais elementos de um dado tipo, baseado em sua posição entre um grupo de irmãos.

Criando a terceira face (Flexbox)

No arquivo flexbox/index.html:

<head>
<link rel=“stylesheet” href=“../main.css”>
<link rel=“stylesheet” href=“style.css”>
</head>

<body>
<div class=“first-face”>
<div class=“pip”></div>
</div>
<div class=“second-face”>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
<!– adicione: –>
<div class=“third-face”>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
</body>

No arquivo flexbox/style.css adicione:

.third-face {
display: flex;
justify-content: space-between;
}

.third-face .pip:nth-of-type(2) {
align-self: center;
}

.third-face .pip:nth-of-type(3) {
align-self: flex-end;
}

Criando a quarta face (Flexbox)

Nesta face do dado precisaremos de duas colunas para fazer o posicionamento usando justify-content tanto na horizontal com na vertical:

Adicione no arquivo flexbox/index.html:

<div class=“fourth-face”>
<!– note aqui a classe column –>
<div class=“column”>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
<!– e aqui tambĂ©m colocamos a classe column –>
<div class=“column”>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
</div>

No arquivo flexbox/style.css adicione:

.fourth-face {
display: flex;
justify-content: space-between;
}

No arquivo flexbox/style.css vamos setar o display como flex:

Ainda no arquivo flexbox/style.css:

.fourth-face {
display: flex;
justify-content: space-between;
}

/* aqui colocamos display como flex */
.fourth-face .column {
display: flex;
}

Cada column possuí dois pontos cada. Podemos usar a propriedade flex-direction para definir a direção do eixo principal (main axis) como coluna.

.fourth-face {
display: flex;
justify-content: space-between;
}

.fourth-face .column {
display: flex;
flex-direction: column; /* adicione */
}

As colunas agora sĂŁo contĂȘineres flexĂ­veis. Percebeu como colocamos um contĂȘiner flexĂ­vel diretamente dentro de outro contĂȘiner flexĂ­vel? NĂŁo tem problema! O Flexbox nĂŁo se importa se os contĂȘineres estĂŁo aninhados.

A etapa final é espaçar os pontos dentro das colunas, separando-os uns dos outros. Como o eixo principal (main axis) agora é vertical, podemos usar o justify-content novamente.

.fourth-face {
display: flex;
justify-content: space-between;
}

.fourth-face .column {
display: flex;
flex-direction: column;
justify-content: space-between; /* adicione */
}

Agora temos perfeitamente quatro faces do dado:

Criando a quinta face (Flexbox)

A quinta face vai ser parecida com o quarta face, mas com uma column a mais:

Adicione no arquivo flexbox/index.html:

<div class=“fifth-face”>
<div class=“column”>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
<div class=“column”>
<div class=“pip”></div>
</div>
<div class=“column”>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
</div>

Adicione no arquivo flexbox/style.css:

.fifth-face {
display: flex;
justify-content: space-between;
}

Perceba bem as trĂȘs colunas definidas:

Vamos transformar cada coluna em flex e alterar a direção da main axis para poder usar o justify-content na vertical.

No arquivo flexbox/style.css:

.fifth-face {
display: flex;
justify-content: space-between;
}

/* Adicione: */
.fifth-face .column {
display: flex;
flex-direction: column;
justify-content: space-between;
}

Precisamos agora sĂł centralizar o ponto do meio.

No arquivo flexbox/style.css:

.fifth-face {
display: flex;
justify-content: space-between;
}

.fifth-face .column {
display: flex;
flex-direction: column;
justify-content: space-between;
}

/* adicione: */
.fifth-face .column:nth-of-type(2) {
justify-content: center;
}

Agora temos perfeitamente cinco faces do dado, faltando apenas a sexta face:

Criando a sexta face (Flexbox)

Para criar a sexta face do dado ficou fĂĄcil, apenas precisamos de duas colunas com trĂȘs pontos cada.

Adicione no arquivo flexbox/style.css:

<div class=“sixth-face”>
<div class=“column”>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
<div class=“column”>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
</div>

Vamos reaproveitar código. Como a sexta face também possuí apenas duas colunas igual a quarta face, podemos colocar .sixth-face junto do código do .fourth-face:

.fourth-face,
.sixth-face {
display: flex;
justify-content: space-between;
}

.fourth-face .column, .sixth-face .column {
display: flex;
flex-direction: column;
justify-content: space-between;
}

Agora sim, seis faces do dado completas:

Centralizando tudo na tela

As facea dos dados ficaram em coluna e, jå que aprendemos como funciona o Flexbox, que tal usar no body também para centralizar tudo?

Adicione no arquivo main.css:

body {
background-color: #1b2231;
display: flex;
}

Agora temos todas as faces, uma do lado da outra:

Temos um problema ao dominuir a tela na horizontal, os quadros ficam com tamanhos diferentes:

Vamos colocar um comando para quebrar a linha ao invés de alterar o tamanho dos quadrados:

body {
background-color: #1b2231;
display: flex;
flex-wrap: wrap; /* adicione */
}

Agora vamos começar a centralizar tudo.

Centralizando na horizontal (main axis):

body {
background-color: #1b2231;
display: flex;
flex-wrap: wrap;
justify-content: center; /* adicione */
}

Centralizando na vertical (cross axis):

body {
background-color: #1b2231;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center; /* adicione */
}

Juntando tudo bem no centro:

body {
background-color: #1b2231;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
align-content: center; /* adicione */
}

Agora podemos diminuir a tela tranquilamente que todo conteĂșdo permanece no centro da tela:

Exemplo com Grid Template Areas

Neste exemplo vamos usar o CSS Grid Layout, jĂĄ que os pontos de um dado tradicional estĂŁo alinhados em trĂȘs linhas e trĂȘs colunas.

Imagine a face de um dado como uma grade 3×3, em que cada cĂ©lula representa a posição de um ponto:

+—+—+—+
| a | b | c |
+—+—+—+
| d | e | f |
+—+—+—+
| g | h | i |
+—+—+—+

Para criar uma grade simples de 3 por 3 usando CSS, a Ășnica coisa que precisamos fazer Ă© definir um elemento contĂȘiner como display: grid e informar que queremos trĂȘs linhas (grid-template-rows: 1fr 1fr 1fr;) e trĂȘs colunas (grid-template-columns: 1fr 1fr 1fr;) de tamanhos iguais.

Crie o arquivo grid-template-areas/style.css com o seguinte cĂłdigo:

[class$=“face”] {
display: grid;
grid-template-rows: 1fr 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr;
}

A unidade fr permite definir o tamanho de uma linha ou coluna como uma fração do espaço livre do contĂȘiner da grade; no nosso caso, queremos um terço do espaço disponĂ­vel, portanto, usamos 1fr trĂȘs vezes.

Com isso jå podemos perceber os pontos separados por 3 colunas, sendo colocados automaticamente em cada uma das células, da esquerda para a direita:

Podemos simplificar esse cĂłdigo CSS. Em vez de escrever 1fr 1fr 1fr, podemos usar repeat(3, 1fr) para repetir a unidade 1fr trĂȘs vezes. TambĂ©m usamos a propriedade abreviada grid-template que define linhas/colunas:

[class$=“face”] {
display: grid;
grid-template: repeat(3, 1fr) / repeat(3, 1fr);
}

É simples construir uma grade 3X3 com grid-template, mas ainda nĂŁo usaremos essa propriedade. A seguir usaremos grid-template-areas sem o grid-template, assim iremos perceber que precisamos adicionar mais tarde o grid-template tambĂ©m.

Crie o arquivo grid-template-areas/index.html com o seguinte cĂłdigo:

<head>
<link rel=“stylesheet” href=“../main.css”>
<link rel=“stylesheet” href=“style.css”>
</head>

<body>
<div class=“first-face”>
<div class=“pip”></div>
</div>
<div class=“second-face”>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
<div class=“third-face”>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
<div class=“fourth-face”>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
<div class=“fifth-face”>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
<div class=“sixth-face”>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
<div class=“pip”></div>
</div>
</body>

No código acima jå podemos perceber uma diferença em relação ao exemplo anterior usando Flexbox: Não hå classes column. Então percebemos que o arquivo HTML jå estå mais simples. Vamos agora partir para o arquivo CSS.

Crie o arquivo grid-template-areas/style.css:

Posicionando os Pontos

Agora chegamos ao ponto em que precisamos posicionar os pontos (pips) para cada um dos valores de cada face do dado. Seria bom se os pontos fluíssem automaticamente para as posiçÔes corretas na grade para cada valor. Infelizmente, precisaremos definir a posição de cada um dos pontos individualmente.

Lembra da tabela ASCII no início desse exemplo? Vamos criar algo muito semelhante usando CSS. Em vez de rotular as células na ordem das linhas, usaremos essa ordem específica, de modo que precisaremos apenas de uma quantidade mínima de CSS para corrigir os casos extremos:

+—+—+—+
| a | | c |
+—+—+—+
| e | g | f |
+—+—+—+
| d | | b |
+—+—+—+

Duas das células são deixadas vazias, pois nunca são usadas em nossos dados.

Usando grid-template-areas

Podemos traduzir esse layout para CSS usando a propriedade mĂĄgica grid-template-areas (que substitui o grid-template usado acima):

Adicione no arquivo grid-template-areas/style.css:

[class$=“face”] {
display: grid;
grid-template-areas:
“a . c”
“e g f”
“d . b”;
}

Portanto, em vez de usar unidades tradicionais para dimensionar nossas linhas e colunas, podemos simplesmente nos referir a cada célula com um nome. A própria sintaxe fornece uma visualização da estrutura da grade, assim como a nossa tabela ASCII. Os nomes são definidos pela propriedade grid-area do item da grade. Os pontos na coluna do meio significa uma célula vazia.

Aparentemente, olhando a imagem acima, não houve alteraçÔes. Falta agora usarmos o grid-area.

Usando grid-area

Usamos a propriedade grid-area para dar um nome a esse item da grade. O modelo de grade (acima) pode entĂŁo fazer referĂȘncia ao item pelo nome para colocĂĄ-lo em uma ĂĄrea especĂ­fica da grade. A pseudo classe :nth-of-type() nos permite direcionar cada pip individualmente.

Posicionando a letra b

Com o cĂłdigo abaixo conseguimos vizualizar onde estĂĄ o ponto 2:

.pip:nth-of-type(2) {
background-color: red;
}

.pip:nth-of-type(2) {
grid-area: b;
}

Resultado apĂłs a letra b ter sido posicionada certa:

Posicionando a letra c

.pip:nth-of-type(3) {
grid-area: c;
}

Resultado apĂłs a letra c ter sido posicionada certa:

Posicionando a letra d

.pip:nth-of-type(4) {
grid-area: d;
}

Resultado apĂłs a letra d ter sido posicionada certa:

Posicionando a letra e

.pip:nth-of-type(5) {
grid-area: e;
}

Resultado apĂłs a letra e ter sido posicionada certa:

Posicionando a letra f

.pip:nth-of-type(6) {
grid-area: f;
}

Resultado apĂłs a letra f ter sido posicionada certa:

Posicionando a letra g

Como vocĂȘ pode ver, os valores 1, 3 e 5 ainda estĂŁo incorretos. Devido Ă  ordem das ĂĄreas do modelo de grade que escolhemos anteriormente, sĂł precisamos reposicionar o Ășltimo pip de cada um desses dados. Para obter o resultado que desejamos, combinamos as pseudo classes :nth-of-type(odd) e :last-of-type:

.pip:nth-of-type(odd):last-of-type {
grid-area: g;
}

:nth-of-type(odd) = todos os irmĂŁos(Ă­mpar)

last-of-type = Ășltimo irmĂŁo

Resultado apĂłs a letra g ter sido posicionada certa:

Centralizando os pontos nas células

EstĂĄ estranho, nĂŁo estĂĄ? Ă© porque precisamos centralizar os pontos, na imagem abaixo, podemos ver os pontos alinhados a esquerda:

No mesmo arquivo grid-template-areas/style.css vamos adicionar:

.pip {
align-self: center;
justify-self: center;
}

Mas ainda estou enxergando um problema

O padding em cada face estĂĄ diferente!!!

Agora vamos usar grid-template-rows e grid-template-columns para deixar as células todas do mesmo tamanho.

No arquivo grid-template-areas/style.css:

[class$=“face”] {
display: grid;
grid-template-rows: repeat(3, 1fr); /* adicione */
grid-template-columns: repeat(3, 1fr); /* adicione */
grid-template-areas:
“a . c”
“e g f”
“d . b”;
}

Agora sim!!! O resultado ficou perfeito!!

Apenas mas uma melhoria no código. Podemos fazer uma abreviação trocando duas linhas por uma.

No arquivo grid-template-areas/style.css:

[class$=“face”] {
grid-template-rows: repeat(3, 1fr); /* remover */
grid-template-columns: repeat(3, 1fr); /* remover */

grid-template: repeat(3, 1fr) / repeat(3, 1fr); /* adicionar */
}

.pip {
align-self: center; /* remover */
justify-self: center; /* remover */

place-self: center; /* adicionar */
}

O resultado ficou perfeito mas o cĂłdigo ficou muito complexo. Vamos tentar usar o CSS Grid Layout de outra forma? Vamos ver isso no prĂłximo exemplo…

Exemplo com Grid Rows e Grid Columns

Neste exemplo tambĂ©m vamos usar o CSS Grid Layout com trĂȘs linhas e trĂȘs colunas, onde cada cĂ©lula representa a posição de um ponto:

+—+—+—+
| . | . | . |
+—+—+—+
| . | . | . |
+—+—+—+
| . | . | . |
+—+—+—+

Entendendo como funciona: grid-row e grid-column

Antes de montarmos o dado com essa solução, vamos só entender como funciona grid-row e grid-column. Essa serå uma explicação mais råpida pois existe muita coisa pra aprender sobre o assunto e fugiria do escopo desse artigo.

Vamos jĂĄ criar os arquivos:

No arquivo grid-rows-and-grid-columns/index.html vocĂȘ pode colocar esse cĂłdigo:

<head>
<link rel=“stylesheet” href=“../main.css”>
<link rel=“stylesheet” href=“style.css”>
</head>

<body>
<div class=“face”>
<div class=“square”></div> <!– square Ă© provisĂłrio –>
</div>
</body>

E no arquivo grid-rows-and-grid-columns/style.css vocĂȘ pode colocar esse cĂłdigo:

[class$=“face”] {
display: grid;
grid-template: repeat(3, 1fr) / repeat(3, 1fr);
}

.square {
background-color: white;
grid-column-start: 1;
grid-column-end: 2;
}

O resultado serĂĄ esse:

Temos um quadrado na primeira linha ocupando um espaço da coluna 1 até a coluna 2.

Como não definimos uma altura (height) e uma largura (width) para o quadrado, ele acaba ocupando o espaço inteiro da célula:

Vizualizamos 4 linhas na vertical, então podemos especificar que queremos que o quadrado se estenda até a linha 3:

.square {
background-color: white;
grid-column-start: 1;
grid-column-end: 3; /* altere de 2 para 3 */
}

Podemos especificar que queremos que o quadrado se estenda atĂ© a linha 4. Podemos usar o nĂșmero 4 ou podemos usar -1:

.square {
background-color: white;
grid-column-start: 1;
grid-column-end: -1; /* pode usar 4 ou -1 */
}

Podemos agora especificar que esses quadrados devem começar na linha 2 horizontal:

.square {
background-color: white;
grid-column-start: 1;
grid-column-end: -1;
grid-row-start: 2; /* adicione */
}

Posicionando os pontos com grid-row e grid-column

Agora sim vamos para a solução.

No arquivo grid-rows-and-grid-columns/index.html o cĂłdigo final serĂĄ esse, ou seja nĂŁo iremos mais modificar ele:

<head>
<link rel=“stylesheet” href=“../main.css”>
<link rel=“stylesheet” href=“style.css”>
</head>

<body>
<div class=“first-face”>
<div class=“pip center middle”></div>
</div>
<div class=“second-face”>
<div class=“pip”></div>
<div class=“pip right bottom”></div>
</div>
<div class=“third-face”>
<div class=“pip”></div>
<div class=“pip middle center”></div>
<div class=“pip bottom right”></div>
</div>
<div class=“fourth-face”>
<div class=“pip”></div>
<div class=“pip right”></div>
<div class=“pip bottom”></div>
<div class=“pip bottom right”></div>
</div>
<div class=“fifth-face”>
<div class=“pip”></div>
<div class=“pip right”></div>
<div class=“pip middle center”></div>
<div class=“pip bottom”></div>
<div class=“pip bottom right”></div>
</div>
<div class=“sixth-face”>
<div class=“pip”></div>
<div class=“pip right”></div>
<div class=“pip”></div>
<div class=“pip right”></div>
<div class=“pip bottom”></div>
<div class=“pip bottom right”></div>
</div>
</body>

E no arquivo grid-rows-and-grid-columns/style.css vocĂȘ pode colocar esse cĂłdigo:

[class$=“face”] {
display: grid;
grid-template: repeat(3, 1fr) / repeat(3, 1fr);
}

.top {
grid-row-start: 1;
}
.middle {
grid-row-start: 2;
}
.bottom {
/* grid-row-start: 3; */
grid-row-end: -1;
}

.left {
grid-column-start: 1;
}
.center {
grid-column-start: 2;
}
.right {
/* grid-column-start: 3; */
grid-column-end: -1;
}

O resultado estĂĄ quase o esperado:

Preciamos centralizar cada ponto em sua célula:

.pip {
place-self: center;
}

Agora o resultado ficou perfeito:

ConsideraçÔes finais

Podemos concluir que o cĂłdigo da segunda abordagem com grid-template-areas ficou mais confuso do que as outras abordagens. JĂĄ a Ășltima abordagem com grid-rows e grid-columns teve menos cĂłdigo CSS e ficou fĂĄcil de entender o que acontece, sendo assim mais fĂĄcil de dar manutenção, entĂŁo vamos para o ranking:

đŸ„‡ 1Âș Lugar: Exemplo 3 (grid-rows e grid-columns)
đŸ„ˆ 2Âș Lugar: Exemplo 1 (Flexbox)
đŸ„‰ 3Âș Lugar: Exemplo 2 (grid-template-areas)

Era isso… obrigado por ler e atĂ© a prĂłxima 🙂👋

Para a construção deste artigo foi utilizado os seguintes conteĂșdos como base:

Getting Dicey With Flexbox
Creating dice using CSS grid
[css] Designing Dice using CSS Grid

Please follow and like us:
Pin Share