Card con dos caras diferentes

En este como se trata de crear una tarjeta con dos caras diferentes, y que puede girar en 3D para mostrar una u otra. Las típicas flip card o flahscards.

En el ejemplo se usan dos imágenes, pero cada cara de la tarjeta puede tener el contenido que quieras: una puede ser una imagen y la otra una descripción, por ejemplo.

Puedes usarla como flashcards: una cara para una pregunta y la otra para un respuesta.

En el ejemplo el cambio de una cara a otra se realiza al pasar el ratón por encima (hover). Todo se realiza con HTML y CSS, no es necesario Javascript.

cara uno
cara 2

El código HTML

El contenido HTML es un simple bloque div contenedor para fijar los límites de la tarjeta.

Dentro tenemoas la tarjeta propiamente dicha: un bloque div con dos bloques hijos, cada uno de los bloques hijos es una cara de la tarjeta.

<div class="cont">

<div class="doubleCard">

<div class="frontCard">

<img src="/como_se_hace/imgs/coche1.png">

</div>

<div class="backCard">

<img src="/como_se_hace/imgs/coche2.png">

</div>

</div>

</div>

 

Los estilos CSS

Los estilos CSS son muy simples, lo fundamental es el giro alrededor del eje Y (eje vertical) en modo 3D y con una perspectiva que simule que vemos de lejos como gira la tarjeta y muestra una u otra cara.

El contenedor fija los límites del marco de giro y la perspectiva. Cuando el ratón pase por encima se produce el giro de la tarjeta (class doubleCard)

La tarjeta en si (doubleCard) tiene posición relativa para que las caras frontal y lateral se coloquen en forma absoluta dentro de este bloque. Posee una propiedad transition donde le marcamos el tiempo que emplea en girar, y que haga el giro con efecto 3D

Por último las caras de la tarjeta son dos bloques con posición absoluta, uno de ellos, la cara oculta, está girado 180º al rededor del ejeY. Ambos poseen back-visibility en hidden para que la segunda cara (back) no tape a la primera (front).

.cont{

perspective: 800px;

width: 350px;

height: 200px;

}

.doubleCard{

position: relative;

width: 100%;

height: 100%;

transition: transform 0.6s;

transform-style: preserve-3d;

}

.cont:hover .doubleCard{

transform: rotateY(180deg);

}

.frontCard, .backCard{

position: absolute;

backface-visibility: hidden;

top:0 ;

left: 0;

}

.backCard{

transform: rotateY(180deg)

}

Esta card con dos caras puede tener una imagen en una cara y una explicación en la otra por ejemplo. Aquí a modo de muestra se usan dos imágenes, pero también puedes usar imágenes de fondo (background-image)