cefet_front_end

CSS parte 7

Responsive Web Design


A Web é multi-dispositivos

  1. Computadores
  2. Telefones/tablets
  3. Videogames
  4. Smart TVs
  5. Smartwatches
  6. VR headsets
  7. Carros

O que varia entre dispositivos?

  1. Tamanho da tela
  2. Razão de aspecto (largura/altura)
  3. Tipo de input (mouse/teclado, toque (multi), gestos)
  4. Densidade de pixels da tela
  5. Quantidade de cores
  6. Conexão com a Internet


Diretrizes para a web multi-dispositivos

  1. Independer de ampliação
    • Usuário não deve precisar dar zoom para enxergar/interagir
  2. Independer da razão de aspecto (larg/alt)
    • Página deve se adequar para ficar longa ou achatada
  3. Aproveitar todo o espaço disponível, não mais, não menos
    • Não permitir barras de rolagem horizontais
  4. Explorar da alta densidade de pixels
    • Usar imagens com resolução suficiente ao dispositivo
  5. Otimizar o desempenho
    • A página não pode demorar para carregar

Na aula de hoje

  1. A tag meta viewport
  2. Media queries
  3. Densidade de pixels
  4. Responsive web design

A tag meta viewport

Como definir a janela da página


Uma página carregada em um smartphone Android que reduziu o tamanho da página para caber na tela pequena do dispositivo. O texto da página ficou bem pequeno por causa da redução.

Do jeito errado (se não se não definirmos a viewport)

Uma página carregada em um smartphone Android com o tamanho do texto normal, sem a necessidade de o usuário ampliar a tela para ler.

Do jeito certo (viewport definida)

Carregando uma página no smartphone


Codificação Unicode e UTF-8


Definindo a janela de pintura


Unidades de medida


Unidades de medida relativas


Exemplos: em vs rem


Exemplo: vh e vw


Media Queries

Regras CSS condicionais


O que são media queries


Anatomia de uma media query


Tipos de Mídia

all ~ Qualquer dispositivo

print ~ Para documentos paginados ou exibidos em modo de visualização de impressão (aperte Ctrl+P)

screen ~ Dispositivos com telas (normalmente) coloridas

speech ~ Para sintetizadores de voz


Exemplo de uso de tipo de mídia: 2 formas

  1. Arquivos separados:
    <link rel="stylesheet" media="all" href="estilos-gerais.css">
    <link rel="stylesheet" media="screen" href="para-monitores.css">
    <link rel="stylesheet" media="print" href="para-impressao.css">
    
  2. Dentro de um mesmo arquivo CSS:
    body {
      background-color: #ccc;
    }
       
       
    @media print {
      body {
        background-color: transparent;
      }
    }
    

Características de Mídia


Exemplo de uso de características de mídia (1/2)


Exemplo de uso de características de mídia (2/2)


Densidade de pixels

Telas com “super definição”



Retina display (da Apple)


Retina display (da Apple)


Simulação de retina display

Desenho da estrela do jogo do Mario Desenho da estrela do jogo do Mario

Para testar em um dispositivo de tela com alta densidade de pixels:

Desenho da estrela do jogo do Mario Desenho da estrela do jogo do Mario


Responsive Design

Adequando ao dispositivo


O que é Responsive Design


Exemplo de site responsive


Como fazer


Exemplo

#produtos {  display: flex; }

@media (min-width: 801px) {
  /* tela grande: 4 produtos por linha */
  div.produto {  width: calc(100% / 4);  }
}

@media (min-width: 481px) and (max-width: 800px) {                 
  /* tela média: 3 produtos por linha */
  div.produto {  width: calc(100% / 3);  }
}

@media (max-width: 480px) {
  /* tela pequena: 2 produtos por linha */
  div.produto {  width: calc(100% / 2);  }
}

Exemplo vivo