All Source Code : https://www.patreon.com/onlinetutorials Get now more than 1000+ source code just by clicking on this link …
source
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>3D Cube</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div class="scene"> <div class="cube"> <div class="face front"><div class="grid"></div></div> <div class="face back"><div class="grid"></div></div> <div class="face left"><div class="grid"></div></div> <div class="face right"><div class="grid"></div></div> <div class="face top"><div class="grid"></div></div> <div class="face bottom"><div class="grid"></div></div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function(){ let cube = document.querySelector('.cube'); let grids = document.querySelectorAll('.grid'); grids.forEach(grid => { for(let i=0; i<100;i++){ let span = document.createElement('span'); grid.appendChild(span); } }) // Add random active class function addRandomActiveClass(){ grids.forEach(grid =>{ let spans = grid.querySelectorAll('span'); let randomIndex = Math.floor(Math.random() * spans.length); spans[randomIndex].classList.add('active'); // Remove active class after a rondom Time let removeTime = Math.floor(Math.random() * 1000) + 500; setTimeout(() => { spans[randomIndex].classList.remove('active'); }, removeTime) }); } // call addRandomActiveClass function at random interval function randomInterval(){ let interval = Math.floor(Math.random() * 200) + 100; addRandomActiveClass(); setTimeout(randomInterval, interval) } randomInterval(); document.addEventListener('mousemove', (e) =>{ let x = e.clientX / window.innerWidth - 0.5; let y = e.clientY / window.innerHeight - 0.5; cube.style.transform = `rotateX(${y * 360}deg) rotateY(${x * 360}deg)`; }) }) </script> </body> </html>
* { margin: 0; padding: 0; box-sizing: border-box; } body { display: flex; justify-content: center; align-items: center; min-height: 100vh; background: #111; perspective: 1000px; } .scene { position: relative; width: 300px; height: 300px; transform-style: preserve-3d; } .cube { position: absolute; width: 100%; height: 100%; transform-style: preserve-3d; } .face { position: absolute; width: 300px; height: 300px; transform-style: preserve-3d; perspective: 500px; border: 1px solid #fff; } .front { transform: rotateY(0deg) translateZ(150px); } .back { transform: rotateY(180deg) translateZ(150px); } .left { transform: rotateY(-90deg) translateZ(150px); } .right { transform: rotateY(90deg) translateZ(150px); } .top { transform: rotateX(90deg) translateZ(150px); } .bottom { transform: rotateX(-90deg) translateZ(150px); } .grid { display: grid; grid-template-columns: repeat(10, 1fr); } .grid span { width: 30px; height: 30px; background: #333d; border: 0.1px solid #fff1; transform-style: preserve-3d; perspective: 500px; } .grid span.active { background: #fff; z-index: 10000; filter: drop-shadow(0 0 20px #fff); }