electerious / basicLightbox

The lightest lightbox ever made.
https://basiclightbox.electerious.com
MIT License
564 stars 55 forks source link
image lightbox modal popup video

basicLightbox

Donate via PayPal

The lightest lightbox ever made.

Contents

Demos

Name Description Link
Default Includes most features. Try it on CodePen
DOM elements/nodes Use DOM elements/nodes in basicLightbox. Try it on CodePen
Create element Use .createElement() with basicLightbox. Try it on CodePen
Events Multiple ways to handle events. Try it on CodePen

Features

Requirements

basicLightbox depends on the following browser features and APIs:

Some of these APIs are capable of being polyfilled in older browsers. Check the linked resources above to determine if you must polyfill to achieve your desired level of browser support.

Setup

We recommend installing basicLightbox using npm or yarn.

npm install basiclightbox
yarn add basiclightbox

Include the CSS file in the head tag and the JS file at the end of your body tag…

<link rel="stylesheet" href="https://github.com/electerious/basicLightbox/blob/master/dist/basicLightbox.min.css">
<script src="https://github.com/electerious/basicLightbox/raw/master/dist/basicLightbox.min.js"></script>

…or skip the JS file and use basicLightbox as a module:

const basicLightbox = require('basiclightbox')
import * as basicLightbox from 'basiclightbox'

API

.create(content, opts)

Creates a new basicLightbox instance.

Be sure to assign your instance to a variable. Using your instance, you can…

Examples:

const instance = basicLightbox.create(`
    <h1>Dynamic Content</h1>
    <p>You can set the content of the lightbox with JS.</p>
`)
const instance = basicLightbox.create(`
    <h1>Not closable</h1>
    <p>It's not possible to close this lightbox with a click.</p>
`, {
    closable: false
})
const instance = basicLightbox.create(
    document.querySelector('#template')
)

Parameters:

Returns:

.visible()

Returns true when a lightbox is visible. Also returns true when a lightbox is currently in the process of showing/hiding and not fully visible/hidden, yet.

Example:

const visible = basicLightbox.visible()

Returns:

Instance API

Each basicLightbox instance has a handful of handy functions. Below are all of them along with a short description.

.show(cb)

Shows a lightbox instance.

Examples:

instance.show()
instance.show(() => console.log('lightbox now visible'))

Parameters:

.close(cb)

Closes a lightbox instance.

Examples:

instance.close()
instance.close(() => console.log('lightbox not visible anymore'))

Parameters:

.visible()

Returns true when the lightbox instance is visible. Also returns true when the lightbox is currently in the process of showing/hiding and not fully visible/hidden, yet.

Example:

const visible = instance.visible()

Returns:

.element()

Returns the DOM element/node associated with the instance.

Example:

const elem = instance.element()

Returns:

Options

The option object can include the following properties:

{
    /*
     * Prevents the lightbox from closing when clicking its background.
     */
    closable: true,
    /*
     * One or more space separated classes to be added to the basicLightbox element.
     */
    className: '',
    /*
     * Function that gets executed before the lightbox will be shown.
     * Returning false will prevent the lightbox from showing.
     */
    onShow: (instance) => {},
    /*
     * Function that gets executed before the lightbox closes.
     * Returning false will prevent the lightbox from closing.
     */
    onClose: (instance) => {}
}

Import src/styles/main.scss directly to customize the look of basicLightbox:

$basicLightbox__background: rgba(0, 0, 0, .8); // Background color
$basicLightbox__zIndex: 1000; // Stack order
$basicLightbox__duration: .4s; // Transition duration
$basicLightbox__timing: ease; // Transition timing

@import 'src/styles/main';