a Vue plugin for PhotoSwipe without set image size
npm install vue-pswipe // main.js import Photoswipe from 'vue-pswipe' Vue.use(Photoswipe, options)see complete options
you can set v-pswp directive in element to mark as clickable
<Photoswipe> <img :src="imageSrc" v-pswp="imageSrc" /> </Photoswipe>| Property | Type | Description | Default |
|---|---|---|---|
| options | object | original PhotoSwipe options, see complete options | - |
| auto | boolean | automatically collect all img tags without the need for the v-pswp directive | false |
| bubble | boolean | allow click event bubbling | false |
| lazy | boolean | lazy loading image, you can set to false to preload all image | true |
| rotate | boolean | add a rotate action button to the top bar, allow user to rotate the current image | false |
use for mark current element as gallery item, accept image src or options object
Directive Options:
interface PswpDirectiveOptions { /** * path to image */ src: string /** * image size, 'width x height', eg: '100x100' */ size?: string /** * small image placeholder, * main (large) image loads on top of it, * if you skip this parameter - grey rectangle will be displayed, * try to define this property only when small image was loaded before */ msrc?: string /** * used by Default PhotoSwipe UI * if you skip it, there won't be any caption */ title?: string /** * to make URLs to a single image look like this: http://example.com/#&gid=1&pid=custom-first-id * instead of: http://example.com/#&gid=1&pid=1 * enable options history: true, galleryPIDs: true and add pid (unique picture identifier) */ pid?: string | number }emit after click thumbnail, if listen to this event, next function must be called to resolve this hook
Parameters:
-
event:index: current image indextarget: the target that triggers effective click event
-
next:must be called to resolve the hook.
next(false)will abort open PhotoSwipe
emit after photoswipe init, you can get current active photoswipe instance by parameter
Parameters:
-
pswp:current photoswipe instance
support all original PhotoSwipe events, see original event, eg:
<Photoswipe @beforeChange="handleBeforeChange"> <img :src="imageSrc" v-pswp="imageSrc" /> </Photoswipe>WARNING: If you using Photoswipe component in HTML, not in a SFC, use v-on instead, because HTML tag and attributes are case insensitive
<Photoswipe v-on ="{ beforeChange: handleBeforeChange }"> <img :src="imageSrc" v-pswp="imageSrc" /> </Photoswipe>In addition to using the <Photoswipe> tag, you can also use Vue.prototype.$Pswp.open(params) to directly open a PhotoSwipe. This is especially useful in the case of Custom HTML Content in Slides.
<template> <button @click="handleClick">open</button> </template> <script> export default { methods: { handleClick() { this.$Pswp.open({ items: [ { html: '<div>hello vue-pswipe</div>' } ] }) } } } </script>Vue.prototyp.$Pswp.open:
type Open = (params: { items: PswpItem[], options?: PswpOptions }) => pswpBut cannot use vue.prototype.$Pswp.open()
<script> export default { components: { Photoswipe: () => import('vue-pswipe') .then(({ Photoswipe }) => Photoswipe) } } </script>npm run dev