Dar profundidad a los elementos de una página web es posible gracias a las transformaciones 3D en CSS. Estas propiedades permiten que un elemento deje de ser plano y adquiera sensación de volumen, distancia y punto de vista, tal como ocurre cuando observamos un escenario desde distintos ángulos. A continuación se desglosan las tres propiedades fundamentales y cómo aplicarlas en código real.
¿Qué propiedades controlan las transformaciones 3D en CSS?
Antes de escribir una sola línea de código, conviene comprender las tres propiedades que hacen posible el efecto tridimensional.
¿Cómo funciona transform-style?
La propiedad transform-style [0:17] indica al navegador si los elementos hijos deben renderizarse en un plano bidimensional o en un espacio tridimensional. Acepta dos valores:
- flat: el elemento permanece en 2D, sin sombra ni profundidad.
- preserve-3d: activa el contexto tridimensional para que los hijos respeten la perspectiva del contenedor.
Sin esta declaración, cualquier rotación o traslación seguirá viéndose como un simple giro en pantalla plana.
¿Qué hace la propiedad perspective?
La propiedad perspective [1:02] define la distancia entre el observador y el plano Z. Cuanto menor sea el valor, más exagerado será el efecto de profundidad; cuanto mayor sea, más sutil. En la práctica, es lo que genera la sensación de que ciertos elementos están más lejos o más cerca del usuario.
¿Para qué sirve perspective-origin?
perspective-origin [1:30] modifica el punto desde el cual se observa la escena. Por defecto, la vista se centra en el elemento, pero al cambiar sus valores se puede simular que el usuario mira desde la izquierda, la derecha, arriba o abajo, alterando completamente la percepción del espacio.
¿Cómo aplicar estas propiedades en código?
El ejemplo práctico parte de una estructura HTML sencilla: un div contenedor con clase container y un div hijo con clase item [2:07].
html
<div class="container">
<div class="item"></div>
</div>
En CSS se establece la relación position relative en el padre y position absolute en el hijo [2:33], un patrón habitual para que el elemento absoluto se adhiera al contenedor.
css
.container {
position: relative;
width: 100px;
height: 100px;
border: 5px solid hotpink;
perspective: 100px;
transform-style: preserve-3d;
}
.item {
position: absolute;
width: 100px;
height: 100px;
background: papayawhip;
opacity: 0.5;
border: 3px solid teal;
transform: rotateY(20deg);
}
¿Qué ocurre al agregar perspective al contenedor?
Al declarar perspective: 100px [3:31] en .container, se crea un espacio de profundidad de cien píxeles. A simple vista nada cambia, pero internamente el navegador ya calcula distancias en el eje Z para cualquier hijo que se transforme.
¿Cómo se visualiza la rotación en 3D?
Cuando al hijo se le aplica transform: rotateY(20deg) [4:44], el plano se inclina de manera evidente gracias al contexto 3D heredado del padre. Al modificar el ángulo —por ejemplo a 90 grados— el elemento desaparece visualmente porque queda perpendicular a la pantalla, confirmando que la rotación ocurre en un eje real de profundidad.
¿Qué elementos tener en cuenta al trabajar en 3D?
- Siempre declara perspective en el contenedor padre, no en el hijo.
- Usa transform-style: preserve-3d para que los descendientes participen del espacio tridimensional.
- Ajusta perspective-origin cuando necesites cambiar el punto de vista del observador.
- Experimenta con distintos valores de ángulo en
rotateX, rotateY o rotateZ para comprender cómo se comporta cada eje.
- Añade
opacity a los elementos hijos para visualizar mejor la superposición de planos.
Estas tres propiedades abren la puerta a animaciones y composiciones visuales mucho más expresivas. Existe además otra propiedad llamada backface-visibility [5:38] que controla si la cara trasera de un elemento rotado es visible o no, lo cual complementa todo lo visto aquí. ¿Ya experimentaste con estos valores? Comparte tus resultados y dudas en los comentarios.