View on GitHub

aulas-programacao-web

Materiais de Aula - Programação de Computadores com tecnologias Web

Transições

📽 Veja esta vídeo-aula no Youtube

Quando uma propriedade CSS é alterada, o navegador faz a transição do estado anterior para o novo estado. Por exemplo, ao mudar a cor de um elemento de vermelho para azul, o navegador faz a mudança direta de cores, conforme definido.

O CSS permite que você controle a maneira como essa transição será feita usando as transições. Elas estão disponíveis somente para algumas propriedades, não todas.

O navegador calcula os valores intermediários para a(s) propriedade(s).

Propriedades:

Você pode usar a propriedade de atalho transition passando os 4 valores na sequência.

ease

step

cubic-bezier

Você pode usar geradores como este para criar transições diversas, com a sua assinatura.

Animações

Você pode criar animações mais complexas usando as propriedades animation e @keyframes.

Primeiro definimos uma lista de quadros (frames) a serem seguidos.

Neste exemplo (chamado exemplo-1) temos 2 quadros, um inicial e um final:

@keyframes exemplo-1 {
    from {
        /* regras */
    }
    to {
        /* regras */
    }
}

Neste exemplo (exemplo-2), 3 quadros em 0%, 30% e 100% do tempo:

@keyframes exemplo-1 {
    0% {
        /* regras */
    }
    30% {
        /* regras */
    }
    100% {
        /* regras */
    }
}

Aplicamos uma animação usando animation-name e animation-duration:

#texto-animado {
    animation-name: exemplo-1;
    animation-duration: 5s;
}

Outros ajustes:

Exemplos usando a animação abaixo:

@keyframes verde-para-azul {
    from {
        background-color: green;
    }
    to {
        background-color:navy;
        color: white;
    }
}

Transformações

Apesar de serem frequentemente utilizadas em conjunto com transições e animações, as tranformações são independentes e não relacionadas ao tema.

Podemos realizar as transformações usando as funções a seguir como valores da propriedade transform.

Todas as transformações no eixo Z exigem a presença da transformação perspective, que deve ter um valor diferente de zero. Como o eixo Z afasta ou aproxima o elemento da tela, precisamos definir a perspectiva, ou seja, a distância inicial a ser considerada. Por exemplo, um elemento com perspective(200px) que receba translateZ(100px) vai ser exibido maior, pois foi trazido para a frente metade do caminho.

Há uma explicação excelente aqui, em inglês.

Combinado com transformações, pode trazer efeitos memoráveis.

Veja esse exemplo:

#texto {
  transition: all 3s ease;
}

#texto:hover {
  transform: perspective(100px) rotateY(30deg);
  box-shadow: 10px 10px 5px 0 black;
}