gradient bg animation

by MD Hasan Patwary

HTML

<div class="time-travel-container">
  <div class="time-period" id="past">Past</div>
  <div class="time-period" id="present">Present</div>
  <div class="time-period" id="future">Future</div>
</div>
<button id="time-travel-button">Time Travel</button>

CSS

body {
  margin: 0;
  padding: 0;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  background: linear-gradient(45deg, #ff6b6b, #f06595, #cc5de8, #845ef7, #5c7cfa, #339af0, #22b8cf, #20c997, #51cf66, #94d82d, #fcc419, #ff922b, #ff6b6b);
  background-size: 600% 600%;
  animation: gradientAnimation 10s ease infinite;
}

@keyframes gradientAnimation {
  0% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0% 50%;
  }
}

.time-travel-container {
  display: flex;
  justify-content: space-around;
  width: 80%;
  height: 200px;
  perspective: 1000px;
}

.time-period {
  width: 100px;
  height: 100px;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  font-size: 1.5rem;
  background: rgba(0, 0, 0, 0.5);
  border-radius: 10px;
  transition: transform 2s;
}

#past:hover {
  transform: rotateY(360deg);
}

#present:hover {
  transform: scale(1.5);
}

#future:hover {
  transform: translateY(-100px);
}

#future {
  animation: futureAnimation 5s infinite;
}

@keyframes futureAnimation {
  0% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-50px) scale(1.2);
  }
  100% {
    transform: translateY(0);
  }
}
#time-travel-button {
  padding: 10px 20px;
  font-size: 1rem;
  margin-top: 20px;
  cursor: pointer;
}

.time-travel-active #past {
  transform: rotateY(360deg);
}

.time-travel-active #present {
  transform: scale(1.5);
}

.time-travel-active #future {
  transform: translateY(-100px);
}

JavaScript

document.getElementById('time-travel-button').addEventListener('click', function() {
  document.querySelector('.time-travel-container').classList.toggle('time-travel-active');
});