Con la propiedad backface-visibility podemos hacer cosas geniales como tarjetitas que se voltean 😈. Por ejemplo, estas tarjetitas que hice para un blog de Platzi donde aprendemos a hacer un juego con Vue 👀👇
.
!Backface
.
El concepto es simple, puede costar un poquito entenderlo al inicio, pero al cuando lo entiendes se vuelve sencillo:
.
Tenemos un elemento, ese elemento tiene una parte de adelante y una parte de atrás, no importa si el elemento es plano. La propiedad backface-visibility mostrará u ocultará esa cara de atrás dependiendo de lo que esta propiedad indique.
.
¿Esto que significa? Bueno, que si pones tu backface-visibility como hidden, la parte de atrás de tu tarjeta no se verá, pero la de adelante sí; es decir, si tu le pusieras un transform: rotateX(180deg) no verías nada, porque justamente estarías viendo la cara de atrás del elemento, que está oculta por el backface-visibility ☝👀.
.
Por cierto, si quieres ver el blog donde hago el juego usando estas propiedades de backface-visibility puedes mirarlo aquí: Guía desde cero: tu propio juego de Rick and Morty con Vue.js
Recursos
Resumen
La propiedad backface-visibility de CSS permite mostrar la cara posterior de un elemento. Esta propiedad recibe dos valores: visible (visible) y hidden (oculto); por defecto, su valor es visible.
selector { backface-visibility: visible; backface-visibility: hidden; }
La cara posterior de un elemento siempre tiene un fondo transparente, por lo que al ser visible y realizar una transformación en un solo eje, mostrará un efecto de imagen espejo. Mira la siguiente imagen y observa cómo Alicia cambia de lugar.
En cambio, si el valor es hidden no mostrará contenido. Con esto podemos realizar que un elemento se muestre al ocultarse otro, como un efecto de voltear una carta.
Crea el efecto de voltear una carta con backface-visibility
Como punto inicial, necesitarás un elemento padre con dos elementos hijos, los cuales representarán la cara frontal y posterior de la carta. Te dejo este código para que empieces, aunque no es obligatorio, ya que se hablará de manera general en la explicación.
Ahora sigamos los siguientes pasos:
- Al elemento padre agrega una posición relativa; y a los hijos, una posición absoluta. Esto provocará que los elementos hijos estén uno sobre el otro con respecto al eje Z dentro del elemento padre.
.padre { position: relative; } .hijos{ position: absolute; }
- Al elemento padre agrega la propiedad para que la transformación sea en 3D.
.padre { transform-style: preserve3d; }
- Al elemento que deba estar en la vista posterior, rótalo 180 grados sobre el eje X o Y dependiendo de lo que esperes. Observarás el efecto espejo, pero aún no está listo.
.cara-posterior { transform: rotateY(180deg); }
- A los elementos hijos, agrega la propiedad
backface-visibilitycon el valorhidden. Observarás que el contenido frontal y posterior se han situado como una tarjeta. Solo faltaría añadir un accionador para la animación.
.hijos { backface-visibility: hidden; }
- Al elemento padre, agrega un accionador para la animación que consista en rotar todo el contenido para mostrar la vista posterior al usuario.
.padre:hover { transform: rotateY(180deg); }
Y listo, tienes el efecto de voltear una tarjeta mediante la propiedad backface-visibility.
Contribución creada por Andrés Guano.