react-pinch-zoom
A React component that adds pinch-zoom and pan capability to an img
element. Both mobile and desktop browsers are supported. In desktop mode, you zoom with the mouse scrollwheel, and pan by dragging.
On render, the zoom and pan values are applied using CSS transforms.
Install
npm install @juanpablocs/react-pinch-zoom --save
Try it out
Online
Local
git clone https://github.com/bradstiff/react-responsive-pinch-zoom-pan.git
cd react-responsive-pinch-zoom-pan
npm install
npm start
- Browse to http://localhost:3001
Usage
import React from "react";
import PinchZoomPan from "react-responsive-pinch-zoom-pan";
const App = () => {
return (
<div style={{ width: '500px', height: '500px' }}>
<PinchZoomPan>
<img alt='Test Image' src='http://picsum.photos/750/750' />
</PinchZoomPan>
</div>
);
};
API
Prop | Type | Default | Description |
---|---|---|---|
initialScale | number | 'auto' | The initial scale of the image. When auto , the image will be proportionally 'autofit' to the container. |
minScale | number | 'auto' | The minimum scale to which the image can be zoomed out. When auto , the minimum scale is the 'autofit' scale. |
maxScale | number | 1 | The maximum scale to which the image can be zoomed in. (0.1 = 10%, 1 = 100%, 2 = 200%) |
tapScale | number | 1 | decimal maximize with double tap or double click. (0.1 = 10%, 1 = 100%) |
position | 'center' or 'topLeft' | 'topLeft' | Position of the image relative to the container. Applies when the scaled image is smaller than the container. |
zoomButtons | bool | true | Render plus (+) and minus (-) buttons on top of the image as another way to access the zoom feature. |
doubleTapBehavior | 'reset' or 'zoom' | 'reset' | Whether to zoom in or reset to initial scale on double-click / double-tap. |
Development
You're welcome to contribute to react-responsive-pinch-zoom-pan.
To set up the project:
- Fork and clone the repository
npm install
npm start
The example page will be available on http://localhost:3001 in watch mode, meaning you don't have to refresh the page to see your changes.