Ready to unleash your inner tech magician and celebrate the arrival of 2024 in style? Buckle up, fellow code enthusiasts, because this blog’s about to show you how to build a breathtaking “Happy New Year 2024” webpage with the power of HTML, CSS, and JavaScript!
I would recommend you don’t just copy and paste the code, just look at the code and type by understanding it.
Demo
HTML Code
Starter Template
<!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- CSS --> <link rel="stylesheet" href="style.css"> <title>Happy New Year 2024 using HTML CSS and JavaScript - Coding Torque</title> </head> <body> <!-- Further code here --> <script src="script.js"></script> </body> </html>
Paste the below code in your <body>
tag.
<div class="bg"></div> <main class="new-year-body"> <h1 class="new-year">Happy New Year</h1> <p class="year">2024</p> <button class="btn">Click Here!</button> </main>
CSS Code
Create a file style.css and paste the code below.
@import url("https://fonts.googleapis.com/css2?family=Neonderthaw&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Allerta+Stencil&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Megrim&display=swap"); body { height: 100vh; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; background: url("https://images.unsplash.com/photo-1524334228333-0f6db392f8a1?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1920&q=80") no-repeat center center; background-size: cover; overflow: hidden; } .new-year-body { text-align: center; color: white; text-transform: uppercase; } .new-year { font-size: 5rem; letter-spacing: 5px; margin-bottom: 0; text-shadow: 0 0 25px white, 0 0 50px white, 0 0 100px white; font-family: "Megrim", cursive, sans-serif; } .year { margin: 0; font-size: 8rem; letter-spacing: 10px; font-family: "Neonderthaw", "Poiret One", cursive; text-shadow: 0 0 25px white, 0 0 50px white, 0 0 100px white; } .btn { margin-top: 4rem; width: 8rem; height: 8rem; border-radius: 50%; font-size: 1.5rem; color: #0c0f0a; padding: 1rem; font-family: "Allerta Stencil", sans-serif; border: none; box-shadow: 0 0 25px white, 0 0 50px white, 0 0 100px white; outline: 4px solid white; outline-offset: 10px; } .btn:hover { outline-offset: 4px; } .snow { position: absolute; top: -10%; border-radius: 50%; background-color: white; box-shadow: 0 0 0px #fff, 0 0 50px #fff; } .snowAnimation1 { animation: snowFall1 linear infinite; } .snowAnimation2 { animation: snowFall2 linear infinite; } .snowAnimation3 { animation: snowFall3 linear infinite; } .snowAnimation4 { animation: snowFall4 linear infinite; } @keyframes snowFall1 { 0% { transform: translate(0vw, 0vh); } 100% { transform: translate(50vw, 150vh); } } @keyframes snowFall2 { 0% { transform: translate(-10vw, -10vh); } 100% { transform: translate(60vw, 150vh); } } @keyframes snowFall3 { 0% { transform: translate(10vw, 0vh); } 100% { transform: translate(40vw, 150vh); } } @keyframes snowFall4 { 0% { transform: translate(0vw, 0vh); } 100% { transform: translate(40vw, 150vh); } } .white { text-shadow: 0 0 25px #fff, 0 0 50px #fff, 0 0 100px #fff; } .btn-white { box-shadow: 0 0 25px #fff, 0 0 50px #fff, 0 0 100px #fff; } .snow-white { box-shadow: 0 0 0px #fff, 0 0 50px #fff; } .green { text-shadow: 0 0 5px #1fd224, 0 0 25px #1fd224, 0 0 50px #1fd224, 0 0 100px #1fd224, 0 0 200px #1fd224; } .btn-green { box-shadow: 0 0 5px #1fd224, 0 0 25px #1fd224, 0 0 50px #1fd224, 0 0 100px #1fd224, 0 0 200px #1fd224; } .snow-green { box-shadow: 0 0 20px #1fd224, 0 0 50px #1fd224; } .orange { text-shadow: 0 0 5px #ffaa01, 0 0 25px #ffaa01, 0 0 50px #ffaa01, 0 0 100px #ffaa01, 0 0 200px #ffaa01; } .btn-orange { box-shadow: 0 0 5px #ffaa01, 0 0 25px #ffaa01, 0 0 50px #ffaa01, 0 0 100px #ffaa01, 0 0 200px #ffaa01; } .snow-orange { box-shadow: 0 0 20px #ffaa01, 0 0 50px #ffaa01; } .pink { text-shadow: 0 0 5px #ff00aa, 0 0 25px #ff00aa, 0 0 50px #ff00aa, 0 0 100px #ff00aa, 0 0 200px #ff00aa; } .btn-pink { box-shadow: 0 0 5px #ff00aa, 0 0 25px #ff00aa, 0 0 50px #ff00aa, 0 0 100px #ff00aa, 0 0 200px #ff00aa; } .snow-pink { box-shadow: 0 0 20px #ff00aa, 0 0 50px #ff00aa; } .violet { text-shadow: 0 0 5px #aa00ff, 0 0 25px #aa00ff, 0 0 50px #aa00ff, 0 0 100px #aa00ff, 0 0 200px #aa00ff; } .btn-violet { box-shadow: 0 0 5px #aa00ff, 0 0 25px #aa00ff, 0 0 50px #aa00ff, 0 0 100px #aa00ff, 0 0 200px #aa00ff; } .snow-violet { box-shadow: 0 0 20px #aa00ff, 0 0 50px #aa00ff; } .blue { text-shadow: 0 0 5px #00aaff, 0 0 25px #00aaff, 0 0 50px #00aaff, 0 0 100px #00aaff, 0 0 200px #00aaff; } .btn-blue { box-shadow: 0 0 5px #00aaff, 0 0 25px #00aaff, 0 0 50px #00aaff, 0 0 100px #00aaff, 0 0 200px #00aaff; } .snow-blue { box-shadow: 0 0 20px #00aaff, 0 0 50px #00aaff; } .red { text-shadow: 0 0 5px #f00, 0 0 25px #f00, 0 0 50px #f00, 0 0 100px #f00, 0 0 200px #f00; } .btn-red { box-shadow: 0 0 5px #f00, 0 0 25px #f00, 0 0 50px #f00, 0 0 100px #f00, 0 0 200px #f00; } .snow-red { box-shadow: 0 0 20px #f00, 0 0 50px #f00; } .yellow { text-shadow: 0 0 5px #ffea00, 0 0 25px #ffea00, 0 0 50px #ffea00, 0 0 100px #ffea00, 0 0 200px #ffea00; } .btn-yellow { box-shadow: 0 0 5px #ffea00, 0 0 25px #ffea00, 0 0 50px #ffea00, 0 0 100px #ffea00, 0 0 200px #ffea00; } .snow-yellow { box-shadow: 0 0 20px #ffea00, 0 0 50px #ffea00; }
JavaScript Code
Create a file script.js and paste the code below.
const snowFall = () => { const bg = document.querySelector(".bg"); for (let i = 0; i < 300; i++) { const snow = document.createElement("span"); snow.classList.add("snow"); if (i % 4 === 0) { snow.classList.add("snowAnimation1"); } else if (i % 4 === 1) { snow.classList.add("snowAnimation2"); } else if (i % 4 === 2) { snow.classList.add("snowAnimation3"); } else { snow.classList.add("snowAnimation4"); } const aNumber = -50 + randomNumber(150); const timeDelay = randomNumber(10); const animDuration = 5 + randomNumber(10) + Math.random() + 0.2; const snowOpacity = randomNumber(10) * 0.1; const heightWidth = randomNumber(11) + 5; snow.style.width = `${heightWidth}px`; snow.style.height = `${heightWidth}px`; snow.style.left = `${aNumber}%`; snow.style.animationDelay = `${timeDelay}s`; snow.style.animationDuration = `${animDuration}s`; snow.style.opacity = `${snowOpacity}`; bg.appendChild(snow); } }; const randomNumber = (limit) => { return Math.floor(Math.random() * limit); }; snowFall(); const textShadowColor = [ "white", "green", "orange", "pink", "violet", "blue", "red", "yellow", ]; const color = [ "#0c0f0a", "#1fd224", "#ffaa01", "#ff00aa", "#aa00ff", "#00aaff", "#f00", "#ffea00", ]; let count = 1; const glowingText = (count) => { const btn = document.querySelector(".btn"); const newYear = document.querySelector(".new-year"); const year = document.querySelector(".year"); const snow = document.querySelectorAll(".snow"); btn.addEventListener("click", () => { if (count !== 0) { newYear.classList.remove(textShadowColor[count - 1]); year.classList.remove(textShadowColor[count - 1]); btn.classList.remove(`btn-${textShadowColor[count - 1]}`); snow.forEach((e) => { e.classList.remove(`snow-${textShadowColor[count - 1]}`); }); } if (count === textShadowColor.length) { count = 0; } newYear.classList.add(textShadowColor[count]); year.classList.add(textShadowColor[count]); btn.classList.add(`btn-${textShadowColor[count]}`); snow.forEach((e) => { e.classList.add(`snow-${textShadowColor[count]}`); }); btn.innerHTML = "Click Again!"; btn.style.color = `${color[count]}`; count++; }); }; glowingText(count);
Final Output
Written by: Piyush Patil
Code Credits: https://codepen.io/tin-fung-hk/pen/rNpEPpM
If you found any mistakes or have any doubts please feel free to Contact Us
Hope you find this post helpful💖