Las transformaciones son una de las caracter铆sticas de CSS m谩s interesantes y potentes que se introducen en el lenguaje para convertir las hojas de estilo en un sistema capaz de realizar efectos visuales 2D y 3D. Con ellas podemos hacer cosas como mover elementos, rotarlos, aumentarlos o disminuirlos y otras transformaciones relacionadas o combinadas.
La propiedad transform
Estas transformaciones se pueden efectuar en CSS mediante la propiedad transform
que permite recibir una funci贸n de transformaci贸n determinada, la cu谩l ser谩 aplicada en el elemento HTML en cuesti贸n seleccionado mediante CSS. Dicho elemento HTML se ver谩 transformado visualmente.
Propiedad | Descripci贸n | Valor |
---|---|---|
transform |
Aplica una (o varias) transformaciones CSS al elemento. | funci贸n 1, funci贸n 2, funci贸n 3... |
As铆 pues, una vez elegimos una de las transformaciones de la lista anterior, las podemos aplicar mediante esta propiedad, escogiendo su funci贸n de transformaci贸n relacionada. Por ejemplo, imagina que queremos transformar el elemento HTML con clase element
y trasladarlo 25
p铆xels a la derecha y 150
p铆xels hacia abajo:
.element {
transform: translate(25px, 150px);
}
En este ejemplo, se aplica una funci贸n de transformaci贸n, concretamente translate()
, con unos valores espec铆ficos para X e Y. Sin embargo, a煤n no conocemos bien las funciones disponibles, as铆 que veamos que tipos de transformaciones existen en CSS.
Funciones 2D
Podemos realizar las siguientes transformaciones:
Tipo de transformaci贸n | Descripci贸n |
---|---|
Translaci贸n 2D | Desplaza un elemento en el eje X (izquierda, derecha) y/o en el eje Y (arriba, abajo) |
Escalado 2D | Escala el elemento una determinada cantidad m谩s grande o m谩s peque帽a. Tambi茅n se puede voltear. |
Rotaci贸n 2D | Gira el elemento sobre su eje X o sobre su eje Y. Tambi茅n se puede girar sobre s铆 mismo. |
Deformaci贸n 2D | Inclina el elemento sobre su eje X o sobre su eje Y. |
En los enlaces anteriores podr谩s encontrar m谩s informaci贸n sobre cada una de las funciones de transformaci贸n. Pero adem谩s, como veremos m谩s tarde, tambi茅n podemos realizar transformaciones en el 谩mbito 3D.
Transformaciones m煤ltiples
Recuerda que si estableces varias propiedades transform
en el mismo elemento con diferentes funciones de transformaci贸n, siguiendo la herencia y cascada que se aplica siempre en cualquier propiedad CSS, la segunda propiedad transform
sobreescribir谩 a la anterior propiedad transform
, perdiendo el valor de la primera y aplicando s贸lo el de la segunda:
.element {
transform: rotate(5deg); /* No hace efecto */
transform: scale(2); /* Sobreescribe la anterior */
}
Para evitar este comportamiento, se pueden emplear m煤ltiples transformaciones separ谩ndolas mediante espacio. En el siguiente ejemplo, aplicamos una funci贸n de rotaci贸n, una funci贸n de escalado y una funci贸n de traslaci贸n de forma simult谩nea:
.element {
transform: rotate(5deg) scale(2) translate(25px, 150px);
}
Recuerda que tambi茅n es posible usar propiedades personalizadas de CSS (variables CSS), permitiendo ser m谩s flexibles a la hora de cambiar transformaciones:
.element {
--rotate-z: rotate(5deg);
--scale: scale(2);
--x: 25px;
--y: 150px;
transform: var(--rotate-z) var(--scale) translate(var(--x), var(--y));
}
Observa que puedes tanto crear variables con las funciones de transformaci贸n (en el ejemplo, rotate()
y scale()
), como guardar los valores directamente (en el ejemplo, --x
e --y
) y luego utilizarlos en el interior de la funci贸n de transformaci贸n.
Orden de transformaci贸n
Otro detalle que conviene tener en cuenta a la hora de aplicar m煤ltiples transformaciones es que el orden de transformaci贸n importa. No es lo mismo realizar una rotaci贸n y luego una translaci贸n, que la misma translaci贸n primero y luego la misma rotaci贸n. Ve谩moslo en un ejemplo:
.element {
width: 50px;
height: 50px;
background: grey;
transform: translate(400px, 100px) rotate(50deg);
}
En este primer ejemplo, trasladamos el elemento 400
p铆xels a la derecha y 100
p铆xels hacia abajo. Posteriormente, rotamos 50
grados el elemento sobre s铆 mismo.
Veamos que ocurre si alternamos el orden:
.element {
width: 50px;
height: 50px;
background: grey;
transform: rotate(50deg) translate(400px, 100px);
}
En este segundo ejemplo, primero realizamos la rotaci贸n de 50
grados sobre s铆 mismo, por lo que al realizar la translaci贸n posteriormente, no se hace en horizontal como en el primer ejemplo, sino que se realiza teniendo en cuenta la rotaci贸n previa realizada.
Punto de origen
La propiedad transform-origin
nos permite cambiar el punto de origen de una transformaci贸n, cosa que en algunos casos puede resultar bastante 煤til. Dicha funci贸n recibe por par谩metro la posici贸n de origen de cada eje (X e Y), que podemos indicar, por ejemplo, con porcentajes, y que por defecto, est谩 establecida a 50% 50%:
Propiedades | Formato | Significado |
---|---|---|
transform-origin |
Cambia el punto de origen del elemento en una transformaci贸n. |
Para ejemplificar esto, vamos a ver la rotaci贸n de un rect谩ngulo, donde se ve muy claramente:
.element {
width: 50px;
height: 150px;
background: grey;
transform-origin: 0% 0%;
transform: translate(50px, 0) rotate(45deg);
}
Observa que hemos cambiado el punto de origen de 50% 50% (valores por defecto) a 0% 0%. Es decir, hemos pasado de el punto central del rect谩ngulo, a el extremo superior-izquierdo del rect谩ngulo. Por lo tanto, a la hora de hacer la rotaci贸n tomar谩 ese punto como referencia.
No hay comentarios.:
Publicar un comentario
Nota: s贸lo los miembros de este blog pueden publicar comentarios.