Introducción:
La idea es sencilla todo lo que quería era replicar la tarjeta Tinycards de Doulingo con CSS y HTML, para luego agregarle una animación que consiste en hacer que gire 360º grados sobre su eje.
Respecto al código intentare dar una breve explicación de ello a continuación.
1. Estructura en html
En esta parte solo esta el conjunto de elementos que forman la carta eso incluye 2 contenedores en el primero esta todo lo referente a la carta y en el segundo solo hay un texto.
<!DOCTYPE html>
<html lang="en-ES">
<head>
<meta charset="UTF-8">
<title>Cart Spins</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class = "Contenedor1">
<div class = "Cart" >
<div class = "Cart_Atras"></div>
<div class = "Cart_Adelante" >
<div id = "eye_1"></div>
<div id = "eye_2"></div>
<div id = "mouth">
<div id = "teeth"></div>
<div id = "tongue" ></div>
</div>
</div>
</div>
</div>
<div class = "Contenedor2">
< div class = "Texto">tinycards</div>
</div>
</body>
</html>
2. Apariencia de la carta
Como ya esta la estructura, lo siguiente es darle forma visualmente con CSS.
.Contenedor1{
position: absolute;
margin: 0 auto;
left: 0px;
right: 0px;
background: transparent;
}
.Cart{
transform-style: preserve-3d;
position: relative;
margin: 0 auto;
display: block;
width: 300px;
top: calc(50vh - 175px);
}
.Cart_Adelante{
background-color: #fff;
width: 300px;
height: 350px;
position: absolute;
left: 0px;
right: 0px;
border-radius: 20px;
box-shadow: 0px 4px 15px 5px rgba(0, 0, 0, 0.37);
display: inline-block;
}
.Cart_Atras{
background-color: #b8f5ff;
width: 300px;
height: 350px;
position: absolute;
left: 0px;
right: 0px;
border-radius: 20px;
box-shadow: 0px 4px 15px 5px rgba(0, 0, 0, 0.37);
display: inline-block;
}
#eye_1{
background: #6c6c77;
width: 30px;
height: 45px;
border-radius: 50px;
margin-top: 111px;
margin-left: 200px;
}
#eye_2{
background: #6c6c77;
width: 30px;
height: 45px;
border-radius: 50px;
margin-top: -45px;
margin-left: 60px;
}
#mouth{
background: #bf3434;
width: 200px;
height: 100px;
border-radius: 4px 4px 100px 100px;
position: absolute;
margin: 0 auto;
left: 0px;
right: 0px;
top: 180px;
overflow: hidden;
}
#teeth{
background-color: #fff;
width: 160px;
height: 20px;
position: absolute;
border-radius: 0px 0px 20px 20px;
right: 11%;
box-shadow: inset 8px 2px 1px #e1e1e1;
}
#tongue{
background-color: #ff7575;
width: 100px;
height: 100px;
margin-top: 50px;
border-radius: 50px;
margin: 72px auto 0 auto;
}
.Contenedor2{
margin: 0 auto;
left: 0px;
right: 0px;
width: 300px;
position: relative;
top: calc(50vh - -204px);
}
.Texto{
text-align: center;
color: aliceblue;
font-size: xx-large;
font-family: sans-serif;
font-weight: bold;
color: #00e7ff;
}
3. Animación en CSS girar 360º grados
Aquí hacemos una transformación en el eje “y”, en la class “.Cart” escribimos lo siguiente.
animation: mymove 15s infinite;
Luego escribimos el keyframes
@keyframes mymove{
50% {transform: rotatey(360deg);}
}
Para que podamos ver la carta girando en todos los ejes y no solo en un plano usamos “transfor-style” en la class “.Cart”.
transform-style: preserve-3d;
4. Espalda de la carta
En este punto del código no podemos ver la parte de atrás de la carta, así que añadimos la siguiente línea en la clase “.carta_atras”.
transform: translateZ(1px) rotateY(180deg);
Y bueno eso es todo, si quieren ver el código completo pueden hacer clic aquí. Por otro lado para ver la animación en CSS funcionando clic aquí.
Extra: Agradecimientos especiales a @emilio_xd14, ya que su interés por HTML y CSS me animo mientras yo terminaba esta animación.😃🤝
Conclusión:
Esto es solo un código de práctica, para aprender algunas cosas de CSS, en mi caso, aprendí a usar “transform-style” para ver ver el giro de las cartas en los 3 ejes “x”, “y”, “z”. transform-style: preserve-3d; También aprendí a usar “box-shadow” para darle un borde difuminado a la carta.