CodeGym /Cursos /Frontend SELF PT /Técnicas Avançadas do CSS Grid

Técnicas Avançadas do CSS Grid

Frontend SELF PT
Nível 28 , Lição 4
Disponível

10.1 Combinando com Media Queries

O CSS Grid Layout fornece ferramentas incríveis para criar layouts complexos e responsivos. Combinando CSS Grid com media queries, dá pra criar layouts que se adaptam a diferentes tamanhos de tela e dispositivos. Vamos ver como utilizar media queries junto com CSS Grid pra criar páginas web flexíveis e responsivas.

Conceitos Básicos de Media Queries

As media queries permitem aplicar diferentes estilos CSS dependendo das características do dispositivo, tipo a largura da tela, altura da tela, orientação da tela e outros. Combinando com o CSS Grid, as media queries permitem alterar a estrutura e posição dos elementos dependendo dos tamanhos da tela.

Sintaxe das Media Queries:

    
      @media (condição) {
        /* Estilos que são aplicados quando a condição é atendida */
      }
    
  

Onde «condição» é a condição em que os estilos serão aplicados. Normalmente, as condições mais usadas estão relacionadas à largura da tela, como max-width e min-width.

10.2 Mudando o Número de Colunas

Exemplo de Implementação Completa (mudando o número de colunas dependendo da largura da tela):

CSS
    
      /* Estilo base para todas as telas */

      .grid-container {
        display: grid;
        grid-template-columns: 1fr;
        gap: 10px;
      }

      .grid-item {
        background-color: #3498db;
        color: white;
        padding: 20px;
        text-align: center;
        border: 1px solid #fff;
      }

      /* Para telas maiores que 600px */

      @media (min-width: 600px) {
        .grid-container {
          grid-template-columns: repeat(2, 1fr); /* Duas colunas */
        }
      }

      /* Para telas maiores que 900px */

      @media (min-width: 900px) {
        .grid-container {
          grid-template-columns: repeat(3, 1fr); /* Três colunas */
        }
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Layout Responsivo com CSS Grid</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <div class="grid-container">
            <div class="grid-item">Elemento 1</div>
            <div class="grid-item">Elemento 2</div>
            <div class="grid-item">Elemento 3</div>
            <div class="grid-item">Elemento 4</div>
            <div class="grid-item">Elemento 5</div>
            <div class="grid-item">Elemento 6</div>
          </div>
        </body>
      </html>
    
  

Explicação do Código:

  • Estilo Base: cria um container Grid com uma coluna para todas as telas
  • Media Query para telas maiores que 600px: muda o layout para duas colunas
  • Media Query para telas maiores que 900px: muda o layout para três colunas

10.3 Dependência da Largura da Tela

Exemplo de Implementação Completa (mudando a posição dos elementos dependendo da largura da tela):

CSS
    
      /* Estilo base para todas as telas */

      .grid-container {
        display: grid;
        grid-template-areas:
          "header"
          "main"
          "sidebar"
          "footer";
        gap: 10px;
      }

      .header {
        grid-area: header;
        background-color: #2ecc71;
        padding: 20px;
        text-align: center;
      }

      .sidebar {
        grid-area: sidebar;
        background-color: #3498db;
        padding: 20px;
        text-align: center;
      }

      .main {
        grid-area: main;
        background-color: #9b59b6;
        padding: 20px;
        text-align: center;
      }

      .footer {
        grid-area: footer;
        background-color: #e74c3c;
        padding: 20px;
        text-align: center;
      }

      /* Para telas maiores que 600px */

      @media (min-width: 600px) {
        .grid-container {
          grid-template-areas:
            "header header"
            "sidebar main"
            "footer footer";
          grid-template-columns: 1fr 3fr;
        }
      }

      /* Para telas maiores que 900px */

      @media (min-width: 900px) {
        .grid-container {
          grid-template-areas:
            "header header header"
            "sidebar main main"
            "footer footer footer";
          grid-template-columns: 1fr 2fr;
        }
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Posicionamento Responsivo com CSS Grid</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <div class="grid-container">
            <div class="header">Header</div>
            <div class="sidebar">Sidebar</div>
            <div class="main">Main Content</div>
            <div class="footer">Footer</div>
          </div>
        </body>
      </html>
    
  

Explicação do Código:

  • Estilo Base: cria um container Grid com quatro linhas e uma coluna para todas as telas
  • Media Query para telas maiores que 600px: muda o layout para duas colunas e altera o posicionamento das áreas: o cabeçalho ocupa duas colunas, o conteúdo principal e a barra lateral ocupam uma coluna cada, o rodapé ocupa duas colunas
  • Media Query para telas maiores que 900px: muda o layout para três colunas e altera o posicionamento das áreas: o cabeçalho ocupa três colunas, o conteúdo principal e a barra lateral ocupam uma e duas colunas respectivamente, o rodapé ocupa três colunas

10.4 Mudando o Tamanho dos Elementos

Exemplo de Implementação Completa (mudando o tamanho dos elementos dependendo da largura da tela):

CSS
    
      /* Estilo base para todas as telas */

      .grid-container {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        grid-auto-rows: 100px;
        gap: 10px;
      }

      .grid-item {
        background-color: #3498db;
        color: white;
        padding: 20px;
        text-align: center;
        border: 1px solid #fff;
      }

      /* Para telas maiores que 600px */

      @media (min-width: 600px) {
        .grid-container {
          grid-template-columns: repeat(3, 1fr);
          grid-auto-rows: 150px;
        }
      }

      /* Para telas maiores que 900px */

      @media (min-width: 900px) {
        .grid-container {
          grid-template-columns: repeat(4, 1fr);
          grid-auto-rows: 200px;
        }
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Tamanhos Responsivos com CSS Grid</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <div class="grid-container">
            <div class="grid-item item1">Elemento 1</div>
            <div class="grid-item item2">Elemento 2</div>
            <div class="grid-item item3">Elemento 3</div>
            <div class="grid-item item4">Elemento 4</div>
            <div class="grid-item item5">Elemento 5</div>
            <div class="grid-item item6">Elemento 6</div>
          </div>
        </body>
      </html>
    
  

Explicação do Código:

  • Estilo Base: cria um container Grid com duas colunas e linhas automáticas com altura de 100px para todas as telas
  • Media Query para telas maiores que 600px: muda o layout para três colunas e aumenta a altura das linhas para 150px
  • Media Query para telas maiores que 900px: muda o layout para quatro colunas e aumenta a altura das linhas para 200px
1
Опрос
Alinhamento do Container Grid,  28 уровень,  4 лекция
недоступен
Alinhamento do Container Grid
Alinhamento do Container Grid
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION