New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

zoomora

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zoomora

A modern, responsive lightbox plugin with zoom, fullscreen, and gallery features

latest
Source
npmnpm
Version
1.2.1
Version published
Maintainers
1
Created
Source

Zoomora Lightbox

Zoomora Lightbox Banner

A modern, responsive lightbox plugin with zoom, fullscreen, and gallery features. Perfect for showcasing images and videos in a beautiful, user-friendly interface.

View Live Demo npm version npm downloads License Bundle Size GitHub stars

DemoDocumentationReport BugRequest Feature

✨ Features

  • 🖼️ Image Galleries - Group multiple images together
  • 🎥 Video Support - YouTube embeds and local video files (MP4, WebM, OGG)
  • 🔍 Smart Zoom - Automatically detects if images are zoomable
  • 🖱️ Pan & Drag - Navigate zoomed images with mouse/touch
  • 📱 Fully Responsive - Works seamlessly on all devices
  • ⌨️ Keyboard Navigation - Arrow keys, Escape, and shortcut keys
  • 🎬 Smooth Animations - Fade and slide transition effects
  • 🖼️ Thumbnail Strip - Quick navigation between gallery items
  • 🎯 Auto-Hide Controls - Distraction-free viewing mode
  • 🌓 Fullscreen Mode - Immersive viewing experience
  • 🎨 Customizable - Extensive options and callbacks
  • Accessible - Keyboard and screen reader friendly
  • 🚀 Lightweight - No dependencies required (~15KB gzipped)
  • 🔧 Easy Integration - Works with vanilla JS, React, Vue, etc.
  • 🎁 MIT Licensed - Free for personal and commercial use

📦 Installation

NPM

npm install zoomora

Yarn

yarn add zoomora

CDN

<!-- CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/zoomora/dist/zoomora.css">

<!-- JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/zoomora/dist/zoomora.umd.min.js"></script>

Manual Download

Download the latest release from GitHub Releases and include the files in your project:

<link rel="stylesheet" href="path/to/zoomora.css">
<script src="path/to/zoomora.umd.min.js"></script>

🚀 Quick Start

Basic Usage

<!-- Add data-zoomora attribute with a unique group ID -->
<img src="image-1.jpg" 
     data-src="image-1.jpg" 
     data-zoomora="my-gallery" 
     alt="Image 1">

<img src="image-2.jpg" 
     data-src="image-2.jpg" 
     data-zoomora="my-gallery" 
     alt="Image 2">

<!-- Initialize (auto-initializes if elements exist) -->
<script>
  new Zoomora();
</script>

With Custom Options

const lightbox = new Zoomora({
  selector: '[data-zoomora]',
  showCounter: true,
  showThumbnails: true,
  showFullscreen: true,
  showZoom: true,
  transition: 'fade', // 'fade' or 'slide'
  maxZoomScale: 3,
  animationDuration: 300,
  closeOnBackgroundClick: true, // v1.2.0+
  autoHideDelay: 3000,
  autoHideEnabled: false,
  onOpen: (element, index) => {
    console.log('Lightbox opened', element, index);
  },
  onClose: (index) => {
    console.log('Lightbox closed', index);
  }
});

📖 Usage Examples

<div class="gallery">
  <img src="thumb-1.jpg" 
       data-src="full-1.jpg" 
       data-caption="Beautiful sunset" 
       data-zoomora="gallery-1" 
       alt="Sunset">
  
  <img src="thumb-2.jpg" 
       data-src="full-2.jpg" 
       data-caption="Mountain view" 
       data-zoomora="gallery-1" 
       alt="Mountains">
</div>

Video Support

Local Video

<img src="video-poster.jpg" 
     data-src="video.mp4" 
     data-type="video" 
     data-caption="My video" 
     data-zoomora="media-gallery" 
     alt="Video">

YouTube Video

<img src="video-thumbnail.jpg" 
     data-src="https://www.youtube.com/watch?v=VIDEO_ID" 
     data-type="video" 
     data-caption="YouTube video" 
     data-zoomora="media-gallery" 
     alt="Video">

YouTube short URLs also work:

data-src="https://youtu.be/VIDEO_ID"

Single Image

<img src="image.jpg" 
     data-src="image.jpg" 
     data-zoomora="single-image" 
     alt="Single image">

Using with Anchor Tags

// Initialize with href attribute instead of data-src
const lightbox = Zoomora.bind('a[data-lightbox]', {
  useHref: true
});
<a href="full-image.jpg" data-lightbox="gallery">
  <img src="thumbnail.jpg" alt="Image">
</a>

⚙️ Configuration Options

OptionTypeDefaultDescription
selectorString'[data-zoomora]'CSS selector for lightbox triggers
showCounterBooleantrueShow image counter (1 / 5)
showThumbnailsBooleantrueShow thumbnail navigation
showFullscreenBooleantrueShow fullscreen button
showZoomBooleantrueShow zoom button
transitionString'fade'Transition effect: 'fade' or 'slide'
useHrefBooleanfalseUse href instead of data-src
maxZoomScaleNumber3Maximum zoom scale
zoomStepNumber0.1Zoom step for scroll wheel
animationDurationNumber300Animation duration in milliseconds
closeOnBackgroundClickBooleantrueClose lightbox on background click (v1.2.0+)
showAutoHideToggleBooleantrueShow auto-hide toggle button
autoHideDelayNumber3000Delay before hiding controls (ms)
autoHideEnabledBooleanfalseEnable auto-hide by default
onOpenFunctionnullCallback when lightbox opens
onCloseFunctionnullCallback when lightbox closes
onNextFunctionnullCallback when navigating next
onPrevFunctionnullCallback when navigating previous

🎮 Keyboard Shortcuts

KeyAction
Previous image
Next image
EscClose lightbox / Exit fullscreen
ZToggle zoom
FToggle fullscreen
TToggle thumbnails

🔧 API Methods

const lightbox = new Zoomora();

// Navigate
lightbox.next();           // Go to next item
lightbox.prev();           // Go to previous item
lightbox.goTo(2);          // Go to specific index

// Controls
lightbox.open(element);    // Open lightbox with element
lightbox.close();          // Close lightbox
lightbox.toggleZoom();     // Toggle zoom
lightbox.toggleFullscreen(); // Toggle fullscreen
lightbox.toggleThumbnails(); // Toggle thumbnails
lightbox.toggleAutoHide(); // Toggle auto-hide controls

// State
lightbox.isOpen();         // Check if open
lightbox.getCurrentIndex(); // Get current index
lightbox.getTotalItems();  // Get total items

// Management
lightbox.refresh();        // Refresh gallery items
lightbox.updateOptions({   // Update options
  transition: 'slide'
});
lightbox.destroy();        // Clean up and remove

🎨 Styling

Zoomora includes beautiful default styles, but you can customize them:

/* Override CSS variables */
:root {
  --zoomora-overlay-bg: rgba(0, 0, 0, 0.95);
  --zoomora-control-bg: rgba(255, 255, 255, 0.1);
  --zoomora-control-hover: rgba(255, 255, 255, 0.2);
}

/* Custom styles */
.zoomora {
  /* Your custom styles */
}

📊 Stats & Performance

  • Bundle Size: ~15KB minified + gzipped
  • Zero Dependencies: Pure vanilla JavaScript
  • Browser Support: All modern browsers (Chrome, Firefox, Safari, Edge)
  • Mobile Optimized: Touch-friendly with gesture support
  • Performance: 60fps smooth animations
  • Accessibility: WCAG 2.1 AA compliant

🌐 Browser Support

  • ✅ Chrome (latest)
  • ✅ Firefox (latest)
  • ✅ Safari (latest)
  • ✅ Edge (latest)
  • ✅ Mobile browsers (iOS Safari, Chrome Mobile)

📝 Changelog

See CHANGELOG.md for a detailed list of changes.

Recent Updates

v1.2.0 (Latest)

  • New: Background click to close lightbox
  • New: closeOnBackgroundClick configuration option
  • 🐛 Fixed: Smart click detection between media and background

v1.1.0

  • ✨ Progressive zoom levels (1x → 1.5x → 2x → 3x → 100%)
  • 🐛 Fixed drag dezooming issue
  • 🐛 Fixed auto-hide toggle not working
  • 🐛 Fixed vertical image boundary calculations

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  • Fork the repository
  • Create your feature branch (git checkout -b feature/AmazingFeature)
  • Commit your changes (git commit -m 'Add some AmazingFeature')
  • Push to the branch (git push origin feature/AmazingFeature)
  • Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

👨‍💻 Author

Faruk Ahmed

🙏 Acknowledgments

  • Inspired by modern lightbox libraries
  • Built with love for the web community
  • Thanks to all contributors!

💬 Community & Support

🔗 Resources

Made with ❤️ by FrontTheme

⬆ back to top

Keywords

lightbox

FAQs

Package last updated on 27 Feb 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts