⚠️ Attention! This repository will not be maintained. The plugin is easy to use, but its customization can be troublesome. To improve plugin's flexibility, I made another repository PhotoViewer which is the enhanced version of Magnify.
Magnify
Magnify is a jQuery plugin to view images just like in windows.
Main Features
- Modal draggable.
- Modal resizable.
- Modal maximizable.
- Image movable.
- Image zoomable.
- Image rotatable.
- Keyboard control.
- Fullscreen showing.
- Multiple instances.
- Browser support (IE7+).
Installation
You can install the plugin via npm
$ npm install jquery.magnify --saveor via bower
$ bower install jquery.magnify --saveUsage
1.Include files
The usage of magnify is very simple.
<link href="/path/to/magnify.css" rel="stylesheet"> <script src="/path/to/jquery.js"></script> <script src="/path/to/jquery.magnify.js"></script>The icons in magnify use svg default, you can customize them in options.
2.Html structure
The default structure as below:
<a data-magnify="gallery" href="big-1.jpg"> <img src="small-1.jpg"> </a> <a data-magnify="gallery" href="big-2.jpg"> <img src="small-2jpg"> </a> <a data-magnify="gallery" href="big-3.jpg"> <img src="small-3.jpg"> </a>or
<img data-magnify="gallery" data-src="big-1.jpg" src="small-1.jpg"> <img data-magnify="gallery" data-src="big-2.jpg" src="small-2.jpg"> <img data-magnify="gallery" data-src="big-3.jpg" src="small-3.jpg">All structures above have optional attributes as below:
- Add a
data-srcattribute to link big image if you do not want to use a<a>tag. If you use it in a<a>tag, it will override the image link inhrefattribute. - Add a
data-captionattribute if you want to show a caption. If you are not using this attribute, it will show the image name in the url when you set thetitleoptiontrue. - Add a
data-groupattribute if you want to set the images in groups.
3.Call plugin
If you add a data-magnify attribute, you can write none of js.
Of course, you can use selector to call the plugin as following code:
$("[data-magnify=gallery]").magnify();Options
-
draggable
trueIf ture, it allow modal dragging.
-
resizable
trueIf ture, it allow modal resizing.
-
movable
trueIf ture, it allow image moving.
-
keyboard
trueIf ture, it allow keyboard control. It is similar to Windows photo viewer.
- ← prev image
- → next image
- + zoom in image
- - zoom out image
- ctrl + alt + 0 image autual size
- ctrl + , rotate image left
- ctrl + . rotate image right
- Q close the Magnify modal
-
title
trueIf ture, it will show image title on header.
-
fixedModalSize
falseIf false, the modal init size will fit to image size.
If true, the modal init size will be set with
modalWidthandmodalHeight. -
modalWidth
320The modal min width.
-
modalHeight
320The modal min height.
-
gapThreshold
0.02There will have a gap if modal too big to beyond the browser.
-
ratioThreshold
0.01Image zoom ratio threshold.
-
minRatio
0.05(5%)The min ratio to show image.
-
maxRatio
16(1600%)The max ratio to show image.
-
icons
You can customize the icons in following key.
-
minimize
svg -
maximize
svg -
close
svg -
zoomIn
svg -
zoomOut
svg -
prev
svg -
next
svg -
fullscreen
svg -
actualSize
svg -
rotateLeft
svg -
rotateRight
svg
-
-
headToolbar
['maximize','close']The buttons display in header toolbar.
-
footToolbar
['zoomIn','zoomOut','prev','fullscreen','next','actualSize','rotateRight']The buttons display in footer toolbar.
-
fixedContent
trueIf true, the content will be fixed.
-
i18n
You can customize the buttons title in following key.
-
minimize
minimize -
maximize
maximize -
close
close -
zoomIn
zoom-in -
zoomOut
zoom-out -
prev
prev -
next
next -
fullscreen
fullscreen -
actualSize
actual-size -
rotateLeft
rotate-left -
rotateRight
rotate-right
-
-
initMaximized
falseIf false, the modal size will be set of image size or what you set.
If true, the modal size will be set maximized when init.
-
multiInstances
trueIf true, it allow multiple instances.
-
initEvent
clickThe event to init plugin. Another value is
dblclick. -
initAnimation
trueIf false, it will not have animation at plugin's init.
-
fixedModalPos
falseif true, the modal position will be fixed when change images.
-
zIndex
1090The modal style of z-index, it is useful with multiple instances.
-
dragHandle
The handle of draggable.
-
progressiveLoading
trueIf true, the image will be rendered progressively.
Events
You can define callbacks in callbacks option. In each callback this is the Magnify instance. You can also get the element clicked of plugin's init from arguments el of Function.
$("[data-magnify=gallery]").magnify({ callbacks: { beforeOpen: function(el){ // Will fire before modal is opened }, opened: function(el){ // Will fire after modal is opened }, beforeClose: function(el){ // Will fire before modal is closed }, closed: function(el){ // Will fire after modal is closed }, beforeChange: function(index){ // Will fire before image is changed // The arguments is the current image index of image group }, changed: function(index){ // Will fire after image is changed // The arguments is the next image index of image group } } });License
MIT License
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.