As transformações CSS permitem mover, girar, dimensionar e inclinar elementos.
Passe o mouse sobre o elemento abaixo para ver uma transformação 2D:
Neste capítulo você aprenderá sobre a seguinte propriedade CSS:
transform
Os números na tabela especificam a primeira versão do navegador que oferece suporte total à propriedade.
Property | |||||
---|---|---|---|---|---|
transform | 36.0 |
10.0 |
16.0 |
9.0 |
23.0 |
Com a propriedade CSS transform
você pode usar os seguintes métodos de transformação 2D:
translate() rotate() scaleX() scaleY() scale() skewX() skewY() skew() matrix()
Dica: você aprenderá sobre transformações 3D no próximo capítulo.
translate()
O método translate()
move um elemento de sua posição atual (de acordo com aos parâmetros fornecidos para o eixo X e o eixo Y).
O exemplo a seguir move o elemento <div> 50 pixels para a direita, e 100 pixels abaixo de sua posição atual:
div
{
transform: translate(50px, 100px);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
transform: translate(50px,100px);
}
</style>
</head>
<body>
<h1>The translate() Method</h1>
<p>The translate() method moves an element from its current position:</p>
<div>
This div element is moved 50 pixels to the right, and 100 pixels down from its current position.
</div>
</body>
</html>
rotate()
O método rotate()
gira um elemento no sentido horário ou anti-horário de acordo com um determinado grau.
O exemplo a seguir gira o elemento <div> no sentido horário em 20 graus:
div
{
transform: rotate(20deg);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
}
div#myDiv {
transform: rotate(20deg);
}
</style>
</head>
<body>
<h1>The rotate() Method</h1>
<p>The rotate() method rotates an element clockwise or counter-clockwise.</p>
<div>
This a normal div element.
</div>
<div id="myDiv">
This div element is rotated clockwise 20 degrees.
</div>
</body>
</html>
Usar valores negativos girará o elemento no sentido anti-horário.
O exemplo a seguir gira o elemento <div> no sentido anti-horário em 20 graus:
div
{
transform: rotate(-20deg);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
}
div#myDiv {
transform: rotate(-20deg);
}
</style>
</head>
<body>
<h1>The rotate() Method</h1>
<p>The rotate() method rotates an element clockwise or counter-clockwise.</p>
<div>
This a normal div element.
</div>
<div id="myDiv">
This div element is rotated counter-clockwise with 20 degrees.
</div>
</body>
</html>
escala()
O método scale()
aumenta ou diminui o tamanho de um elemento (de acordo com os parâmetros fornecidos para largura e altura).
O exemplo a seguir aumenta o elemento <div> para duas vezes sua largura original e três vezes sua altura original:
div
{
transform: scale(2, 3);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
margin: 150px;
width: 200px;
height: 100px;
background-color: yellow;
border: 1px solid black;
transform: scale(2,3);
}
</style>
</head>
<body>
<h1>The scale() Method</h1>
<p>The scale() method increases or decreases the size of an element.</p>
<div>
This div element is two times of its original width, and three times of its original height.
</div>
</body>
</html>
O exemplo a seguir diminui o elemento <div> para metade de sua largura e altura originais:
div
{
transform: scale(0.5, 0.5);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
margin: 150px;
width: 200px;
height: 100px;
background-color: yellow;
border: 1px solid black;
transform: scale(0.5,0.5);
}
</style>
</head>
<body>
<h1>The scale() Method</h1>
<p>The scale() method increases or decreases the size of an element.</p>
<div>
This div element is decreased to be half of its original width and height.
</div>
</body>
</html>
scaleX()
O método scaleX()
aumenta ou diminui o largura de um elemento.
O exemplo a seguir aumenta o elemento <div> para duas vezes sua largura original:
div
{
transform: scaleX(2);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
margin: 150px;
width: 200px;
height: 100px;
background-color: yellow;
border: 1px solid black;
transform: scaleX(2);
}
</style>
</head>
<body>
<h1>The scaleX() Method</h1>
<p>The scaleX() method increases or decreases the width of an element.</p>
<div>
This div element is two times of its original width.
</div>
</body>
</html>
O exemplo a seguir diminui o elemento <div> para metade de sua largura original:
div
{
transform: scaleX(0.5);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
margin: 150px;
width: 200px;
height: 100px;
background-color: yellow;
border: 1px solid black;
transform: scaleX(0.5);
}
</style>
</head>
<body>
<h1>The scaleX() Method</h1>
<p>The scaleX() method increases or decreases the width of an element.</p>
<div>
This div element is half of its original width.
</div>
</body>
</html>
scaleY()
O método scaleY()
aumenta ou diminui o altura de um elemento.
O exemplo a seguir aumenta o elemento <div> para três vezes seu valor original altura:
div
{
transform: scaleY(3);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
margin: 150px;
width: 200px;
height: 100px;
background-color: yellow;
border: 1px solid black;
transform: scaleY(3);
}
</style>
</head>
<body>
<h1>The scaleY() Method</h1>
<p>The scaleY() method increases or decreases the height of an element.</p>
<div>
This div element is three times of its original height.
</div>
</body>
</html>
O exemplo a seguir diminui o elemento <div> para metade de seu original altura:
div
{
transform: scaleY(0.5);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
margin: 150px;
width: 200px;
height: 100px;
background-color: yellow;
border: 1px solid black;
transform: scaleY(0.5);
}
</style>
</head>
<body>
<h1>The scaleY() Method</h1>
<p>The scaleY() method increases or decreases the height of an element.</p>
<div>
This div element is half of its original height.
</div>
</body>
</html>
skewX()
O método skewX()
distorce um elemento ao longo do eixo X pelo ângulo fornecido.
O exemplo a seguir inclina o elemento <div> 20 graus ao longo do Eixo X:
div
{
transform: skewX(20deg);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
}
div#myDiv {
transform: skewX(20deg);
}
</style>
</head>
<body>
<h1>The skewX() Method</h1>
<p>The skewX() method skews an element along the X-axis by the given angle.</p>
<div>
This a normal div element.
</div>
<div id="myDiv">
This div element is skewed 20 degrees along the X-axis.
</div>
</body>
</html>
skewY()
O método skewY()
distorce um elemento ao longo do eixo Y pelo ângulo fornecido.
O exemplo a seguir inclina o elemento <div> 20 graus ao longo do eixo Y:
div
{
transform: skewY(20deg);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
}
div#myDiv {
transform: skewY(20deg);
}
</style>
</head>
<body>
<h1>The skewY() Method</h1>
<p>The skewY() method skews an element along the Y-axis by the given angle.</p>
<div>
This a normal div element.
</div>
<div id="myDiv">
This div element is skewed 20 degrees along the Y-axis.
</div>
</body>
</html>
skew()
O método skew()
distorce um elemento ao longo dos eixos X e Y pelos ângulos fornecidos.
O exemplo a seguir inclina o elemento <div> 20 graus ao longo do eixo X e 10 graus ao longo do eixo Y:
div
{
transform: skew(20deg, 10deg);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
}
div#myDiv {
transform: skew(20deg,10deg);
}
</style>
</head>
<body>
<h1>The skew() Method</h1>
<p>The skew() method skews an element into a given angle.</p>
<div>
This a normal div element.
</div>
<div id="myDiv">
This div element is skewed 20 degrees along the X-axis, and 10 degrees along the Y-axis.
</div>
</body>
</html>
Se o segundo parâmetro não for especificado, ele terá valor zero. Portanto, o exemplo a seguir inclina o elemento <div> 20 graus ao longo do eixo X:
div
{
transform: skew(20deg);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
}
div#myDiv {
transform: skew(20deg);
}
</style>
</head>
<body>
<h1>The skew() Method</h1>
<p>The skew() method skews an element into a given angle.</p>
<div>
This a normal div element.
</div>
<div id="myDiv">
This div element is skewed 20 degrees along the X-axis.
</div>
</body>
</html>
matriz()
O método matrix()
combina todos os métodos de transformação 2D em um.
O método array() usa seis parâmetros, contendo funções matemáticas, que permite girar, dimensionar, mover (traduzir) e inclinar elementos.
Os parâmetros são os seguintes: matriz(escalaX(), skewY(), skewX(), escalaY(), traduzirX(), traduzirY())
div
{
transform: matrix(1, -0.3, 0, 1, 0, 0);
}
Experimente você mesmo →
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
}
div#myDiv1 {
transform: matrix(1, -0.3, 0, 1, 0, 0);
}
div#myDiv2 {
transform: matrix(1, 0, 0.5, 1, 150, 0);
}
</style>
</head>
<body>
<h1>The matrix() Method</h1>
<p>The matrix() method combines all the 2D transform methods into one.</p>
<div>
This a normal div element.
</div>
<div id="myDiv1">
Using the matrix() method.
</div>
<div id="myDiv2">
Another use of the matrix() method.
</div>
</body>
</html>
A tabela a seguir lista todas as propriedades de transformação 2D:
Aplica uma transformação 2D ou 3D a um elemento
Permite alterar a posição dos elementos transformados
Define uma transformação 2D, usando uma matriz de seis valores
Define uma translação 2D, movendo o elemento ao longo dos eixos X e Y
Define uma translação 2D, movendo o elemento ao longo do eixo X
Define uma translação 2D, movendo o elemento ao longo do eixo Y
Define uma transformação de escala 2D, alterando a largura e a altura dos elementos
Define uma transformação de escala 2D, alterando a largura do elemento
Define uma transformação de escala 2D, alterando a altura do elemento
Define uma rotação 2D, o ângulo é especificado no parâmetro
Define uma transformação de inclinação 2D ao longo dos eixos X e Y
Define uma transformação de inclinação 2D ao longo do eixo X
Define uma transformação de inclinação 2D ao longo do eixo Y