-
3D Image carousel gallery animation
HTML
CSS
JavaScript
3D Image Carousel
* { margin: 0; padding: 0; box-sizing: border-box; } body { background: #0f172a; display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; font-family: Arial, Helvetica, sans-serif; perspective: 1200px; } /* Background Glow */ body::before { content: ""; position: absolute; width: 700px; height: 700px; background: radial-gradient(circle, #3b82f655, transparent 70%); filter: blur(60px); } /* Carousel */ .carousel { position: relative; width: 260px; height: 360px; transform-style: preserve-3d; animation: rotate 20s linear infinite; } .carousel:hover { animation-play-state: paused; } .card { position: absolute; width: 260px; height: 360px; border-radius: 20px; overflow: hidden; box-shadow: 0 25px 50px rgba(0, 0, 0, .45), 0 10px 20px rgba(255, 255, 255, .08); transform-style: preserve-3d; border: 2px solid rgba(255, 255, 255, .1); transition: .4s; -webkit-box-reflect: below 12px linear-gradient(transparent, rgba(0, 0, 0, .45)); } .card:hover { transform: scale(1.05); } .card img { width: 100%; height: 100%; object-fit: cover; } /* Position */ .card:nth-child(1) { transform: rotateY(0deg) translateZ(420px); } .card:nth-child(2) { transform: rotateY(45deg) translateZ(420px); } .card:nth-child(3) { transform: rotateY(90deg) translateZ(420px); } .card:nth-child(4) { transform: rotateY(135deg) translateZ(420px); } .card:nth-child(5) { transform: rotateY(180deg) translateZ(420px); } .card:nth-child(6) { transform: rotateY(225deg) translateZ(420px); } .card:nth-child(7) { transform: rotateY(270deg) translateZ(420px); } .card:nth-child(8) { transform: rotateY(315deg) translateZ(420px); } @keyframes rotate { from { transform: rotateX(-12deg) rotateY(0deg); } to { transform: rotateX(-12deg) rotateY(360deg); } } .title { position: absolute; top: 40px; width: 100%; text-align: center; color: white; font-size: 40px; font-weight: bold; letter-spacing: 2px; text-shadow: 0 0 20px #3b82f6; } @media(max-width:768px) { .carousel { width: 180px; height: 250px; } .card { width: 180px; height: 250px; } .card:nth-child(1) { transform: rotateY(0deg) translateZ(280px); } .card:nth-child(2) { transform: rotateY(45deg) translateZ(280px); } .card:nth-child(3) { transform: rotateY(90deg) translateZ(280px); } .card:nth-child(4) { transform: rotateY(135deg) translateZ(280px); } .card:nth-child(5) { transform: rotateY(180deg) translateZ(280px); } .card:nth-child(6) { transform: rotateY(225deg) translateZ(280px); } .card:nth-child(7) { transform: rotateY(270deg) translateZ(280px); } .card:nth-child(8) { transform: rotateY(315deg) translateZ(280px); } .title { font-size: 28px; } }
Live Preview