cefet_web

CSS parte 3

Flexbox, Grid, Visibilidade e Web Fonts


Na última aula (1/4)


Na última aula… (2/4)


Na última aula (3/4)

position Descrição Exemplos de uso top, right, bottom, left z-index
static Fluxo normal Elementos sem posicionamento especial ignorados ignorado
relative Fluxo normal, deslocado Elementos que podem se deslocar um pouco; contextos para elementos absolutos deslocamentos nas 4 direções define ordem

Na última aula (4/4)

position Descrição Exemplos de uso top, right, bottom, left z-index
absolute Removido do fluxo, posicionado (x,y) relativo a um contexto Elementos que queremos definir os valores (x,y) para posicioná-los exatamente nesse lugar posições referentes às 4 direções define ordem
fixed Removido do fluxo, em um (x,y) na janela Idem, mas a posição é fixa na janela posições para as 4 direções define ordem

Hoje veremos…

  1. Flexbox
  2. Grid
  3. Visibilidade de elementos
  4. Web Fonts

Flexbox

Layouts de 1D


A propriedade display (na MDN)


Resultado do display inline-block


Conheça o FLEXBOX 🐸


Exemplo com flexbox: lista horizontal

ul.horizontal {
  display: flex;
  justify-content: space-around;

  /* tirar coisas que vem na <ul> */
  list-style-type: none;
  padding-left: 0;
}

ul.horizontal > li {
  flex: 1; /* crescer com peso 1 */
  
  /* espacinho e centralização */
  margin-right: 4px;
  text-align: center;
}

Display: flex e inline-flex Logomarca do CSS

flex-direction ~ row (padrão), column, row-reverse, column-reverse ~ dispõe filhos na horizontal (se row) ou vertical (column)

justify-content ~ flex-start (padrão), center, space-around, space-between… ~ define como distribuir o espaço que sobrou

align-items ~ stretch (padrão), flex-start, center… ~ define posição dos elementos no “contraeixo”


Jogo Flexbox Froggy 🌐 ~ melhor professor de flexbox ~


Como funciona o flexbox (1/3)

  1. Ideia: habilidade do elemento alterar o tamanho de seus filhos (e ordem) para ocupar o espaço disponível
  2. Há propriedades para o elemento flex e para seus filhos
    • Apenas o pai tem display: flex

Como funciona o flexbox (2/3)

  1. align-items alinhamento no contraeixo


Como funcionam os filhos de flexbox (3/3)

  1. align-self alinhamento no contraeixo apenas deste filho

  2. gap define um espaço mínimo entre filhos

Grid

Layouts de 2D


CSS Grid Layout


Exemplo usando grid

  1. CSS (dos filhos)
    header {
      grid-column: 1 / 3;
    }
    
    nav {
      grid-column: 1 / 2;
      grid-row: 2 / 3;
    }
    section {
      grid-column: 2 / 3;
      grid-row: 2 / 3;
    }
    footer {
      grid-column: 1 / 3;
      grid-row: 3 / 4;
    }
    

    ::: result .full-width height: 250px; display: grid; grid-template-rows: 60px 1fr auto; grid-template-columns: 90px 1fr;

    :::


Conheça o Grid Garden 🥕


Jogo Grid Garden 🌐 ~ melhor professor de grid ~


Conceitos sobre Grid

  1. Calha: traço entre linhas ou colunas (ou início/final)
  2. Célula: espaço entre quatro calhas

Como funciona o Grid (1/3)

  1. grid-column, grid-row especifica as calhas da célula onde o filho será colocado

    .item-a {
      grid-column: 2 / 5;
      grid-row: 1 / 3;
    }
    

Como funciona o Grid (2/3)

  1. grid-area especifica nome da área onde o filho será colocado

    .item-a {
      grid-area: header;
    }
    .item-b {
      grid-area: main;
    }
    .item-c {
      grid-area: sidebar;
    }
    .item-d {
      grid-area: footer;
    }
    

Como funciona o Grid (3/3)

  1. justify-items
  2. align-items
  3. justify-content
  4. align-content
  5. grid-auto-columns, grid-auto-rows
  6. justify-self
  7. align-self
  8. Valor masonry para trilhas
  9. Veja o guia completo de Grid em CSS Tricks

Alterando a visibilidade

Fazendo elementos aparecerem ou sumirem


Usando display

Problema: não é possível fazê-lo desaparecer/ressurgir com transição se ele vai para (ou de) display: none


A propriedade visibility (na MDN)


A propriedade opacity (na MDN)

  1. ↙️ Comparação entre display, visibility e opacity

A propriedade overflow (na MDN)


Web Fonts

Usando fontes não-instaladas


Web Fonts


Web Fonts (usando)

  1. Descrever a fonte no arquivo CSS usando @font-face {...}:
    @font-face {
      font-family: "Emblema One";    /* dando um nome à fonte */
      src: url("fonts/EmblemaOne-Regular.woff2") format('woff2'), /* 1º formato */
           url("fonts/EmblemaOne-Regular.woff")  format('woff'),  /* 2º formato */
           url("fonts/EmblemaOne-Regular.ttf")   format('ttf');   /* 3º formato */
    }
    
  2. Usar a fonte:
    h1 {
      font-family: "Emblema One", sans-serif;
    }
    
    • Sempre coloque uma segunda opção (e.g., sans-serif)

Formatos de fonte e os navegadores


Usando fontes “mais facinho”


Referências