A lightbox gallery plugin for jQuery
Adds lightbox galleries to jQuery. Heavily customizable, easy to use, and built to support images, videos (YouTube, Vimeo, Wistia, Brightcove), Soundcloud tracks, IFRAMEs, and AJAX content.
Requires jQuery 1.7+.
Usage
Load it after jQuery:
<script src="http://code.jquery.com/jquery-x.x.x.min.js"></script>
<script src="jquery.poptrox.min.js"></script>
Set up your gallery:
<div id="gallery">
<a href="path/to/image1.jpg"><img src="path/to/image1_thumbnail.jpg" /></a>
<a href="path/to/image2.jpg"><img src="path/to/image2_thumbnail.jpg" /></a>
<a href="path/to/image3.jpg"><img src="path/to/image3_thumbnail.jpg" /></a>
<a href="path/to/image4.jpg"><img src="path/to/image4_thumbnail.jpg" /></a>
<a href="path/to/image5.jpg"><img src="path/to/image5_thumbnail.jpg" /></a>
<a href="path/to/image6.jpg"><img src="path/to/image6_thumbnail.jpg" /></a>
</div>
And call poptrox()
on it:
var foo = $('#gallery');
foo.poptrox();
Notes
- Poptrox parses all anchors inside the element you call it on, even if they're nested in other stuff. For example, this would totally work:
<div id="gallery">
<section>
<h2>Stuff I Like</h2>
<ul>
<li><a href="path/to/image1.jpg"><img src="path/to/image1_thumbnail.jpg" /></a></li>
<li><a href="path/to/image2.jpg"><img src="path/to/image2_thumbnail.jpg" /></a></li>
<li><a href="path/to/image3.jpg"><img src="path/to/image3_thumbnail.jpg" /></a></li>
</ul>
</section>
<section>
<h2>Stuff I Don't Like</h2>
<ul>
<li><a href="path/to/image1.jpg"><img src="path/to/image1_thumbnail.jpg" /></a></li>
<li><a href="path/to/image2.jpg"><img src="path/to/image2_thumbnail.jpg" /></a></li>
<li><a href="path/to/image3.jpg"><img src="path/to/image3_thumbnail.jpg" /></a></li>
</ul>
</section>
</div>
-
Each anchor must link to whatever you want shown in its popup, be it an image or something else (see below).
-
If you want captions on your popups, enable
usePopupCaption
(see below) and assign atitle
attribute to your<img>
element, like so:
<a href="path/to/image.jpg"><img src="path/to/image_thumbnail.jpg" title="This right here is a caption." /></a>
- You can also use the
caption
option to tell Poptrox where it should look for captions:
caption: null
The default behavior, which simply uses the title
attribute of each <img>
element.
caption: { selector: "xxxxxx" }
Uses the content of the element pointed to by the selector xxxxxx
(must be inside the anchor).
caption: { selector: "xxxxxx", remove: true }
Uses the content of the element pointed to by the selector xxxxxx
(must be inside the anchor),
then removes the element.
caption: function(a) { /* return something */ },
(Advanced) Uses a callback function to figure out the caption, where a
is a jQuery object
pointing to the anchor tag.
Supported Types
In addition to images, popups can also show other stuff (like YouTube videos).
To do this, point your thumbnail's anchor to the appropriate URL (see below for specifics)
and give it a data-poptrox
attribute like so:
<a href="http://untitled.tld/path/to/whatever" data-poptrox="type,(width)x(height)"><img src="path/to/thumbnail.jpg" /></a>
The data-poptrox
attribute breaks down like this:
type
: The type (eg.youtube
)(width)x(height)
: An optional width and height for the popup (eg.800x400
)
YouTube Videos
- Link format:
http://youtu.be/xxxxxxxxxxx
(found via the "Share" link) - Type:
youtube
- Example:
<a href="http://youtu.be/loGm3vT8EAQ" data-poptrox="youtube,800x480"><img src="path/to/thumbnail.jpg" /></a>
Vimeo Videos
- Link format:
http://vimeo.com/xxxxxxxx
(found via the "Share" button under "Embed") - Type:
vimeo
- Example:
<a href="http://vimeo.com/22439234" data-poptrox="vimeo,800x480"><img src="path/to/thumbnail.jpg" /></a>
Wistia Videos
- Link format:
http://fast.wistia.net/embed/iframe/fe8t32e27x
(found via "Share" or "Get Link") - Type:
wistia
- Example:
<a href="http://fast.wistia.net/embed/iframe/fe8t32e27x" data-poptrox="wistia,800x480"><img src="path/to/thumbnail.jpg" /></a>
Brightcove Videos
- Link format:
http://bcove.me/xxxxxxxx
(found via "Share" or "Get Link") - Type:
bcove
- Example:
<a href="http://bcove.me/qly3wjdw" data-poptrox="bcove,636x360"><img src="path/to/thumbnail.jpg" /></a>
Soundcloud Tracks
- Link format:
https://api.soundcloud.com/tracks/xxxxxxxx
(found via the "Share" button under "Widget Code" or "WordPress Code") - Type:
soundcloud
- Example:
<a href="https://api.soundcloud.com/tracks/93549370" data-poptrox="soundcloud"><img src="path/to/thumbnail.jpg" /></a>
IFRAMEs
- Link format: Anything.
- Type:
iframe
- Example:
<a href="path/to/whatever.html" data-poptrox="iframe,600x400"><img src="path/to/thumbnail.jpg" /></a>
AJAX Content
- Link format: Anything (as long as it's on the same domain)
- Type:
ajax
- Example:
<a href="path/to/whatever.html" data-poptrox="ajax,600x400"><img src="path/to/thumbnail.jpg" /></a>
Ignore
This "special" (unspecial?) type just tells Poptrox to treat whatever's in href
as if it were a normal link.
- Link format: Anything.
- Type:
ignore
- Example:
<a href="http://n33.co" data-poptrox="ignore"><img src="path/to/thumbnail.jpg" /></a>
Config
poptrox()
has numerous options one can use or override, if one were so inclined:
foo.poptrox({
preload: false, // If true, preload fullsize images in
// the background
baseZIndex: 1000, // Base Z-Index
fadeSpeed: 300, // Global fade speed
overlayColor: '#000000', // Overlay color
overlayOpacity: 0.6, // Overlay opacity
windowMargin: 50, // Window margin size (in pixels; only comes into
// play when an image is larger than the viewport)
windowHeightPad: 0, // Window height pad
selector: 'a', // Anchor tag selector
caption: null, // Caption settings (see docs)
popupSpeed: 300, // Popup (resize) speed
popupWidth: 200, // Popup width
popupHeight: 100, // Popup height
popupIsFixed: false, // If true, popup won't resize to fit images
useBodyOverflow: true, // If true, the BODY tag is set to overflow: hidden
// when the popup is visible
usePopupEasyClose: true, // If true, popup can be closed by clicking on
// it anywhere
usePopupForceClose: false, // If true, popup can be closed even while content
// is loading
usePopupLoader: true, // If true, show the popup loader
usePopupCloser: true, // If true, show the popup closer button/link
usePopupCaption: false, // If true, show the popup image caption
usePopupNav: false, // If true, show (and use) popup navigation
usePopupDefaultStyling: true, // If true, default popup styling will be applied
// (background color, text color, etc)
popupBackgroundColor: '#FFFFFF', // (Default Style) Popup background color (when
// usePopupStyling = true)
popupTextColor: '#000000', // (Default Style) Popup text color (when
// usePopupStyling = true)
popupLoaderTextSize: '2em', // (Default Style) Popup loader text size
popupCloserBackgroundColor: '#000000', // (Default Style) Popup closer background color
// (when usePopupStyling = true)
popupCloserTextColor: '#FFFFFF', // (Default Style) Popup closer text color (when
// usePopupStyling = true)
popupCloserTextSize: '20px', // (Default Style) Popup closer text size
popupPadding: 10, // (Default Style) Popup padding (when
// usePopupStyling = true)
popupCaptionHeight: 60, // (Default Style) Popup height of caption area
popupCaptionTextSize: null, // (Default Style) Popup caption text size
popupBlankCaptionText: '(untitled)', // Applied to images that don't have captions
// (when captions are enabled)
popupCloserText: '×', // Popup closer text
popupLoaderText: '••', // Popup loader text
popupClass: 'poptrox-popup',// Popup class
popupSelector: null, // (Advanced) Popup selector (use this if you
// want to replace the built-in popup)
popupLoaderSelector: '.loader', // (Advanced) Popup Loader selector
popupCloserSelector: '.closer', // (Advanced) Popup Closer selector
popupCaptionSelector: '.caption', // (Advanced) Popup Caption selector
popupNavPreviousSelector: '.nav-previous',// (Advanced) Popup Nav Previous selector
popupNavNextSelector: '.nav-next', // (Advanced) Popup Nav Next selector
onPopupClose: null, // Called when popup closes
onPopupOpen: null // Called when popup opens
});
License
jquery.poptrox.js is released under the MIT license.
Copyright © n33
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.