DEV Community

Cover image for 3d Animated Cards Love Code with the html css and javascript coding for learning https://www.instagram.com/webstreet_code/
Prince
Prince

Posted on

3d Animated Cards Love Code with the html css and javascript coding for learning https://www.instagram.com/webstreet_code/

Follow us on : https://www.instagram.com/webstreet_code/

Code

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Animated Cards</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<style>
  body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
    background: #111;
    font-family: Arial, sans-serif;
    overflow: hidden;
    padding-top: 80px;
  }

  .card-container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }

  .card {
    width: 250px;
    height: 200px;
    background: #1a1a1a;
    border-radius: 15px;
    box-shadow: 0 0 15px rgba(255, 0, 127, 0.5);
    color: #fff;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 1.2rem;
    transition: transform 0.6s ease, background 0.5s ease, box-shadow 0.5s ease;
    cursor: pointer;
    position: relative;
    transform-style: preserve-3d;
  }

  .card-content {
    position: absolute;
    backface-visibility: hidden;
  }

  .card-front {
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 1.4rem;
    animation: glow 2s ease-in-out infinite;
  }

  .card-back {
    transform: rotateY(180deg);
    font-size: 3rem;
  }

  .card:hover {
    background: #ff007f;
    box-shadow: 0 0 20px rgba(0, 255, 234, 0.8);
  }

  .card.rotated {
    transform: rotateY(180deg);
  }

  /* Glowing and pulsing effect for front text */
  @keyframes glow {
    0%, 100% {
      text-shadow: 0 0 8px #ff007f, 0 0 12px #ff007f, 0 0 20px #ff007f;
      color: #ff007f;
    }
    50% {
      text-shadow: 0 0 8px #00ffea, 0 0 12px #00ffea, 0 0 20px #00ffea;
      color: #00ffea;
    }
  }

  .emoji-animation {
    position: absolute;
    bottom: 0;
    animation: floatUp 2s ease-in-out infinite;
    font-size: 1.8rem;
    opacity: 0;
  }

  @keyframes floatUp {
    0% {
      transform: translateY(-10px);
      opacity: 1;
    }
    100% {
      transform: translateY(-600px);
      opacity: 0;
    }
  }
</style>
</head>
<body>
  <div class="card-container">
    <div class="card" onclick="rotateCard(this, 'fa-heart')">
      <div class="card-content card-front"><p>Love</p></div>
      <div class="card-content card-back"><i class="fas fa-heart"></i></div>
    </div>
    <div class="card" onclick="rotateCard(this, 'fa-gem')">
      <div class="card-content card-front"><p>Gem</p></div>
      <div class="card-content card-back"><i class="fas fa-gem"></i></div>
    </div>
    <div class="card" onclick="rotateCard(this, 'fa-fire')">
      <div class="card-content card-front"><p>Fire</p></div>
      <div class="card-content card-back"><i class="fas fa-fire"></i></div>
    </div>
    <div class="card" onclick="rotateCard(this, 'fa-rainbow')">
      <div class="card-content card-front"><p>Rainbow</p></div>
      <div class="card-content card-back"><i class="fas fa-rainbow"></i></div>
    </div>
  </div>

  <script>
    function rotateCard(card, iconClass) {
      card.classList.toggle('rotated');

      if (card.classList.contains('rotated')) {
        for (let i = 0; i < 20; i++) {
          const emojiElement = document.createElement('div');
          emojiElement.classList.add('emoji-animation');
          emojiElement.innerHTML = `<i class="fas ${iconClass}"></i>`;

          // Randomize color for each icon
          emojiElement.style.color = `hsl(${Math.random() * 360}, 100%, 50%)`;
          emojiElement.style.left = `${Math.random() * 100}%`;
          emojiElement.style.animationDuration = `${1 + Math.random() * 2}s`;

          document.body.appendChild(emojiElement);

          // Remove icon after animation
          emojiElement.addEventListener('animationend', () => {
            emojiElement.remove();
          });
        }
      }
    }
  </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

Top comments (0)