Gracias transformaciones CSS podemos conseguir efectos impactantes que combinados con las animaciones y transiciones CSS nos permitirán darle a nuestra web movimiento y dinamismo.
Existen dos tipos de transformaciones CSS; en 2D y en 3D. Es este tutorial voy a centrarme en las animaciones 2D y todos los parámetros de la propiedad transformation
que trabajan en 2D. Personalmente creo que las animaciones en 3D no son demasiado elegantes y sólo deben usarse para efectos muy concretos.
Transformaciones CSS en 2D
Tenemos cuatro funcionalidades con las que trabajar en dos dimensiones :
[ Imagen de las transformaciones ]
- translate( x, y ): Desplazamos un objeto en horizontal ( parametro x) y en vertical ( parametro y).
- scale( ): Escalamos un objeto. El valor 1. Corresponde al 100%. Un valor de 0.8 correspondería al 80%.
- rotate( ): Giramos un objeto. El valor se expresa en grados. Por ejemplo, para girar un objeto 45 grados utilizaremos: rotate(45deg).
- skew( x, y ): Distorsionamos cualquier elemento de nuestra web. El primer valor corresponde a la distorión horizontal y el segundo a la vertical, estos valores deben ser grados. Por ejemplo: skew(45deg,75deg).
Ejemplos básicos de transformaciones css
Para los siguientes ejemplos vamos a utilizar la propiedad transformation
combianda con transition
. La propiedad transition
nos permite que los cambios en cualquier elemento sean graduales.
1 2 3 |
div.ejemplo:hover > div{ transition: all 1s ease; } |
Así podremos observar como modificamos nuestros objetos. Si quieres conocer mejor como funciona transition te recomiendo este otro post de mi blog Transiciones con CSS
Translate
Trasladar un objeto 100px en horizontal.
1 2 3 4 5 |
#ejemplo1:hover div{ transform:translateX(100px); /* Sería igual a escribir transform:translate(100px,0px)*/ transition: all 1s ease; } |
Trasladar un objeto -25px en vertical.
1 2 3 4 |
#ejemplo2:hover div{ transform:translateY(-25px); /* Sería igual a escribir transform:translate(0px,-25px)*/ } |
Trasladar un objeto 150px horizontalmente 25px verticalmente.
1 2 3 4 5 |
#ejemplo3:hover div{ transform:translate(150px,25px); /* Sería igual a escribir transform:translateX(150px), translateY(25px)*/ transition: all 1s ease; } |
Trasladar un objeto tomando de referencia la anchura de nuestro objeto. Si en lugar de escribir el valor en px lo hacemos en porcentajes tomaremos de refencia las medidas del objeto a animar. Es decir, este círculo mide 90px, si escribimos transform:translateX(200%) deplazaremos nuestro objeto 180px. 100% correspondería a 90px.
1 2 3 |
#ejemplo4:hover div{ transform:translateX(200%); } |
Rotate
Girar 135 grados un elemento
1 2 3 |
#ejemplo5:hover div{ transform:rotate(135deg); } |
Cambiar el punto de origen de la transformación
En el ejemplo anterior hemos visto que el cuadrado gira desde su centro. Pero podemos cambiar el punto desde donde gira cualquier objeto con la propiedad transform-origin
.
transform-origin
: Admite tres parámetros: transform-origin( x-axis y-axis z-axis ). El primer valor indica el punto horizontal desde donde gira el objeto, el segundo el vertical y el tercero corresponde con la profundidad. El tercer valor sólo se utilizar para las transformaciones en 3D. Por lo que tanto no lo utilizaremos. Su valor por defecto es de 50% 50%. Esto equivale al centro del objeto.
Girando desde el vértice superior derecho.
1 2 3 4 5 |
#ejemplo6:hover div{ transform:rotate(135deg); transform-origin: right top; /* Esto equivale a transform-origin:100% 0%;*/ } |
Es este caso vamos a girar el objeto 360 grados. Y vamos a definir el punto de origen de la transformación en un 300% y 50% para el vertical. Con estos parámetros el recorrido será el de una circunferencia.
1 2 3 4 5 |
#ejemplo7:hover div{ transform:rotate(360deg); transform-origin: 300% 50%; } |
Scale
En este ejemplo aumentamos la escala de nuestro objeto un 125%. Recuerda que los valores para scale son número decimales. Siendo 1 igual al tamaño original.
1 2 3 |
#ejemplo8:hover div{ transform:scale(1.25); } |
Modificando sólo la escala horizontal, además el origen de la transformación será en el vértice superior izquierdo.
1 2 3 4 5 6 |
#ejemplo9:hover div{ transform:scale(3,1); /* 3 sería la escala hoizontal. 1 para la vertical, 1 se corresponde con el tamaño original*/ transform-origin: 0% 0%; /* Equivale a transform-origin: left top*/ } |
Skew
Distorsionando un objeto.
1 2 3 |
#ejemplo10:hover div{ transform:skew(10deg, 5deg); } |
Espero que este tutorial te haya resultado útil y te animes a crear tus propias transformaciones en CSS. Si tienes cualquier duda o sugerencia no dudes en dejarme un comentario.
0 comentarios
Trackbacks/Pingbacks