CodeGym /Curso de Java /Frontend SELF ES /Transformaciones combinadas

Transformaciones combinadas

Frontend SELF ES
Nivel 23 , Lección 2
Disponible

3.1 Fundamentos de las transformaciones combinadas

CSS ofrece la posibilidad de combinar varias transformaciones para crear efectos visuales complejos. Estas transformaciones pueden incluir translate, rotate, scale y skew, que pueden ser combinadas en una sola propiedad transform.

La propiedad transform puede contener varias funciones de transformación separadas por espacios. Se aplicarán secuencialmente, en el orden en que se especifican. Entender cómo las distintas transformaciones interactúan entre sí es clave para crear animaciones y efectos complejos.

Sintaxis:

    
      element {
        transform: function1() function2() ... functionN();
      }
    
  

Ejemplo:

CSS
    
      element {
        transform: translate(20px, 20px) rotate(45deg) scale(1.5) skew(10deg, 5deg);
      }
    
  

Traslación y rotación

En este ejemplo, el elemento se desplaza 50 píxeles a la derecha y 50 píxeles hacia abajo, luego se rota 45 grados.

Ejemplo:

HTML
    
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Traslación y rotación</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #3498db;
              transform: translate(50px, 50px) rotate(45deg);
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  

Explicación del código:

  • .box: el elemento primero se desplaza 50 píxeles a la derecha y hacia abajo, luego se rota 45 grados en el sentido de las agujas del reloj

3.2 Análisis de diferentes combinaciones

1. Escalado e inclinación

En este ejemplo, el elemento se escala 1.5 veces en ambos ejes, luego se inclina 20 grados en el eje X y 10 grados en el eje Y.

Ejemplo:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Escalado e inclinación</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #e74c3c;
              transform: scale(1.5) skew(20deg, 10deg);
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  

Explicación del código:

  • .box: el elemento primero se escala 1.5 veces en ambos ejes, luego se inclina 20 grados en el eje X y 10 grados en el eje Y

2. Traslación, rotación y escalado

En este ejemplo, el elemento se desplaza 100 píxeles a la derecha, se rota 30 grados y se escala 2 veces en el eje X y 1.5 veces en el eje Y.

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Traslación, rotación y escalado</title>
          <style>
            .box {
              width: 100px;
              height: 100px;
              background-color: #2ecc71;
              transform: translate(100px, 0) rotate(30deg) scale(2, 1.5);
            }
          </style>
        </head>
        <body>
          <div class="box"></div>
        </body>
      </html>
    
  

Explicación del código:

  • .box: el elemento primero se desplaza 100 píxeles a la derecha, luego se rota 30 grados y se escala 2 veces en el eje X y 1.5 veces en el eje Y

3.3 Impacto del orden de las transformaciones

Cuando se combinan varias transformaciones, es importante entender que se aplican secuencialmente. Esto significa que cada transformación subsiguiente afectará el resultado de la anterior.

En este ejemplo se muestra cómo el cambio en el orden de las transformaciones afecta al resultado final.

Ejemplo A: primero rotar, luego trasladar

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Primero rotar, luego trasladar</title>
          <style>
            .box-a {
              width: 100px;
              height: 100px;
              background-color: #3498db;
              transform: rotate(45deg) translate(50px, 50px);
            }
          </style>
        </head>
        <body>
          <div class="box-a"></div>
        </body>
      </html>
    
  

Ejemplo B: primero trasladar, luego rotar

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Primero trasladar, luego rotar</title>
          <style>
            .box-b {
              width: 100px;
              height: 100px;
              background-color: #e74c3c;
              transform: translate(50px, 50px) rotate(45deg);
            }
          </style>
        </head>
        <body>
          <div class="box-b"></div>
        </body>
      </html>
    
  

Explicación del código:

  • .box-a: el elemento primero se rota 45 grados, luego se desplaza 50 píxeles a la derecha y hacia abajo, lo que hace que el elemento se mueva en diagonal desde su nueva posición después de la rotación
  • .box-b: el elemento primero se desplaza 50 píxeles a la derecha y hacia abajo, luego se rota 45 grados, lo que hace que el elemento gire en relación con su nueva posición
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION