Create a Single Page Application using HTML CSS & JavaScript Last Updated : 23 Jul, 2025 Comments Improve Suggest changes 12 Likes Like Report In this article, we are going to design and build a cool and user-friendly single-page application (SPA) using just HTML, CSS, and JavaScript. A single-page application contains multiple pages that can be navigated or visited without loading the page every time. This makes things faster and more interesting.Project Preview:Project PreviewStep-by-Step Tutorial for Creating a Single-Page ApplicationStep 1: Firstly, we will create a folder with the project name and create the HTML(e.g, index.html), CSS (e.g, style.css), JavaScript files, Images folder, and a separate file for the responsive CSS if required.Step 2: Now, use the different HTML tags like section, header, meta, title, head, div, I, mg, etc to structure the web page. and includes a header, navigation bar, main content area, and a script tag for our JavaScript file.Step3: Add some Style using CSS to the HTML code to make our frontend look good. We'll choose colors and layouts that look modern and inviting. Add style mainly to the image and beautify the header. and we will be using a gradient color to give a greenish look to the header.Step4: Add the JavaScript to change content dynamically. let's add some JavaScript magic. The changeContent function will be our main things, updating the content based on what the user clicks. Step5: You can create a navigation system that dynamically loads content based on user interactions.Example: The below code example explains how you can use the HTML, CSS and JavaScript to create a Single Page Application. index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content= "width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <title>SPA app</title> </head> <body> <div id="app"> <header> <h1> GeeksforGeeks </h1> <h1> Single Page Application Using HTML, CSS & JavaScript </h1> </header> <nav> <ul> <li> <a href="#" onclick= "changeContent('home')"> Home </a> </li> <li> <a href="#" onclick= "changeContent('about')"> About </a> </li> <li> <a href="#" onclick= "changeContent('contact')"> Contact </a> </li> </ul> </nav> <main> <div id="content"> <img src= "https://media.geeksforgeeks.org/wp-content/uploads/geeksforgeeks-12.png"> <h2>Welcome to Geeks for Geeks</h2> <p> Geeks for Geeks is a portal for computer science enthusiasts, providing a wide range of tutorials, articles, and resources. </p> <p> Visit the GeeksforGeeks portal <a href="https://www.geeksforgeeks.org/" target="_blank"> here </a>. </p> </div> </main> </div> <script src="script.js"></script> </body> </html> style.css /* style.css */ body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 0; background-color: #f0f0f0; } #app { display: flex; flex-direction: column; min-height: 100vh; } header { background-color: #2f8d46; color: white; text-align: center; padding: 1em; } nav { background-color: #4caf50; } nav ul { list-style-type: none; margin: 0; padding: 0; display: flex; justify-content: center; } nav li { margin: 0; } nav a { text-decoration: none; color: #fff; padding: 1em; display: block; transition: background-color 0.3s ease; } nav a:hover { background-color: #45a049; } main { flex: 1; padding: 1em; } #content { max-width: 1000px; margin: 0 auto; background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } #content h2 { color: #2f8d46; } #content img { width: 400px; height: auto; margin: 0 auto; display: block; border-radius: 10px; box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); border: 3px solid #2F8D46; } form { max-width: 400px; margin: 20px auto; padding: 20px; background-color: #f0f0f0; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } form label { display: block; margin-bottom: 8px; } form input, form textarea { width: 100%; padding: 8px; margin-bottom: 16px; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px; } form button { background-color: #4caf50; color: #fff; padding: 10px; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.3s ease; } form button:hover { background-color: #45a049; } index.js function changeContent(page) { var contentDiv = document.getElementById('content'); switch (page) { case 'home': contentDiv.innerHTML = ` <img src= "https://media.geeksforgeeks.org/wp-content/uploads/geeksforgeeks-12.png"> <h2> Welcome to the Home Page! </h2> <p> This is the main page of our SPA. </p> <p> Explore the different sections using the navigation menu. </p> `; break; case 'about': contentDiv.innerHTML = ` <h2>About Us</h2> <p> This is the about page content. Learn more about our purpose and team. </p> <p> We're passionate about creating engaging and informative SPAs. </p> `; break; case 'contact': contentDiv.innerHTML = `<h2>Contact Us</h2> <p> Feel free to reach out to us! </p> <form> <label for="name">Name:</label> <input type="text" id="name" name="name" placeholder="Your Name" required> <label for="email">Email:</label> <input type="email" id="email" name="email" placeholder="Your Email" required> <label for="message">Message:</label> <textarea id="message" name="message" placeholder="Your Message" rows="4" required> </textarea> <button type="submit">Send Message</button> </form>`; break; default: contentDiv.innerHTML = '<h2>Page not found!</h2>'; } } Output: Create Quiz Create a Single Page Application using HTML CSS & JavaScript Comment S sahilali Follow 12 Improve S sahilali Follow 12 Improve Article Tags : JavaScript Web Technologies Geeks Premier League JavaScript-Projects Geeks Premier League 2023 +1 More Explore JavaScript BasicsIntroduction to JavaScript4 min readVariables and Datatypes in JavaScript6 min readJavaScript Operators5 min readControl Statements in JavaScript4 min readArray & StringJavaScript Arrays7 min readJavaScript Array Methods7 min readJavaScript Strings5 min readJavaScript String Methods9 min readFunction & ObjectFunctions in JavaScript5 min readJavaScript Function Expression3 min readFunction Overloading in JavaScript4 min readObjects in JavaScript4 min readJavaScript Object Constructors4 min readOOPObject Oriented Programming in JavaScript3 min readClasses and Objects in JavaScript4 min readWhat Are Access Modifiers In JavaScript ?5 min readJavaScript Constructor Method7 min readAsynchronous JavaScriptAsynchronous JavaScript2 min readJavaScript Callbacks4 min readJavaScript Promise4 min readEvent Loop in JavaScript4 min readAsync and Await in JavaScript2 min readException HandlingJavascript Error and Exceptional Handling6 min readJavaScript Errors Throw and Try to Catch2 min readHow to create custom errors in JavaScript ?2 min readJavaScript TypeError - Invalid Array.prototype.sort argument1 min readDOMHTML DOM (Document Object Model)8 min readHow to select DOM Elements in JavaScript ?3 min readJavaScript Custom Events4 min readJavaScript addEventListener() with Examples9 min readAdvanced TopicsClosure in JavaScript4 min readJavaScript Hoisting6 min readScope of Variables in JavaScript3 min readJavaScript Higher Order Functions7 min readDebugging in JavaScript4 min read Like