Master Frontend to Backend https://bit.ly/frontend-to-backend-ebook —————— Revolutionize projects with our advanced …
source
<!doctype html> <html> <head> <meta charset="utf-8"> <title>2024 | Happy New Year</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <div class="text" style="--j:0;"> <span style="--i:0;">2</span> <span style="--i:1;">3</span> <span style="--i:2;">4</span> <span style="--i:3;">5</span> </div> <div class="text" style="--j:1;"> <span style="--i:0;">0</span> <span style="--i:1;">1</span> <span style="--i:2;">2</span> <span style="--i:3;">3</span> </div> <div class="text" style="--j:2;"> <span style="--i:0;">2</span> <span style="--i:1;">3</span> <span style="--i:2;">4</span> <span style="--i:3;">5</span> </div> <div class="text" style="--j:3;"> <span style="--i:0;">3</span> <span style="--i:1;">4</span> <span style="--i:2;">3</span> <span style="--i:3;">4</span> </div> </div> <h2>Happy New Year</h2> <div class="glowing"> <span style="--i:1;"></span> <span style="--i:2;"></span> <span style="--i:3;"></span> </div> <div class="glowing"> <span style="--i:1;"></span> <span style="--i:2;"></span> <span style="--i:3;"></span> </div> <div class="glowing"> <span style="--i:1;"></span> <span style="--i:2;"></span> <span style="--i:3;"></span> </div> <div class="glowing"> <span style="--i:1;"></span> <span style="--i:2;"></span> <span style="--i:3;"></span> </div> <script> let h2 = document.querySelector('h2'); let container = document.querySelector('.container'); h2.onclick = function(){ container.classList.toggle('newYear'); this.classList.toggle('active') } </script> </body> </html>
@import url('https://fonts.googleapis.com/css2?family=Oswald:wght@500;600;700&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Oswald', sans-serif; } body { display: flex; justify-content: center; align-items: center; min-height: 100vh; background: #3d3d3d; transform-origin: bottom; overflow: hidden; } .container { position: absolute; display: flex; transform-style: preserve-3d; transform: rotateY(30deg) rotateX(10deg); gap: 10px; } .text { position: relative; width: 100px; height: 100px; transform-style: preserve-3d; transition: 2.5s ease-in-out; transition-delay: calc(0.25s * var(--j)); } .container.newYear .text { transform: rotateX(calc(-360deg * 1)); } .container.newYear .text:last-child { transform: rotateX(calc(630deg * 1)); } .text span { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; color: #fff; font-size: 4em; cursor: default; background: linear-gradient(#434343,#535353); transform-style: preserve-3d; transform: rotateX(calc(90deg * var(--i))) translateZ(50px); } .text::before { content: ''; position: absolute; width: 100%; height: 100%; background: #373737; transform-origin: left; transform: rotateY(90deg) translateX(-50px); } .text:last-child span { background: linear-gradient(#29c040,#32ed4e); color: #fff; } .text:last-child::before { background: #11a728; } h2 { position: absolute; bottom: 50px; color: #252525; font-size: 2em; transition: 0.5s; cursor: pointer; } h2.active { color: #fff; text-shadow: 0 0 20px #fff, 0 0 50px #fff; } h2:after { content: ' 2024'; transition: 0.5s; } h2.active:after { color: #32ed4e; text-shadow: 0 0 20px #32ed4e, 0 0 50px #32ed4e; } .glowing { position: relative; min-width: 750px; height: 750px; animation: colorChange 5s linear infinite; transform-origin: right; margin: -150px; pointer-events: none; } .glowing:nth-child(even) { transform-origin: left; } @keyframes colorChange { 0% { filter: hue-rotate(0deg); transform: rotate(0deg); } 100% { filter: hue-rotate(360deg); transform: rotate(360deg); } } .glowing span { position: absolute; top: calc(80px * var(--i)); left: calc(80px * var(--i)); bottom: calc(80px * var(--i)); right: calc(80px * var(--i)); border-radius: 50%; box-sizing: border-box; } .glowing span:before { content: ''; position: absolute; top: 50%; left: -8px; width: 15px; height: 15px; background: #f00; border-radius: 50%; } .glowing span:nth-child(3n + 1) { animation: animate 10s alternate infinite; } .glowing span:nth-child(3n + 2) { animation: animate-reverse 3s alternate infinite; } .glowing span:nth-child(3n + 3) { animation: animate 8s alternate infinite; } .glowing span:nth-child(3n + 1):before { background: rgba(134,255,0,1); box-shadow: 0 0 20px rgba(134,255,0,1), 0 0 40px rgba(134,255,0,1), 0 0 60px rgba(134,255,0,1), 0 0 80px rgba(134,255,0,1), 0 0 0 4px rgba(134,255,0,.1); } .glowing span:nth-child(3n + 2):before { background: rgba(255,214,0,1); box-shadow: 0 0 20px rgba(255,214,0,1), 0 0 40px rgba(255,214,0,1), 0 0 60px rgba(255,214,0,1), 0 0 80px rgba(255,214,0,1), 0 0 0 8px rgba(255,214,0,.1); } .glowing span:nth-child(3n + 3):before { background: rgba(0,226,255,1); box-shadow: 0 0 20px rgba(0,226,255,1), 0 0 40px rgba(0,226,255,1), 0 0 60px rgba(0,226,255,1), 0 0 80px rgba(0,226,255,1), 0 0 0 4px rgba(0,226,255,.1); } @keyframes animate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes animate-reverse { 0% { transform: rotate(360deg); } 100% { transform: rotate(0deg); } }