JavaScript image gallery for mobile and desktop, modular, framework independent

Related tags

Sliders PhotoSwipe
Overview

PhotoSwipe Repository

Build Status devDependency Status Flattr

JavaScript image gallery for mobile and desktop.

Location of files

  • Compiled PhotoSwipe JS and CSS files, SVG and PNG sprites are in the dist/ folder.
  • Source files (.JS and .SCSS) are in the src/ folder. Note that PhotoSwipe uses Autoprefixer when compiling SASS files.
  • Demo website is in the website/ folder.
  • Documentation markdown files are in website/documentation/.

Plugins / extensions / addons

Coded something useful? Email me and I’ll post a link to it here.

Build

To compile PhotoSwipe by yourself, make sure that you have Node.js, Grunt.js, Ruby and Jekyll installed, then:

  1. Clone the repository

    git clone https://github.com/dimsemenov/PhotoSwipe.git

  2. Go inside the PhotoSwipe folder that you fetched and install Node dependencies

    cd PhotoSwipe && npm install

  3. Run grunt to generate the JS and CSS files in the dist folder and the site in the _site/ folder

    grunt

Optionally:

  • Run grunt watch to automatically rebuild files (JS, CSS, demo website and documentation) when you change files in src/ or in website/.
  • Run grunt nosite to build just JS and CSS files (output is folder dist/).
  • Run grunt pswpbuild to build just JS files. Param --pswp-exclude allows to exclude modules, for example grunt pswpbuild --pswp-exclude=history will exclude history module.

Using PhotoSwipe?

If you’ve used PhotoSwipe in some interesting way, or on the site of a popular brand, I’d be very grateful if you shoot me a link to it.

License

Script is licensed under MIT license with one exception: Do not create a public WordPress plugin based on it, as I will develop it. If you need to use it for a public WordPress plugin right now, please ask me by email first. Thanks!

Attribution is not required, but much appreciated, especially if you’re making a product for developers.

About

PhotoSwipe 4.0+ is developed by Dmitry Semenov. But initially script was created in 2011 by Code Computerlove, a digital agency in Manchester, they passed on development in March 2014. You can view source and documentation of old PhotoSwipe (<4.0) in history of this repo.

Comments
  • Video support

    Video support

    Now that is v4.0, have you got any plan on introducing it? I remember that old versions was not doing it. I was hoping that now that you're managing it maybe it could be introduced. See http://brutaldesign.github.io/swipebox/ for an example.

    Thanks in advance :)

    P.S.: if you need some inputs or user-cases feel free to ask them, since I've already patched swipebox to support a better embedding of video URLs :)

    Feature Request 
    opened by julianxhokaxhiu 46
  • Responsive Example ?

    Responsive Example ?

    Using the JS from this CodePen http://codepen.io/dimsemenov/pen/ZYbPJM and am trying to add responsive images as functionality to it but I do not know how to do that.

    Can I simply replace:

                // create slide object
                item = {
                    src: linkEl.getAttribute('href'),
                    w: parseInt(size[0], 10),
                    h: parseInt(size[1], 10)
                };
    

    with

    var items = [
    
        // Slide 1
        {
            mediumImage: {
                src: 'path/to/medium-image-1.jpg',
                w:800,
                h:600
            },
            originalImage: {
                src: 'path/to/large-image-1.jpg',
                w: 1400,
                h: 1050
            }
        },
    
        // Slide 2
        // {
        //     mediumImage: {
        //         src: 'path/to/medium-image-2.jpg',
        //         ...
        //     
        // ...
    
    ];
    

    and then add

    // create variable that will store real size of viewport
    var realViewportWidth,
        useLargeImages = false,
        firstResize = true,
        imageSrcWillChange;
    
    // beforeResize event fires each time size of gallery viewport updates
    gallery.listen('beforeResize', function() {
        // gallery.viewportSize.x - width of PhotoSwipe viewport
        // gallery.viewportSize.y - height of PhotoSwipe viewport
        // window.devicePixelRatio - ratio between physical pixels and device independent pixels (Number)
        //                          1 (regular display), 2 (@2x, retina) ...
    
    
        // calculate real pixels when size changes
        realViewportWidth = gallery.viewportSize.x * window.devicePixelRatio;
    
        // Code below is needed if you want image to switch dynamically on window.resize
    
        // Find out if current images need to be changed
        if(useLargeImages && realViewportWidth < 1000) {
            useLargeImages = false;
            imageSrcWillChange = true;
        } else if(!useLargeImages && realViewportWidth >= 1000) {
            useLargeImages = true;
            imageSrcWillChange = true;
        }
    
        // Invalidate items only when source is changed and when it's not the first update
        if(imageSrcWillChange && !firstResize) {
            // invalidateCurrItems sets a flag on slides that are in DOM,
            // which will force update of content (image) on window.resize.
            gallery.invalidateCurrItems();
        }
    
        if(firstResize) {
            firstResize = false;
        }
    
        imageSrcWillChange = false;
    
    });
    
    
    // gettingData event fires each time PhotoSwipe retrieves image source & size
    gallery.listen('gettingData', function(index, item) {
    
        // Set image source & size based on real viewport width
        if( useLargeImages ) {
            item.src = item.originalImage.src;
            item.w = item.originalImage.w;
            item.h = item.originalImage.h;
        } else {
            item.src = item.mediumImage.src;
            item.w = item.mediumImage.w;
            item.h = item.mediumImage.h;
        }
    
        // It doesn't really matter what will you do here, 
        // as long as item.src, item.w and item.h have valid values.
        // 
        // Just avoid http requests in this listener, as it fires quite often
    
    });
    
    
    // Note that init() method is called after gettingData event is bound
    gallery.init();
    

    in between

            // Pass data to PhotoSwipe and initialize it
            gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
    
            // insert responsive image code here 
            gallery.init();
    

    ?

    I have looked at the index.html from the website folder of this repo and loaded it on the local server with XAMPP but it does not work at all, meaning PhotoSwipe is not initialized. I thought that the website folder is a fully working example, as repsonsive image code is found in the JS section of that index.html file.

    Does any one have a working example of how to get responsive images working with PhotoSwipe on a server that does have medium and large images? Or is there a live website perhaps that uses responsive images with PhotoSwipe?

    I am really new to JS and trying to put the pieces together. My question is basically how can I get the JS to read the var items = .. for responsive images when using the JS from this CodePen http://codepen.io/dimsemenov/pen/ZYbPJM ?

    Since the slide object is parsed with JS from the DOM I have no clue where to add the responsive images object in the JS.

    Any help or live example would be awesome.

    opened by ghost 30
  • 3rd Image always stuck on loading image

    3rd Image always stuck on loading image

    Hi,

    Pretty sweet plugin. Trying to use the exclusive mode with no thumbnails. I'm also using jQuery mobile. It seems no matter what I do, photoswipe always shows a loading indicator for the 3rd image, and it never loads. Your exclusive mode doesn't have an example using jQuery mobile, but I get the idea. I just put the var options in the jQuery document ready. However, even if I use the non-jQuery call, the same exact thing happens. Any ideas?

    Thanks, -Jon

    opened by wjthomas9 29
  • Basic modal functionality

    Basic modal functionality

    Hey dimsemenov,

    I saw there was basic work being done on a modal/non-modal option. I'm interested in having a photoswipe gallery embedded in as part of the page rather than taking up the entire space so I went ahead and made the modal option do this. Let me know if this works, and if there's anything else to add!

    To use in a non-modal situation, place the template inside a positioned element and the photoswipe gallery will take up the space of the parent when opened.

    Currently known bug: two-finger zoom offsets the image as if it were based off the entire screen rather than just the parent. I couldn't find where those calculations happened exactly, so the bug exists in this current state. If you could direct me to how the calculation is done I'll fix the bug. Thanks!

    opened by hellochar 27
  • zooming not working in android

    zooming not working in android

    Thank you for PhotoSwipe. I am using jquery-1.6.4.min.js,code.photoswipe.jquery-3.0.5.min.js,jquery.mobile-1.0rc2.min.js , there is no error except zooming in android. Pinch and zoom works in ipad,iphone why its not working in android. solutions please.........

    Feature Request Old PhotoSwipe 
    opened by rambo123 27
  • [iOS] Load a large images

    [iOS] Load a large images

    When you have a large images in your gallery, for example: 200 images, each image about 70K, so the total load is: 200x70=14,000k = 14 MB

    Yeah .... but look at this link: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html,

    And we can see some first images in the gallery, in this case I can see first 140 images (140x70 = 9800KB), and other images (141, 142, .... 200) I can't see it ? is this a bug ?

    Thanks for a cool framework ......

    opened by phuocle 26
  • Added object-position property support.

    Added object-position property support.

    I was trying to add a basic object-position support.

    This approach ~~requires to use additional data attribute data-cropped-position~~:

    <a ...
      data-cropped="true">
      <img ../>
    </a>
    
    img {
      object-fit: cover;
      object-position: center top;
    }
    

    Demo link: https://breezefront.com/screenshots

    Needs review 
    opened by vovayatsyuk 24
  • Can't share images via photoswipe-ui-default.js default setup, nor any I've tried

    Can't share images via photoswipe-ui-default.js default setup, nor any I've tried

    Having a heckuva time trying to share images from PhotoSwipe in social media. Neither Facebook nor Pinterest shares are working, they both give image url errors. I've tried various things, culled from issue posts here and elsewhere, but can't get anything to work. I know Facebook has changed things. Does anyone have a setup that works?

    I'm using the app_id in the Facebook share line, which I believe you need now. The line I'm using now in photoswipe-ui-default.js is: {id:'facebook', label:'Share on Facebook', url:'https://www.facebook.com/dialog/share?app_id=XXXXXX&href={{url}}&picture={{raw_image_url}}'}, ... with my proper add_id in there, of course. I've also tried image_url instead of raw_image_url, but same result. The Facebook error says: "picture should represent a valid URL". However, the same raw_image_url used in the {id:'download', label:'Download image', url:'{{raw_image_url}}', download:true} line works fine, and returns a valid url, so I don't know why FB can't extract a good url.

    When attempting to share via Pinterest, I also get an image url error message, saying: "Parameter 'image_url' (value https:../cartoons/01.jpg) is not a valid URL format", using that abbreviated url in the message. I'm not sure if that's the actual url Pinterest is getting, thus causing the error, or if their error message just shortens it. Again, I can't see why the url would be bad, since it works with the Download image link.

    Any help would be much appreciated. Thank you.

    opened by jamminjames 23
  • Feature request/suggestion

    Feature request/suggestion

    Safari on iPad has the feature that if you tap and hold an image you can save it. This seems to work only if you do that to an img element (though I haven't thoroughly checked that). In the photoswipe image gallery this doesn't work as you are hovering over something else apparently. Would it be possible to modify photoswipe accordingly? Would be really cool if you could save images that way.

    opened by Hk1020 23
  • jquery-1.7.1.min.js Bug

    jquery-1.7.1.min.js Bug

    Thank you for PhotoSwipe.

    Pinch and zoom on an image loaded in a gallery, using the jquery example and my own web app, breaks when using jquery-1.7.1.min.js. With no other changes jquery-1.6.4.min.js works beautifully. By breaks I mean the screen goes black, everything disappears and requires a reload of the page to return.

    opened by moonerent 21
  • Uncaught TypeError: Cannot read property 'x' of undefined

    Uncaught TypeError: Cannot read property 'x' of undefined

    I've already solved the problem, adding here to document the problem, in case someone runs into this as I did

    Uncaught TypeError: Cannot read property 'x' of undefined error threw me off for a good 2 hours.

    I read almost every line of the Call Stack in chrome debugger, ( it lead _equalizePoints() ), going back and forth until I discovered, that I had specified the images object like this:

    image.push({ src: "http://----.jpg", width: 100, height 100 });
    

    As it turns out, the expected keys for width & height are w and h, and not width or height.

    I assume that because PhotoSwipe is still in beta, there is no throwing of error helpful error messages, when data is missing. A "No width or height of image found" would have been very helpful, instead I tried to inspect the bounds of my images, try to figure out when and what is called, etc.

    opened by pyronaur 20
  • issues with custom data sources and webp

    issues with custom data sources and webp

    I've been trying to implement photoswipe on a site that already uses picture elements. So I had to use the dataSource option and some custom code to build a data source out of the existing list of picture elements. I then implemented the webp code from the documentation so that the lightbox utilized responsive image sets.

    I'm having a problem though. When opening the lightbox, the second image viewed (via prev or next) is missing its style="width:x; height:y;" settings. image gets displayed unconstrained and breaks the bounds of the lightbox.

    Click an image here https://devsite.santafedrygoods.com/product/alonpi-cashmere-degrade-puka-poncho-with-leather-trim-in-black-brown/

    once you cycle thru all the images however, the image shows up fine. Can't figure out why this would be happening.

    here is my code to build the options and init photoswipe

    ``

    opened by JoshBauguss 1
  • repeating destroy and init calls triggering the error Uncaught (in promise) TypeError: Cannot convert undefined or null to object

    repeating destroy and init calls triggering the error Uncaught (in promise) TypeError: Cannot convert undefined or null to object

    Source code:

    import PhotoSwipeLightbox from 'https://unpkg.com/photoswipe/dist/photoswipe-lightbox.esm.js';
    
    const lightbox = new PhotoSwipeLightbox({
      gallery: '#my-gallery',
      children: 'a',
      pswpModule: () => import('https://unpkg.com/photoswipe'),
    });
    
    lightbox.init();
    lightbox.destroy();
    lightbox.init();
    lightbox.destroy();
    lightbox.init();
    lightbox.destroy();
    lightbox.init();
    

    (Object.keys(this._listeners)).forEach((name) => {

    this._listeners is null in this case.

    Playground what reproduces the bug: https://codepen.io/tranquility/pen/ExpxEGB

    Try to open any image and check the developer console image

    p.s.: Who faced with this problem on some dynamic data - use dataSource attribute instead of gallery and children combination. Use pswpLightbox.loadAndOpen(index) for opening the image.

    Bug 
    opened by studentIvan 1
  • [ionic] Type 'undefined' does not satisfy the constraint 'Node'.

    [ionic] Type 'undefined' does not satisfy the constraint 'Node'.

    Getting below error when you do ionic serve

    Repo: https://github.com/indraraj26/ionic-photoswipe-test

    [ng] Error: node_modules/photoswipe/dist/types/util/util.d.ts:12:123 - error TS2344: Type 'undefined' does not satisfy the constraint 'Node'.
    [ng] 
    [ng] 12 export function createElement<T extends Falsy | keyof HTMLElementTagNameMap = "div", NodeToAppendElementTo extends Node = undefined>(className?: string | undefined, tagName?: T, appendToEl?: NodeToAppendElementTo): T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : HTMLDivElement;
    [ng]                                                           
    

    ionic info

    ionic info
    
    Ionic:
    
       Ionic CLI                     : 6.20.3 (/usr/local/lib/node_modules/@ionic/cli)
       Ionic Framework               : @ionic/angular 6.4.0
       @angular-devkit/build-angular : 15.0.3
       @angular-devkit/schematics    : 15.0.3
       @angular/cli                  : 15.0.3
       @ionic/angular-toolkit        : 6.1.0
    
    Capacitor:
    
       Capacitor CLI      : 4.6.1
       @capacitor/android : not installed
       @capacitor/core    : 4.6.1
       @capacitor/ios     : not installed
    
    Utility:
    
       cordova-res : not installed globally
       native-run  : 1.7.1
    
    System:
    
       NodeJS : v18.12.1 (/usr/local/bin/node)
       npm    : 8.19.2
       OS     : macOS Monterey
    
    
    opened by indraraj26 0
  • Documentation: Demo should show clickToCloseNonZoomable with TRUE too

    Documentation: Demo should show clickToCloseNonZoomable with TRUE too

    https://photoswipe.com/options/#clicktoclosenonzoomable

    • First I thought my web browser does not follow the clickToCloseNonZoomable option.

    • Only to then realize that the demo shows clickToCloseNonZoomable with FALSE so it behaves correctly.

    • Then I reflected on myself and realized why I was confused and first thought this was a bug:

      • Showing the demo with clickToCloseNonZoomable: false makes little sense.
      • Everywhere else on that demo page you use rather large images.
      • So you have experienced that option nowhere else, and in the example which is about that option you show it as false.

    Recommendation: Showcase this option with the appropriately small imagery as you have it already there with the option clickToCloseNonZoomable once true and once false.

    Suggestion 
    opened by porg 0
  • Introduce zoom levels fill-width fill-height plus 9 alignment options (anchor points)

    Introduce zoom levels fill-width fill-height plus 9 alignment options (anchor points)

    Status Quo

    • Alignment for the zoom levels fit and fill is currently hardcoded to mid-center.
    • This is a good fit for most content.

    Design / Presentation Challenge

    • But for some content having full control over alignment matters!
    • Most prominent use case: Screenshots or Screen Designs. Sample use case below.
    • But also other use cases, e.g. full body model photography, where you want e.g. the initial zoom level to be the total view (= fit) where you see the whole model, and then the zoomed-in-view to be fill-width with an alignment of top-center so that you can cycle through the zoomed in head/torso area of the photo models.

    Proposal

    Alignment options

    Currently hard-coded to mid-center. I propose to offer all 9 alignment anchor points:

    • top-left, top-center, top-right,
    • mid-left, mid-center, mid-right,
    • bottom-left, bottom-center, bottom-right.

    Zoom Levels

    • https://photoswipe.com/adjusting-zoom-level/#supported-values : fit and fill , which are axis agnostic.
    • I propose to add the zoom values fill-width and fill-height with which you can work axis-specific.

    Use Case: Presenting screenshot series from a responsive + international app

    PhotoSwipe - Introduce zoom levels fill-width fill-height plus 9 alignment options

    Given:

    • Different width per each device class in the screenshot series
    • Possibly different heights per each device class, in case of full page length screenshots (longer than viewport) with different content lengths.
    • App which can be LTR or RTL, so the content anchor point may be either top-left or top-right.

    Full control with the new parameters:

    • If I had the 9 different alignment options and using zoom level 1(=100% = 1 image pixel fills 1 CSS pixel) I could achieve that the screenshots, even if differently sized align perfectly.
      • The viewer can much more easily visually track UI/content elements on the different device classes, when jumping between their screenshots.
    • And for the simpler use case of having same width screenshots but with different height, then I would choose fill-width and alignment top-center.
      • This would guarantee that the app-header is always top-aligned, regardless how long the different screenshots in the series may be.
    Suggestion 
    opened by porg 2
  • Image not loaed when max-height property is defined for an image!

    Image not loaed when max-height property is defined for an image!

    If the max-height CSS property is defined for an img element using a percentage value ( e.g max-height: 100%; ), an empty lightbox appears when this image is clicked. max-width , height (without max-), and using pixels, not percentage (max-height: 100px) properties do not cause this error.

    Potential Bug 
    opened by Shvan11 2
Releases(v5.3.4)
  • v5.3.4(Nov 22, 2022)

    Accessibility improvements (via @in0ni).

    • added ARIA attributes to follow 'carousel' pattern,
    • set/unset aria-hidden according to active slide,
    • set id=pswp__items, and ensure buttons have aria-controls pointing to it
    Source code(tar.gz)
    Source code(zip)
  • v5.2.2(Mar 28, 2022)

    Major update that changes initialization method!

    New demo | New docs

    What's new

    Code quality and rewrite in ES6 The script is now distributed as an ES module and does not require a build step to use.

    Simpler initialization and dynamic import support PhotoSwipe now supports dynamic import and does not block page rendering.

    <script type="module">
    import Lightbox from './photoswipe-lightbox.esm.js';
    const lightbox = new Lightbox({
      gallery: '#my-gallery',
      children: 'a',
      pswpModule: () => import('./photoswipe.esm.js')
    });
    lightbox.init();
    </script>
    

    Animation and gesture engine update Improved performance of most animations, touch gestures should feel more fluid now. The initial opening or closing transition can be run from cropped thumbnails.

    Single CSS file and no external assets Using CSS variables, default icons are dynamically generated and tiny.

    Built-in responsive images support PhotoSwipe also dynamically loads larger images as the user zooms via srcset.

    Open images in zoomed state It's now much easier to control the zoom level.

    Removed features from the core Some built-in features were removed in v5, either because they are using outdated technology or just rarely used. Some of them are or will be replaced by a plugin. These include:

    • History API (#hash-based navigation is outdated)
    • Social sharing (unreliable URL, lack of Opengraph support)
    • Fullscreen button (rarely used, double fullscreen). Related example in docs →
    • Caption (accessibility problems). Refer to the caption section of docs.
    • Inline gallery support (v5 is mainly designed to be used as a dialog).
    Source code(tar.gz)
    Source code(zip)
  • v4.1.3(Jan 8, 2019)

  • v4.1.2(Apr 5, 2017)

    Fix: iOS 10.3 not updating layout after orientaton change in some cases. For more details please refer to issue https://github.com/dimsemenov/PhotoSwipe/issues/1315#issuecomment-291897591

    Source code(tar.gz)
    Source code(zip)
  • v4.1.1(Dec 24, 2015)

    • Fix: click on inline SVG in slide or controls causes error "SvgAnimatedString no className".
    • Fix: Firefox 42 not rendering nearby images sometimes, issue #1014.
    • Disabled native fullscreen option entirely in old versions of Android
    • Added option fitControlsWidth for the default UI (default was not changed – 1200px), issue #1021.

    :christmas_tree:

    Source code(tar.gz)
    Source code(zip)
  • v4.1.0(Jul 11, 2015)

    Improved rendering performance of images that are larger than PhotoSwipe viewport, which leads to more smooth swipe transition and decreased memory usage (up to 50% depending on image and viewport size), but affects zooming behaviour.

    Composited layer for the image is now created only after it's zoomed. Watch screencast that demonstrates how it works now.

    This change does not affect public API, everything should work as before.

    Also some small things that were changed:

    • closeOnScroll is now blocked if animations are running or gesture is performed.
    • Horizontal dragging direction is forced if previous swipe transition wasn't finished.
    • Reduced duration of transition that finishes zoom gesture (300 to 200ms).
    • verticalDragRange default value increased from 0.6 to 0.75.
    • Reduced default maximum spread and double tap zoom level from 2x and 1.5x to 1.33x.
    Source code(tar.gz)
    Source code(zip)
  • v4.0.8(May 21, 2015)

    • Added ability to use custom identifiers for the slides in the URL, for example: http://example.com/?gid=1&pid=your-custom-gallery-item-uid. More info in FAQ section of docs. (via @csu & @kyleder).
    • Added vertical drag range option (verticalDragRange) (via @v-yanchevsky).
    • Added ability to control size of PhotoSwipe viewport (it doesn't have to fill 100% width and height of window). More info in FAQ section of docs.
    • Fix: partly broken preloader animation when direction:rtl.
    Source code(tar.gz)
    Source code(zip)
  • v4.0.7(Mar 18, 2015)

    • Fix: slow wheel scroll on Windows Firefox (#730).
    • Fix: wrong image size when it's smaller than PhotoSwipe viewport in IE8.
    • Fix: freeze in Ubuntu Firefox 36 (#783), only CSS file changed.
    • Added SVG support: image size is forced to defined "w" & "h" properties of slide object. See demo.
    • Update bower.json main array with default ui (via @inlikealion).
    • Lazy-loading when using responsive images: allow item alteration before checking validity (via @DanielMuller).
    Source code(tar.gz)
    Source code(zip)
  • v4.0.6(Feb 25, 2015)

    • Fix: incorrect zoom pan position in fullscreen when page was scrolled.
    • Fix: fullscreen icon is not updating when changing fullscreen state.
    • Fix: orientation change breaks layout if there are 2 slides.
    • Fix: error when image finished loading (can appear only when low number of items and when rapidly switching slides).
    • Fix: issue with RTL layouts (via @louy).
    • Fix: error appears when captionEl:false.
    • closeOnScroll is now triggered only by mousewheel events and only in browsers that support transform. As various browsers trigger scroll event unpredictably (during page load, when bars appear, etc.).
    • Fix: in desktop Safari PhotoSwipe that opens on page load can close (caused by above issue).
    • Added `mainScrollAnimStart" event (via @asadovsky).
    • Some developers prefer to edit CSS file directly without using Sass, that’s why code comments are now visible in .css files too (in dist/ folder), not just in .scss files.

    Support PhotoSwipe on Flattr →

    Source code(tar.gz)
    Source code(zip)
  • v4.0.5(Jan 15, 2015)

    • Reset idle timer on controls click.
    • Hide share modal when slides change.
    • Added clickToCloseNonZoomable option.
    • Bugfix: error when replacing slide dynamically.
    • Removed minZoom and maxZoom properties from slide object.
    Source code(tar.gz)
    Source code(zip)
  • v4.0.3(Jan 3, 2015)

    • Fix: dynamic adding/removing slides issue.
    • During zoom/pan image position is now rounded (#704). Not rounded position could cause not sharp image on high-dpi screens
    • Hide arrows and counter if there is only one slide.
    • Prevent page scroll if closeOnScroll:false.
    • Added options that allow to parse share links output.
    • Added event that triggers when share link is clicked.
    • Configurable zoom level for double-tap zoom.
    • Prettified, commented and structured Sass files.
    • Added documentation on how to add/remove/edit slides dynamically.

    More info in commit history.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.2(Dec 21, 2014)

    • Now you can add HTML content in slides, more info in documentation.
    • Fix: links trigger during or after drag gesture.
    • Allow dragging or panning only via left mouse button.
    • Double tap zooms to 1.5x if initial zoom is less than 0.7x.
    • Force paint on bg and root element (opening transition).
    Source code(tar.gz)
    Source code(zip)
  • v4.0.1(Dec 16, 2014)

    • Fix: in IE8 3rd image not always appended.
    • Minified assets (images, svg).
    • Improved keyboard events handling. Esc key handler moved to keydown. Keyup listener removed entirely. Added e.preventDefault() to keyboard events.
    • Fix: commonjs/browserify issue.
    • Improved Sass files, added Autoprefixer, path to assets can be configurable.
    • Fix: in old Android (<4.4) tap event could trigger twice.

    More info in commit history.

    Source code(tar.gz)
    Source code(zip)
Owner
Dmitry Semenov
Dmitry Semenov
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.

impress.js It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prez

impress.js 37.1k Jan 3, 2023
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.

impress.js It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prez

impress.js 37.1k Jan 3, 2023
The responsive CSS animation framework for creating unique sliders, presentations, banners, and other step-based applications.

Sequence.js The responsive CSS animation framework for creating unique sliders, presentations, banners, and other step-based applications. Sequence.js

Ian Lunn 3.4k Dec 20, 2022
The HTML Presentation Framework

reveal.js is an open source HTML presentation framework. It enables anyone with a web browser to create fully featured and beautiful presentations for

Hakim El Hattab 62.8k Jan 2, 2023
DIY Presentation Micro-Framework

Bespoke.js DIY Presentation Micro-Framework Bespoke.js is a super minimal (1KB min'd and gzipped), modular presentation library for modern browsers, d

Bespoke.js 4.7k Dec 18, 2022
A dependency-free JavaScript ES6 slider and carousel. It’s lightweight, flexible and fast. Designed to slide. No less, no more

Glide.js is a dependency-free JavaScript ES6 slider and carousel. It’s lightweight, flexible and fast. Designed to slide. No less, no more What can co

null 6.7k Jan 7, 2023
noUiSlider is a lightweight JavaScript range slider library with full multi-touch support. It fits wonderfully in responsive designs and has no dependencies.

noUiSlider noUiSlider is a lightweight JavaScript range slider. No dependencies All modern browsers and IE > 9 are supported Fully responsive Multi-to

Léon Gersen 5.4k Dec 28, 2022
JavaScript library for one-directional scrolling with item based navigation support.

Sly JavaScript library for one-directional scrolling with item based navigation support. Sly supports navigation with: mouse wheel scrolling scrollbar

null 2.9k Dec 23, 2022
Vegas is a jQuery/Zepto plugin to add beautiful backgrounds and Slideshows to DOM elements.

Vegas – Backgrounds and Slideshows Vegas is a jQuery/Zepto plugin to add beautiful backgrounds and Slideshows to DOM elements. Important note: Vegas 2

Jay Salvat 1.8k Jan 7, 2023
Strut - An Impress.js and Bespoke.js Presentation Editor

All new development is happening in Strut2 Strut2 is currently private until we further solidify our "open source dividened program." Open Source Divd

Matthew Wonlaw 1.7k Dec 30, 2022
A jQuery plugin for a slider with adaptive colored figcaption and navigation.

Adaptive Slider jQuery Plugin A jQuery plugin for a slider with adaptive colored figcaption and navigation. This plugin will take a list of figure ele

null 53 Jan 3, 2023
A lightweight carousel library with fluid motion and great swipe precision

Embla Carousel Embla Carousel is a bare bones carousel library with great fluid motion and awesome swipe precision. It's library agnostic, dependency

David 2.8k Jan 4, 2023
Swiffy-slider - Super fast carousel and slider with touch for optimized websites running in modern browsers.

Swiffy Slider Super fast lightweight carousel and slider with touch for optimized websites running in modern browsers. Explore Swiffy Slider docs » Se

Dynamicweb Software A/S 149 Dec 28, 2022
OlumSlider is a lightweight and flexible slider, written via vanilla js

olum-slider OlumSlider is a lightweight and flexible slider, written via vanilla js Documentation CDN <!DOCTYPE html> <html lang="en"> <head> <t

Olumjs 0 Oct 8, 2021
JavaScript image gallery for mobile and desktop, modular, framework independent

PhotoSwipe v5 — JavaScript image gallery and lightbox Demo | Documentation Repo structure dist/ - main JS and CSS src/ - source JS and CSS. src/js/pho

Dmytro Semenov 22.4k Dec 29, 2022
Unite Gallery - Responsive jQuery Image and Video Gallery Plugin. Aim to be the best gallery on the web on it's kind. See demo here:

##Unite Gallery - Responsive jQuery Gallery Plugin Product Link: unitegallery.net This gallery has commercial versions for: WordPress , Joomla! , Pres

Max Valiano 531 Oct 24, 2022
Story Show Gallery - JS & React - minimalist, vertical photo gallery, mobile friendly

Vertical photo gallery optimized for smartphones (notch area included). SSG will support your brand and marketing. Optimally placed captions, full screen lightbox, no ugly arrows

Roman Flössler 21 Oct 4, 2022
3D Infinite Art Gallery! This pulls from Reddit's r/Art and creates a procedural infinite art gallery from random (sfw-only) posts.

Infinite-Art-Gallery Click for Demo! 3D Infinite Procedurally-Generated Art Gallery! This pulls from Reddit's r/Art and creates a procedural infinite

Austin 33 Dec 15, 2022
A customizable, modular, responsive, lightbox gallery plugin.

lightGallery A customizable, modular, responsive, lightbox gallery plugin for jQuery. Demo JQuery lightGallery demo. Codepen demo Main features Fully

Sachin N 5.6k Jan 4, 2023
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022