dimsemenov / photoswipe-video-plugin

Video plugin for the PhotoSwipe
39 stars 2 forks source link
lightbox photoswipe video

The plugin is under development and for now now supports only <video> tag.

> Demo <

Initialization

The plugin requires a single JS file (grab it from dist/photoswipe-video-plugin.esm.js) and can be initialized like this:

 <script type="module">
import PhotoSwipeLightbox from './lib/photoswipe/photoswipe-lightbox.esm.js';
import PhotoSwipeVideoPlugin from './dist/photoswipe-video-plugin.esm.js';

const lightbox = new PhotoSwipeLightbox({
  gallery: '#gallery',
  children: 'a',
  pswpModule: './lib/photoswipe/photoswipe.esm.js',
});

const videoPlugin = new PhotoSwipeVideoPlugin(lightbox, {
  // options
});

lightbox.init();
</script>

Markup

If you're using just one format:

<a
  href="https://github.com/dimsemenov/photoswipe-video-plugin/blob/main/my-video.mp4" 
  data-pswp-video-src="https://github.com/dimsemenov/photoswipe-video-plugin/raw/main/my-video.mp4"
  data-pswp-width="800"
  data-pswp-height="600"
  data-pswp-type="video">
  <img src="https://github.com/dimsemenov/photoswipe-video-plugin/raw/main/poster.jpg" alt="" />
</a>

data-pswp-video-src is optional, if it's not defined - href attribute will be used.

Attributes data-pswp-width, data-pswp-height and data-pswp-type are required.

If you're serving multiple formats use data-pswp-video-sources attribute that accepts JSON strignified array:

<a
  href="https://github.com/dimsemenov/photoswipe-video-plugin/blob/main/my-video.mp4" 
  data-pswp-width="800"
  data-pswp-height="600"
  data-pswp-type="video"
  data-pswp-video-sources='[{"src":"my-video.webm","type":"video/webm"},{"src":"my-video.mp4","type":"video/mp4"}]'>
  <img src="https://github.com/dimsemenov/photoswipe-video-plugin/raw/main/poster.jpg" alt="" />
</a>

If you're providing the data directly via object:

{
  width: 800,
  height: 600,
  type: 'video',
  msrc: 'poster.jpg',

  // if you're using just one source
  videoSrc: 'my-video.mp4',

  // Or for multiple sources;
  // videoSrc: [
  //   { src: 'my-video.webm', type: 'video/webm' },
  //   { src: 'my-video.mp4', type: 'video/mp4' }
  // ] 
}