GithubHelp home page GithubHelp logo

spaceblocks / yet-another-react-lightbox Goto Github PK

View Code? Open in Web Editor NEW

This project forked from igordanchenko/yet-another-react-lightbox

0.0 0.0 0.0 1.58 MB

Modern React lightbox component

Home Page: https://yet-another-react-lightbox.com

License: MIT License

Shell 0.05% TypeScript 92.18% SCSS 4.75% CSS 0.63% HTML 0.26% JavaScript 2.13%

yet-another-react-lightbox's Introduction

Yet Another React Lightbox

Modern React lightbox component. Performant, easy to use, customizable and extendable.

Overview

NPM Version Bundle Size License MIT

  • Built for React: works with React 18, 17 and 16.8.0+
  • UX: supports keyboard, mouse, touchpad and touchscreen navigation
  • Preloading: never displays partially downloaded images
  • Performance: preloads limited number of images without compromising performance or UX
  • Responsive: responsive images with automatic resolution switching are supported out of the box
  • Video: video slides are supported via an optional plugin
  • Zoom: image zoom is supported via an optional plugin
  • Customization: customize any UI element or add your own custom slides
  • No bloat: never bundle rarely used features; add optional features via plugins
  • TypeScript: type definitions come built-in in the package
  • RTL: compatible with RTL layout

Yet Another React Lightbox | Example

Documentation

https://yet-another-react-lightbox.com/documentation

Examples

https://yet-another-react-lightbox.com/examples

Installation

npm install yet-another-react-lightbox

or

yarn add yet-another-react-lightbox

Minimal Setup Example

import * as React from "react";
import Lightbox from "yet-another-react-lightbox";
import "yet-another-react-lightbox/styles.css";

export default function App() {
    const [open, setOpen] = React.useState(false);

    return (
        <>
            <button type="button" onClick={() => setOpen(true)}>
                Open Lightbox
            </button>

            <Lightbox
                open={open}
                close={() => setOpen(false)}
                slides={[{ src: "/image1.jpg" }, { src: "/image2.jpg" }, { src: "/image3.jpg" }]}
            />
        </>
    );
}

Recommended Setup

Unlike many other lightbox libraries, Yet Another React Lightbox doesn't have a concept of "thumbnail" or "original" (or "full size") images. We use responsive images instead and recommend you provide multiple files of different resolutions for each image. Yet Another React Lightbox automatically populates srcset / sizes attributes and lets the browser decide which image is more appropriate for its viewport size.

import * as React from "react";
import Lightbox from "yet-another-react-lightbox";
import "yet-another-react-lightbox/styles.css";

export default function App() {
    const [open, setOpen] = React.useState(false);

    return (
        <>
            <button type="button" onClick={() => setOpen(true)}>
                Open Lightbox
            </button>

            <Lightbox
                open={open}
                close={() => setOpen(false)}
                slides={[
                    {
                        src: "/image1x3840.jpg",
                        alt: "image 1",
                        width: 3840,
                        height: 2560,
                        srcSet: [
                            { src: "/image1x320.jpg", width: 320, height: 213 },
                            { src: "/image1x640.jpg", width: 640, height: 427 },
                            { src: "/image1x1200.jpg", width: 1200, height: 800 },
                            { src: "/image1x2048.jpg", width: 2048, height: 1365 },
                            { src: "/image1x3840.jpg", width: 3840, height: 2560 },
                        ],
                    },
                    // ...
                ]}
            />
        </>
    );
}

You can also integrate 3rd-party image components (e.g., Next.js Image or Gatsby Image) via a custom render function. See examples on the documentation website.

Plugins

Yet Another React Lightbox allows you to add optional features to your project based on your requirements via plugins.

The following plugins are bundled in the package:

  • Captions - adds support for slide title and description
  • Counter - adds slides counter
  • Download - adds download button
  • Fullscreen - adds support for fullscreen mode
  • Inline - transforms the lightbox into an image carousel
  • Share - adds sharing button
  • Slideshow - adds slideshow button
  • Thumbnails - adds thumbnails track
  • Video - adds support for video slides
  • Zoom - adds image zoom feature

License

MIT © 2022 Igor Danchenko

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.