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.