Single page Web Sports Trivia App with JavaScript, HTML & CSS — part one

Build a single page Sports Trivia Web App from scratch using vanilla JavaScript, HTML and CSS.

What we will build:

Image for post
Image for post

In this tutorial, we will build a Sports trivia app for sports lovers. This tutorial is divided into two series to make it easy for beginners to comprehend. The aim of this course is to introduce you to how JavaScript works and also to make our application pretty with CSS. Just like its sounds, a Single Page Application or SPA for short is a web application that as only one page and every other page are dynamically rendered by JavaScript. Think of it as the way library like React Js work behind the scene. But in this tutorial, we will be doing all the heavy lifting by ourselves.

I plan to recreate this app with React also but for us to get a good start with React the knowledge of JavaScript is key. So let’s dive in.

Environment Setup

Image for post
Image for post

The file structure is pretty simple as you can see from above we have the app directory.

sport-trivia
> CSS
> js
> images
index.html

After creating all the directories also create an index.html page in the root directory.

Image for post
Image for post

In the CSS folder create in the js folder create the images folder as all the images we will use in our app. You can clone the repository for the project on Github here.

index.html

Image for post
Image for post

This is our HTML file and that’s all it will be all our HTML content will be dynamically rendered on the page using JavaScript. In the head of our HTML you will see we have links to both of our CSS and a Google fonts Lato we will be using in our CSS.

In the body, we have the main tag with an id of container. That’s all the HTML we need the container id will be used to select the main tag and we can build our page from there in our JavaScript. We load our JavaScript file just before the closing of the body. Our HTML is done and very empty :)

The Start Page

Image for post
Image for post

We are going to start by creating the start page and I will be explaining the basic concept of how JavaScript works with the DOM — Document Object Model.

The Document Object Model is a cross-platform and language-independent interface that treats an XML or HTML document as a tree structure wherein each node is an object representing a part of the document. The DOM represents a document with a logical tree.Wikipedia

If you right-click on your web browser use Chrome and click inspect and click on the Console tab and type in

Image for post
Image for post

On the window object, we also have the document object type in

Image for post
Image for post

The Document Object has all different kind of properties we can set to dynamically create web pages using JavaScript.

Image for post
Image for post

Document.querySelector()

The method returns the first within the document that matches the specified selector, or group of selectors. If no matches are found, is returned. — MDN

`element = document.querySelector(selectors);`

In our code above you will see that we selected the container div using the id selector, then we created a startPage function that renders the start page. You can see that the code is self-documenting, You can read more about about the DOM here and all its methods. There are lot’s of methods there but you will be using a handful.

// For selection
document.querySelector()
document.querySelectorAll()
// For Creating new element
document.createElement()
// For Adding and Removing CSS class
document.classList.add()
document.classList.remove()
// Add content to tags
document.innerText
documentinnerHTML

The Quiz Page

Image for post
Image for post

Building the Quiz Page followed similar patterns creating each element and rendering them on the page in order. And also Adding Class to style them.

Image for post
Image for post

Finish Page

Image for post
Image for post
Image for post
Image for post

I have also added some event listeners to make it easy to navigate through the pages in the next part we will be getting the quiz data from an API and we will be able to play. Now that we have all the pages we need. Here is the complete JavaScript.

Image for post
Image for post

Styling

In the CSS folder have a that holds our custom CSS and the reset helps us remove any browser default CSS styles so we can begin styling without any surprises. Both codes are really easy to walk through.

You can view the complete Site here.

See you in the next part where we complete the game logic and get data from a remote API.

Written by

I change the world by helping people to get started in Tech and Social Entrepreneurship.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store