Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nzbin/magnify
🖼 A jQuery plugin to view images just like in Windows. Browser support IE7+!
https://github.com/nzbin/magnify
draggable image-gallery jquery lightbox magnify modal photoviewer resizable responsive zoomable
Last synced: 2 days ago
JSON representation
🖼 A jQuery plugin to view images just like in Windows. Browser support IE7+!
- Host: GitHub
- URL: https://github.com/nzbin/magnify
- Owner: nzbin
- License: mit
- Created: 2017-11-19T11:14:58.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-12-20T08:34:12.000Z (about 1 year ago)
- Last Synced: 2024-12-25T14:16:14.694Z (28 days ago)
- Topics: draggable, image-gallery, jquery, lightbox, magnify, modal, photoviewer, resizable, responsive, zoomable
- Language: JavaScript
- Homepage: https://nzbin.github.io/magnify/
- Size: 1.59 MB
- Stars: 194
- Watchers: 12
- Forks: 58
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
> ⚠️ Attention! This repository will be maintained just in small iteration. The plugin is easy to use, but its customization can be troublesome. To improve plugin's flexibility, I made another repository [PhotoViewer](https://github.com/nzbin/photoviewer) which is the enhanced version of Magnify.
# Magnify
[![Travis](https://img.shields.io/travis/nzbin/magnify.svg)](https://travis-ci.org/nzbin/magnify)
[![npm](https://img.shields.io/npm/v/jquery.magnify.svg)](https://www.npmjs.com/package/jquery.magnify)
[![Bower](https://img.shields.io/bower/v/jquery.magnify)](https://github.com/nzbin/magnify)
[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/nzbin/magnify/blob/master/LICENSE)
[![Financial Contributors on Open Collective](https://opencollective.com/magnify/all/badge.svg?label=financial+contributors)](https://opencollective.com/magnify)Magnify is a jQuery plugin to view images just like in windows.
[[ website ]](https://nzbin.github.io/magnify/)
## Features
- Modal draggable
- Modal resizable
- Modal maximizable
- Image movable
- Image zoomable
- Image rotatable
- Keyboard control
- Fullscreen showing
- Multiple instances
- Browser support IE7+
- RTL support## Installation
You can install the plugin via npm
```sh
$ npm install jquery.magnify --save
```or via bower
```sh
$ bower install jquery.magnify --save
```## Usage
### 1.Include files
The usage of magnify is very simple.
```html
```
The icons in magnify use svg default, you can customize them in options.
### 2.Html structure
The default structure as below:
or
```html
```All structures above have optional attributes as below:
- Add a `data-src` attribute to link big image if you do not want to use a ` ` tag. If you use it in a `` tag, it will override the image link in `href` attribute.
- Add a `data-caption` attribute 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 the `title` option `true`.
- Add a `data-group` attribute 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:
```js
$("[data-magnify=gallery]").magnify();
```## Options
- **draggable** `true`
> If ture, it allow modal dragging.
- **resizable** `true`
> If ture, it allow modal resizing.
- **movable** `true`
> If ture, it allow image moving.
- **keyboard** `true`> If 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** `true`
> If ture, it will show image title on header.
- **fixedModalSize** `false`
> If false, the modal init size will fit to image size.
>
> If true, the modal init size will be set with `modalWidth` and `modalHeight`.- **modalWidth** `320`
> The modal min width.
- **modalHeight** `320`
> The modal min height.
- **gapThreshold** `0.02`
> There will have a gap if modal too big to beyond the browser.
- **ratioThreshold** `0.01`
> Image 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`
- **headerToolbar** `['maximize','close']`
> The buttons display in header toolbar.
- **footerToolbar** `['zoomIn','zoomOut','prev','fullscreen','next','actualSize','rotateRight']`
> The buttons display in footer toolbar.
- **fixedContent** `true`
> If 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** `false`
> If 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** `true`
> If true, it allow multiple instances.
- **initEvent** `click`
> The event to init plugin. Another value is `dblclick`.
- **initAnimation** `true`
> If false, it will not have animation at plugin's init.
- **fixedModalPos** `false`
> if true, the modal position will be fixed when change images.
- **zIndex** `1090`
> The modal style of z-index, it is useful with multiple instances.
- **dragHandle** ` `
> The handle of draggable.
- **progressiveLoading** `true`
> If true, the image will be rendered progressively.
- **customButtons** `{}`
```js
$("[data-magnify=gallery]").magnify({
footerToolbar: [..."myCustomButton"],
customButtons: {
myCustomButton: {
text: "custom!",
title: "custom!",
click: function (context, e) {
alert("clicked the custom button!");
},
},
},
});
```Each `customButton` entry accepts the following properties:
- `text` - the text to be display on the button itself.
- `title` - the title to be display when hover the button.
- `click` - a callback function that is called when the button is clicked.
## Events
You can define callbacks in `callbacks` option. In each callback you can get the `Magnify` instance with `this` or `context`.
```js
$("[data-magnify=gallery]").magnify({
callbacks: {
beforeOpen: function (context) {
// Will fire before modal is opened
},
opened: function (context) {
// Will fire after modal is opened
},
beforeClose: function (context) {
// Will fire before modal is closed
},
closed: function (context) {
// Will fire after modal is closed
},
beforeChange: function (context, index) {
// Will fire before image is changed
// The argument index is the current image index of image group
},
changed: function (context, index) {
// Will fire after image is changed
// The argument index is the next image index of image group
},
},
});
```## Contributors
### Code Contributors
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
### Financial Contributors
Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/magnify/contribute)]
#### Individuals
#### Organizations
Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/magnify/contribute)]
## License
MIT License
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.