100JSProjects
LearnProjectsExplore all projects
100JS_WORKSPACE/Build · Learn · Repeat
100JSProjects

Practical HTML, CSS, and JavaScript projects designed to help you turn concepts into real skills—one build at a time.

01Explore

./All projects./Learning guides./About./Contact./Privacy

02Resources

./GitHub repository./Support the project

© 2026 100 JS Projects. Built for developers.

TermsCookiesContact
JS//Projects/Photo Gallery

Photo GalleryHTML, CSS & JavaScript Project

HTML5CSS3JavaScript
View Source CodeLive Demo
Photo Gallery project previewTry Live Demo
What you'll build

Photo Gallery

In this project, we’re going to build a practical photo gallery using HTML, CSS, and JavaScript. You’ll see how to organize images and create smooth, interactive navigation. Along the way, you’ll practice API requests, async and await, click events, so you can understand how the interface and JavaScript logic work together.

HTML
— Structure
CSS
— Design
JavaScript
— Logic
Complete project files

Build It from the Source Code

Create these three files, copy the code into each one, then open index.html with Live Server.

Project structure
photo-gallery/
├── index.html
├── style.css
└── index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Photo Gallery</title>
    <link rel="stylesheet" href="styles.css">
  </head>
  <body>
    <div class="container">
      <h1>Photo Gallery</h1>
      <h2>Enter the number of photos</h2>
      <input
        type="number"
        id="input"
        class="input"
        value="2"
        min="1"
        max="10"
      />
      <small class="errorMessage" id="errorMessage">Error Message</small>
      <button class="btn" id="btn">Get Photos</button>
      <div class="gallery" id="gallery">
        <img src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80" alt="image">
        <img src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80" alt="image">
        <img src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80" alt="image">
        <img src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80" alt="image">
      </div>
    </div>
    <script src="index.js"></script>
  </body>
</html>

JS// Related Projects

Keep Building with Similar Projects

Continue your learning journey with these handpicked projects that share similar concepts and technologies

Recipe Book App project preview
HTMLCSSJavaScript

Recipe Book App

In this project, we’re going to build a practical recipe book app using HTML, CSS, and JavaScript. You’ll see how to fetch recipe data and create useful recipe cards from the response. Along the way, you’ll practice API requests, async and await, DOM selection, so you can understand how the interface and JavaScript logic work together.

View project
Pomodoro Timer project preview
HTMLCSSJavaScript

Pomodoro Timer

In this project, we’re going to build a practical pomodoro timer using HTML, CSS, and JavaScript. You’ll see how to control time-based behavior with practical start, stop, and reset actions. Along the way, you’ll practice setInterval, click events, DOM selection, so you can understand how the interface and JavaScript logic work together.

View project
Rock Paper Scissors Game project preview
HTMLCSSJavaScript

Rock Paper Scissors Game

In this project, we’re going to build a practical rock paper scissors game using HTML, CSS, and JavaScript. You’ll see how to handle player interactions, calculate the result, and update the score. Along the way, you’ll practice click events, DOM selection, DOM content updates, so you can understand how the interface and JavaScript logic work together.

View project
{ }View All Projects