DeveloperBreeze

JavaScript Image Gallery with Lightbox

<!DOCTYPE html>
<html lang=en>
<head>
    <meta charset=UTF-8>
    <meta name=viewport content="width=device-width, initial-scale=1.0">
    <title>Image Gallery with Lightbox</title>
    <style>
        .gallery {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            justify-content: center;
        }
        .gallery img {
            width: 150px;
            height: auto;
            cursor: pointer;
            transition: transform 0.3s ease;
        }
        .gallery img:hover {
            transform: scale(1.05);
        }
        .lightbox {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.8);
            justify-content: center;
            align-items: center;
        }
        .lightbox img {
            max-width: 90%;
            max-height: 90%;
        }
    </style>
</head>
<body>
    <div class=gallery>
        <img src=https://via.placeholder.com/300x200 alt="Image 1" onclick=openLightbox(this)>
        <img src=https://via.placeholder.com/300x200 alt="Image 2" onclick=openLightbox(this)>
        <img src=https://via.placeholder.com/300x200 alt="Image 3" onclick=openLightbox(this)>
        <img src=https://via.placeholder.com/300x200 alt="Image 4" onclick=openLightbox(this)>
    </div>

    <div class=lightbox id=lightbox onclick=closeLightbox()>
        <img src alt="Lightbox Image" id=lightboxImage>
    </div>

    <script>
        function openLightbox(image) {
            const lightbox = document.getElementById('lightbox');
            const lightboxImage = document.getElementById('lightboxImage');
            lightboxImage.src = image.src;
            lightbox.style.display = 'flex';
        }

        function closeLightbox() {
            const lightbox = document.getElementById('lightbox');
            lightbox.style.display = 'none';
        }
    </script>
</body>
</html>

Explanation

    • HTML Structure: The gallery is composed of image elements wrapped in a container. Each image has an onclick event that triggers the lightbox.

    • CSS Styling:

- The gallery is styled with flexbox to arrange images in a responsive grid.

- The lightbox is a full-screen overlay with a semi-transparent background. It centers the selected image using flexbox.

    • JavaScript Functionality:

- openLightbox(image): This function displays the lightbox and sets the source of the large image to the clicked thumbnail.

- closeLightbox(): This function hides the lightbox when the overlay is clicked.

Usage

  • Web Galleries: Implement this snippet on any webpage to enhance image viewing experiences.

  • Responsive Design: Easily adjust CSS to fit different screen sizes and orientations.

  • Customization: Extend functionality by adding image captions, navigation arrows, or animations.

This snippet demonstrates how to create an elegant and interactive image gallery with a lightbox effect, providing a useful tool for web developers aiming to improve user engagement on their websites.

Continue Reading

Discover more amazing content handpicked just for you

Cheatsheet

Best Tools for Generating Backgrounds Patterns for Your Website

No preview available for this content.

Oct 21, 2024
Read More
Tutorial
javascript

Creating a Dropdown Menu with JavaScript

To follow along with this tutorial, you should have a basic understanding of HTML, CSS, and JavaScript. Familiarity with DOM manipulation in JavaScript will be helpful but isn’t required.

The first step in creating a dropdown menu is to build the basic HTML structure. We’ll create a navigation bar with a dropdown menu that is initially hidden.

Sep 02, 2024
Read More
Features 1
Tailwind Component
css html

Features 1

No preview available for this content.

Aug 05, 2024
Read More
Tutorial
css html

CSS Grid and Flexbox: Mastering Modern Layouts

  • Grid lines: Used to place items within the grid.
  • Grid tracks: Rows or columns in the grid.
  • grid-template-columns: Defines the number and size of columns.
  • grid-template-rows: Defines the number and size of rows.
  • grid-template-areas: Defines named grid areas.

Aug 03, 2024
Read More
Note
javascript css +1

Automatically add Tailwind CSS and jQuery classes to any table

  • px-6 py-3: Padding.
  • text-left text-xs font-medium text-gray-500 uppercase tracking-wider: Header text styling.
  • border-b border-gray-200: Bottom border.
  • bg-white divide-y divide-gray-200: White background and row separators.

Aug 03, 2024
Read More

Discussion 0

Please sign in to join the discussion.

No comments yet. Start the discussion!