Javascript Vue

Pinch Scroll Zoom Component For Vue1 min read

vue-pinch-scroll-zoom

Vue component that provides content scrolling and zooming using mouse events or two fingers pinch on a mobile devices.

Installation

npm i @coddicat/vue-pinch-scroll-zoom

Usage

template:

<PinchScrollZoom
ref=”zoomer”
:width=”300″
:height=”400″
:scale=”scale”
@scaling=”scalingHandler”
style=”border: 1px solid black”
>
<img src=”https://picsum.photos/600/1000″ width=”300″ height=”400″ />
</PinchScrollZoom>

script:

import PinchScrollZoom, { PinchScrollZoomEmitData } from “@coddicat/vue-pinch-scroll-zoom”;

export default Vue.extend({
data: () => ({
scale: 2
}),
components: {
PinchScrollZoom,
},
methods: {
scalingHandler(e: PinchScrollZoomEmitData ): void {
console.log(e);
},
reset() {
this.$refs.zoomer.setData({
scale: 1,
originX: 0,
originY: 0,
translateX: 0,
translateY: 0
});
}
}
})

Props

the following properties don’t support the “.async” modifier

name
required
description
default

width
yes
visible area width

height
yes
visible area height

contentWidth
no
should be defined when content width larger than container width

contentHeight
no
should be defined when content height larger than container height

minScale
no
minimum allowable scaling
0.3

maxScale
no
maximum allowable scaling
5

within
no
limit scrolling of content to its borders
true

wheelVelocity
no
zoom velocity when mouse wheel
0.001

scale
no
scale of the content
1

origin-x
no
transform-origin-x
width/2

origin-y
no
transform-origin-y
height/2

translate-x
no
transform: translateX
0

translate-y
no
transform: translateY
0

throttleDelay
no
rendering delay (milliseconds)
25

draggable
no
draggable of/off
true

Events

the following events are emitted with the argument:

export interface PinchScrollZoomEmitData {
x: number;
y: number;
scale: number;
originX: number;
originY: number;
translateX: number;
translateY: number;
}

startDrag
stopDrag
dragging
scaling

Methods

.SetData(data: PinchScrollZoomSetData);

export interface PinchScrollZoomSetData {
scale: number;
originX: number;
originY: number;
translateX: number;
translateY: number;
}

React Admin Templates and Themes

Pin It on Pinterest

Generated by Feedzy