10. Transformaciones 2D

Las transformaciones CSS te permiten mover, rotar, escalar y sesgar elementos. En este capítulo estudiaremos acerca de la siguiente propiedad:

  • transform

Métodos de transformación CSS 2D

Con la propiedad transform podemos usar los siguientes métodos:

  • translate()
  • rotate()
  • scaleX()
  • scaleY()
  • scale()
  • skewX()
  • skewY()
  • skew()
  • matrix()

El método translate()

El método translate() mueve un elemento desde su posición actual (según los parámetros proporcionados para el eje X y el eje Y). El siguiente ejemplo mueve el elemento <div> 50 píxeles a la derecha y 100 píxeles hacia abajo desde su posición actual.

Ejm

<!DOCTYPE html>
<html lang="es">
<head>
<style>
div {
width: 300px;
height: 100px;
background-color: yellow;
border: 1px solid black;
transform: translate(50px, 100px);
}
</style>
</head>
<body>
<h1>El método translate()</h1>
<div>
El elemento div será movido 50px hacia la derecha y 100 hacia abajo de su
posición actual
</div>
</body>
</html>

El método rotate()

El método rotate() gira un elemento en sentido horario o antihorario según un grado determinado. El siguiente ejemplo gira el elemento <div> en el sentido de las agujas del reloj 20 grados.

Ejm

<!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>

El método scale()

El método scale() aumenta o disminuye el tamaño de un elemento (según los parámetros dados para el ancho y alto). El siguiente ejemplo aumenta el elemento <div> para que sea dos veces su ancho original y tres veces su altura original.

Ejm

<!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>El método scale()</h1>

<p>El método scale() incrementa o decrementa el tamaño de un elemento.</p>

<div>
Este elemento div es dos veces su ancho original y tres veces su altura
original.
</div>
</body>
</html>

scaleX()

El método scaleX() incrementa o decrementa el ancho de un elemento.

Ejm

div {
  transform: scaleX(2);
}

scaleY()

El método scaleY() incrementa o decrementa el alto de un elemento.

Ejm

div {
transform: scaleY(3);
}

El siguiente ejemplo reduce el elemento <div> a la mitad de su altura original:

Ejm

div {
  transform: scaleY(0.5);
}

skewX()

El método skewX() sesga un elemento a lo largo del eje X en el ángulo dado. El siguiente ejemplo sesga el elemento <div> 20 grados a lo largo del eje X.

Ejm

div {
  transform: skewX(20deg);
}

skewY()

El método skewY() sesga un elemento a lo largo del eje Y en el ángulo dado. El siguiente ejemplo sesga el elemento <div> 20 grados a lo largo del eje Y.

Ejm

div {
  transform: skewY(20deg);
}

skew()

El método skew() sesga un elemento a lo largo de los ejes X e Y en los ángulos dados. El siguiente ejemplo sesga el elemento <div> 20 grados a lo largo del eje X y 10 grados a lo largo del eje Y.

Ejm

div {
  transform: skew(20deg, 10deg);
}

Si no se especifica el segundo parámetro, tiene valor cero. Entonces, el siguiente ejemplo sesga el elemento <div> 20 grados a lo largo del eje X.

Ejm

div {
  transform: skew(20deg);
}

matrix()

El método matrix() combina todos los métodos de transformación 2D en uno. Toma seis parámetros, que contienen funciones matemáticas, que le permiten rotar, escalar, mover (traducir) y sesgar elementos.

Los parámetros son los siguientes: matrix(scaleX(),skewY(),skewX(),scaleY(),translateX(),translateY()).

Ejm

div {
  transform: matrix(1, -0.3, 0, 1, 0, 0);
}
Scroll al inicio