Como Criar Um Calendário Com CSS Grid

Criando o Calendário CSS Com Grid

⌚ Tempo de Leitura: 5 Minutos

Construir um calendário com CSS Grid é algo fundamental para qualquer desenvolvedor, e não pode ser deixado de lado. Felizmente, construir um é algo muito simples, longe de ser qualquer bicho de sete cabeças.

Hoje vou te mostrar o passo a passo de como construir um calendário assim.

Aqui está o que você criará até o final deste artigo:

O que vamos aprender hoje?

Desenvolvendo o HTML

Estruturando a grade

Empurrando as datas

Desenvolvendo o HTML

Você pode dizer pela imagem que o calendário contém três partes:

O indicador do mês;
O indicador de dia da semana / fim de semana;
As próprias datas;

A melhor maneira de estruturar o HTML é seguir o que parece certo. Criaremos o HTML de acordo com as três seções seguintes:

<div class="calendar">
  <div class="month-indicator">...</div>
  <div class="day-of-week">...</div>
  <div class="date-grid">...</div>
</div>

Além das sessões, vamos precisar obrigatoriamente de sete colunas para a grade. Elas serão para os dias da semana do calendário.

Vamos focar no .day-of-week e .date-grid já que estamos falando apenas de grade.

Ou

Estruturando a grade

Existem duas formas de criar a grade em CSS.

A primeira forma é mesclar elementos de .day-of-week e .date-grid em um seletor. Se fizermos isso, podemos definir o seletor display: grid. Aqui está a aparência do HTML se fizéssemos isso:

Alguns benefícios que a organização no seu local trabalho traz são:

div class="grid">
  <!-- Day of week -->
  <div>Seg</div>
  <div>Ter</div>
  <div>Qua</div>
  <div>Qui</div>
  <div>Sex</div>
  <div>Sab</div>
  <div>Dom</div>
 
  <button><time datetime="2021-02-01">1</time></button>
  <button><time datetime="2021-02-02">2</time></button>
  <button><time datetime="2021-02-03">3</time></button>
  
  <button><time datetime="2021-02-28">28</time></button>
</div>

Eu desencorajo esse método porque o HTML perde seu significado estrutural. Eu prefiro manter .day-of-week e .date-grid como elementos separados, se possível. Isso facilita a leitura / compreensão do código o desenvolvedor escreve.

Ou seja, mais simplicidade e agilidade para trabalhar.

Aqui está a estrutura HTML que escolho para trabalhar:

<div class="day-of-week">
  <div>Seg</div>
  <div>Ter</div>
  <div>Qua</div>
  <div>Qui</div>
  <div>Sex</div>
  <div>Sab</div>
  <div>Dom</div>
</div>
<div class="date-grid">
  <button><time datetime="2021-02-01">1</time></button>
  <button><time datetime="2021-02-02">2</time></button>
  <button><time datetime="2021-02-03">3</time></button>
  
  <button><time datetime="2021-02-28">28</time></button>
</div>

A melhor maneira de criar uma grade CSS com a estrutura que propus é usar subgrid. Infelizmente, a maioria dos navegadores ainda não suporta subgrid. Enquanto isso, a melhor maneira é criar duas grades separadas – uma para .day-of-week e outra para .date-grid.

Ambos .day-of-week e .date-grid podem usar a mesma grade de sete colunas.

/* The grid */
.day-of-week,
.date-grid {
display: grid;
grid-template-columns: repeat(7, 1fr);
}

Empurrando as datas

Fevereiro de 2021 começa na segunda. Se queremos que o calendário esteja correto, precisamos garantir:

1 fev 2021 cai na segunda
2 fev 2021 cai na terça
3 fev 2021 cai na quarta
E assim por diante…

Com CSS Grid, essa parte é fácil.

A CSS Grid possui um algoritmo de posicionamento que segue as seguintes regras (se você não definiu grid-auto-flow como dense):

  1. Coloque itens que tenham explícito grid-column ou grid-row primeiro
  2. Preencha o restante de acordo com o último item colocado

O que isso significa é:

Se o primeiro item estiver na coluna 2
O segundo item será colocado na coluna 3.
O terceiro item será colocado na coluna 4
O quarto item será colocado na coluna 5,
(Terminando as colunas passe para a próxima linha em sua respectiva coluna conforme a ordem)
E assim por diante…

Portanto, se posicionarmos em 1º de fevereiro na segunda coluna (segunda-feira), o restante das datas será colocada corretamente. Simples assim!

\/* Positioning the first day on a Friday */
.date-grid button:first-child {
grid-column: 6;
}

Conclusão de calendário com CSS Grid

conclusao-calendario-com-css-grid

Aprendeu a criar seu calendário com CSS Grid?

Que Tal Agora Conhecer Mais Sobre Desenvolvimento de Softwares Compreendendo Melhor a Programação?

Conheça o Pacote Full-Stack MASTER da Danki.Code, onde você aprende programação desde o absoluto ZERO ao Nível Avançado.

São +18 CURSOS em Mais de +2500 Aulas e Tudo com Suporte Individual Personalizado, Certificados, Satisfação Garantida 🔒 Ou o Seu Dinheiro de Volta!

No Curso você Dominará as Mais Poderosas e Atuais Tecnologias de Front-End e Back-End.
 
Aprendendo desde Php, Html, CSS, JavaScript, Android, IOS a até Photoshop, React, Seo e Muitos Outros.
 
Com Uma Metodologia Que Pega na Sua Mão e te Ensina Mesmo Que Você Esteja Começando Hoje na Programação!
 

Clique em Saiba Mais e Veja Quem Você Pode se Tornar!

CRÉDITOS: SiteDankiCode VISITE!

Curta e Compartilha!

Não esqueça de deixar sua opinião nos comentários, e claro, de compartilhar o conteúdo com um a amigo que se interesse! 😊👇


Descubra mais sobre Cantinho Binário

Assine para receber nossas notícias mais recentes por e-mail.

Deixe seu comentário para os demais visitantes!