cefet_front_end

CSS parte 4

Display, Flexbox e Grid 🐸🥕


Na última aula (1/3)


Na última aula: vídeos (2/3)

<video src="videos/fendadobiquini.mp4" controls></video>

Na última aula: Web Fonts (3/3)

  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.ttf")   format('ttf');   /* 2º formato */
    }
    
  2. Usar a fonte:
    h1 {
      font-family: "Emblema One", sans-serif;
    }
    
    • Sempre coloque uma segunda opção (e.g., sans-serif)

Roteiro de hoje

  1. Propriedade display
  2. Flexbox
  3. Grid

A propriedade display

e seus diversos valores


A propriedade display (na MDN)


A propriedade display (cont.)


Display: inline-block


Resultado do display inline-block


Display: table-*

Hoje em dia: preferimos flex ou grid ;)


Flexbox

Layouts de 1D


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”


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;
}

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

flex-direction define o eixo principal e o contraeixo


Como funciona o flexbox (2/3)

justify-content distribui espaço em branco no eixo principal

align-items alinhamento no contraeixo

align-content distribui espaço em branco no contraeixo


Como funcionam os filhos de flexbox (3/3)

flex define o peso do elemento no eixo na hora de definir seu tamanho

align-self alinhamento no contraeixo apenas deste filho

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

order define uma ordem diferente da do código fonte


Grid

Layouts de 2D


CSS Grid Layout


Exemplo usando grid


Conheça o Grid Garden 🥕

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)


Como funciona o Grid (2/3)

grid-template-areas dá nomes às áreas da grid

  .container {
    display: grid;
    grid-template-columns: repeat(1fr, 4);
    grid-template-rows: repeat(1fr, 3);
    grid-template-areas: 
      "header header header header"
      "main main . sidebar"
      "footer footer footer footer";
  }

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. Veja o guia completo de Grid em CSS Tricks

Referências