Create a Splash Page App in HTML CSS & JavaScript
The Splash Screen is the UI element that appears as the initial screen or the loading screen. Splash Page Application consists of a styled animative splash screen effect which automatically makes the curtain opening splash effect into the application for a specific time and renders the dynamic content once the effect is been completed. We will develop this Splash Page Animative effect using HTML, CSS, and JavaScript.
Preview Image:
Prerequisites:
- HTML
- CSS
- JavaScript
Approach:
- Create the basic layout or structure of the application using various HTML tags like <h1>,<h3>,<div>, etc. Also, link all the essential external libraries with the CDN links.
- Create the overall structure for the splash screen inside the #splash div. Add all the other animative components like Loading Spinner, title, etc.
- Add CSS styling to style the splash screen, dynamic content, and other elements. Also, implement the keyframe animations for various effects like bouncing, etc.
- In the JavaScript file, use the DOMContentLoaded event to initiate the Splash Screen logic. Set the loading time and hide the splash screen while displaying the dynamic content.
Project Structure:
Example: This example describes the basic implementation for a Splash Page App in HTML CSS and JavaScript
Javascript
document.addEventListener( "DOMContentLoaded" , function () { setTimeout( function () { document.getElementById( "preloader" ) .style.display = "none" ; setTimeout( function () { document.getElementById( "splash" ) .style.display = "none" ; document.getElementById( "content" ) .style.display = "block" ; addLiveAnimations(); }, 3000); }, 1000); }); |
HTML
<!DOCTYPE html> < head > < title >w3wiki</ title > < link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" > < link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" > < link href = "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" rel = "stylesheet" > < link rel = "stylesheet" href = "styles.css" > </ head > < body > < div id = "preloader" > < div id = "loader" ></ div > </ div > < div id = "splash" class = "animated-splash" > < div class = "curtain" > < div class = "splash-content" > < i class = "fas fa-spin fa-spinner" ></ i > < h1 class = "animated-title" >w3wiki</ h1 > < h3 class = "animated-subtitle" >Learn, Code, Contribute!</ h3 > < div class = "animated-emoji" id = "loadingEmoji" > ? </ div > </ div > < div class = "additional-splash-effects" ></ div > </ div > </ div > < div id = "content" style = "display: none;" > < div class = "card" > < h1 > < i class = "fas fa-code" > </ i > w3wiki </ h1 > < p >Learn, Code, Contribute!</ p > < div class = "animated-emoji" id = "BeginnerEmoji" > ? </ div > </ div > </ div > < script src = "https://cdn.jsdelivr.net/npm/splash-screen@4.0.1/dist/splash-screen.min.js" > </ script > < script src = "app.js" > </ script > </ body > </ html > |
CSS
body { font-family : 'Montserrat' , sans-serif ; margin : 0 ; padding : 0 ; height : 100 vh; overflow : hidden ; background : linear-gradient( 135 deg, #3498db , #8e44ad ); } #preloader { position : fixed ; width : 100% ; height : 100% ; background : #fda56b ; display : flex; align-items: center ; justify- content : center ; z-index : 9999 ; } #loader { border : 8px solid #f3f3f3 ; border-top : 8px solid #3498db ; border-radius: 50% ; width : 50px ; height : 50px ; animation: spin 1 s linear infinite; } @keyframes spin { 0% { transform: rotate( 0 deg); } 100% { transform: rotate( 360 deg); } } #splash { height : 100 vh; display : flex; align-items: flex-end; } .curtain { width : 100% ; height : 100% ; position : absolute ; bottom : 0 ; overflow : hidden ; animation: curtainAnimation 4 s ease-out forwards, gradientAnimation 3 s ease-out forwards; } .splash-content { text-align : center ; padding : 20px ; color : #fff ; position : relative ; z-index : 2 ; } .splash-content i { font-size : 2em ; } .additional-splash-effects { position : absolute ; bottom : 0 ; width : 100% ; height : 100% ; background : linear-gradient( 135 deg, #ff6b6b , #8e44ad , #3498db , #e74c3c ); animation: backgroundAnimation 20 s infinite alternate; z-index : 1 ; } #content { text-align : center ; position : relative ; } .card { background-color : #dbca34 ; padding : 20px ; border-radius: 10px ; box-shadow: 0 0 20px rgba( 0 , 0 , 0 , 0.1 ); margin : 20px ; color : rgb ( 255 , 0 , 0 ); width : 300px ; animation: cardAnimation 1.5 s ease-out; } .card i { margin-right : 5px ; } .animated-emoji { font-size : 2em ; margin-top : 10px ; animation: bounce 1 s infinite; } .animated-title { animation: fadeInDown 1.5 s ease-out; } .animated-subtitle { animation: fadeInUp 1.5 s ease-out; } @keyframes curtainAnimation { 0% { transform: translateY( 100% ); } 100% { transform: translateY( 0 ); } } @keyframes gradientAnimation { 0% { opacity: 0 ; } 100% { opacity: 1 ; } } @keyframes backgroundAnimation { 0% { background-position : 0% 50% ; } 100% { background-position : 100% 50% ; } } @keyframes cardAnimation { 0% { opacity: 0 ; transform: translateY( 20px ); } 100% { opacity: 1 ; transform: translateY( 0 ); } } @keyframes bounce { 0% , 20% , 50% , 80% , 100% { transform: translateY( 0 ); } 40% { transform: translateY( -20px ); } 60% { transform: translateY( -10px ); } } @keyframes fadeInDown { 0% { opacity: 0 ; transform: translateY( -20px ); } 100% { opacity: 1 ; transform: translateY( 0 ); } } @keyframes fadeInUp { 0% { opacity: 0 ; transform: translateY( 20px ); } 100% { opacity: 1 ; transform: translateY( 0 ); } } |
Output: