A Propriedade CSS transform permite modificar o espaço coordenado do modelo de formatação CSS. Usando-a, elementos podem ser movimentados, rotacionados, ter seu tamanho ajustado e inclinados de acordo com os valores definidos.
Uma transição ocorre quando um elemento muda de um estado para outro e o navegador preenche essa mudança de estado com uma sequência de quadros intermediários. Possui um começo e um estado final.
Veremos, então, os efeitos visuais em duas dimensões:
translate( ) => translate permite deslocar um elemento de sua posição atual até certa quantidade de unidades definidas para os eixos X e Y. Este método possui três variantes:
Como se pode imaginar, o translate funciona como a junção do translateX e translateY, então iremos utilizar apenas o primeiro no exemplo a seguir.
Podemos notar que a div foi movida 50px para a direita e 100px para baixo.
rotate( ) => como se pode imaginar, permite rotacionar um objeto, de um ângulo informado como parâmetro. No exemplo a seguir, a div é rotacionada de 180 graus.
Caso desejássemos que a rotação se desse no sentido anti-horário, o valor do parâmetro deveria ser negativo.
scale( ) => altera a escala do elemento, ou seja, aumenta ou diminui suas dimensões. Para aumentar as dimensões (nos eixos X, Y ou ambos) deve-se informar valores positivos, já para reduzir as dimensões, os valores devem ser negativos.
Este método possui também três variantes, que são:
Novamente, utilizaremos apenas o método composto (scale) para exemplificar esta funcionalidade.
skew( ) => inclina o elemento de forma que suas laterais e bases formem um determinado ângulo com os eixos X e Y. Assim como o translate e o scale, o skew possui variantes:
Utilizando o skew composto, veremos abaixo um exemplo de inclinação nos dois eixos.
Veremos, agora, os seguintes métodos de transformação 3D:
A propriedade rotate gira um elemento em torno do eixo X, Y ou Z em um determinado grau
Para podemos falar de 3D precisamos também falar de perspectiva, pois não conseguiremos fazer uma figura 3D sem ter o mínimo de noção de perspectiva. Para "adicioná-la" existem duas maneiras, uma seria utilizando diretamente a propriedade "Perspective" ou adicionando um valor perspective() na propriedade Transform.
É preciso entender como a transformação 3D acontece. Criar um objeto 3D é simples, tudo que necessitamos fazer é decidir um estilo para nossa transformação 3D e criar uma perspectiva. Assim podemos começar a mover as formas no nosso espaço 3D. Para relembrar, quando utilizamos uma propriedade 3D, temos que definir todos os prefixos de todos os elementos.
HTML
CSS
Podemos ver o resultado abaixo
Esse efeito é muito conhecido entre os usuários de iPhone. Para obtê-lo se insere em um container dois conteúdos, um na frente e outro no verso e mostra-se um ou outro conteúdo segundo uma animação.
HTML
Para começar, precisamos aplicar a perspectiva para o elemento .container iniciar o espaço 3D.
CSS
No entanto, a simples aplicação da propriedade "perspective" no seu código não fará com que o objeto seja renderizado de forma tridimensional na tela. O motivo é que, em CSS, para exibir objetos dessa forma, precisamos fazer uso da propriedade "transform-style". No nosso caso, estamos assumindo que a nossa cena está em 3D.
Agora definiremos as dimensões da carta e suas propriedades.
Largura e altura precisam ser de 100% para definir a área que o 3D irá aplicar.
Agora, para fazer com que a parte de trás da carta apareça no verso correto, nós temos que rotacioná-la.
Devemos rotacionar também o elemento .frente para que o mesmo não fique invertido após a transição.
E finalmente, aplicamos posição absoluta para os elementos .frente e .verso para que as cartas fiquem relativas ao elemento .container. Largura e altura precisam ser de 100% também para definir a área que o 3D irá aplicar. A propriedade "backface-visibility: hidden" faz com que a face de trás da carta não apareça e nem se sobreponha no momento do efeito.
Veja o resultado:
Animação CSS. Site by Elton Rodrigo