Vue Image Compare
Purpose of this fork
Updates (original repo seems dead) & new features :)
simple images loading via drag & drop files into browser, will load images locally (no upload to any server)
- drop 2 files
- drop 1 file on one side to change only one side of the comparison
better image comparison to see details :
- allow click & drag
- allow zoom
- allow middle click to start flickering left image for seconds
You can see the updated features of this fork on : https://image-compare.netlify.app
And still check the original author website : https://marcincichocki.github.io/vue-image-compare
Installation
yarn add vue-image-compare2# or npm i vue-image-compare2 --save
Usage
- register the component Globally :
components: imageCompare { return before: '/img/before.jpg' after: '/img/after.jpg' }
or locally :
{ return before: '/img/before.jpg' after: '/img/after.jpg' } components: imageCompare
- Then you can use
image-compare
with a minimal init :
or with some optionals params, like in demo folder :
Props
Name | Type | Default | Description |
---|---|---|---|
before |
String |
undefined (required) |
path to the image before |
after |
String |
undefined (required) |
path to the image after |
full |
Boolean |
false |
stretch images (1) |
padding |
Object |
{left: 0, right: 0} |
left and right padding (2) |
hideAfter |
Boolean |
false |
hide the after image |
zoom |
Object |
{min: 0.5, max: 2} |
scale image by |
reset |
Boolean |
false |
reset all to original |
isZoomable |
Boolean |
false |
mouse wheel to zoom in/out |
isDraggable |
Boolean |
false |
allow moving the comparison |
isSwitchable |
Boolean |
false |
allow drag & drop |
hideHandle |
Boolean |
false |
hide vertical handle bar |
labels |
Object |
{after: '', before: ''} |
comparison labels |
(1) : Determines if images are stretched to fill parent element. Can be used with help of CSS object-fit: cover to create full page image comparison
(2) : Set left and right "padding" in pixels, so handle can not reach edge of an image
Slots
icon-left
- element to be placed on the left side of the handleicon-right
- element to be placed on the right side of the handle
Example:
Events
@movement
- when image/handle is dragged left/right
Development
To contribute or try this component :
- clone this repo
- install dependencies :
npm install
- start dev task :
npm run dev
Thanks
- ctf0 : for his multiple contributions ❤️
- Netlify : awesome company that offers hosting for OSS
- Pixabay : for the free to use images
- Shields.io : nice looking badges to be proud of
- Travis-ci.org : for providing free continuous deployments