MagnifierJS
MagnifierJS là thư viện Javscript cho phép tạo Glass Effect cho ảnh. Các chức năng chính của MagnifierJS: Zoom in, zoom out ảnh khi hover. Cài đặt các option sử dụng javascript function hoặc html data-attribute. Tạo hiệu ứng cho nhiều ảnh chỉ với 1 lần gọi hàm. Ảnh được zoom ...
-
MagnifierJS là thư viện Javscript cho phép tạo Glass Effect cho ảnh.
-
Các chức năng chính của MagnifierJS:
- Zoom in, zoom out ảnh khi hover.
- Cài đặt các option sử dụng javascript function hoặc html data-attribute.
- Tạo hiệu ứng cho nhiều ảnh chỉ với 1 lần gọi hàm.
- Ảnh được zoom có thể được thể hiện bên trong bức ảnh đó hoặc bên ngoài bức ảnh (bên trong 1 wrapper khác).
- Tạo các event ứng với các thao tác với ảnh.
- Hiển thị text khi ảnh đang được load và hiển thị Glass Effect sau khi ảnh được load xong.
-
Magnifier được sử dụng kèm với EventJS.
a. HTML:
-
Để sử dụng MagnifierJS ta cần thêm file event.js, magnifier.css và magnifier.js vào file html.
-
Để sử dụng MagnifierJS, ta cần tạo html có cấu trúc như sau:
- Tạo element class .magnifier-thumb-wrapper chứa <img>, <img> này chính là ảnh cần tạo hiệu ứng.
<span class="magnifier-thumb-wrapper"> <img id="js-thumb" src="images/original_image.png"> </span>
- Tạo element class .magnifier-preview, đây là element chứa hình preview khi zoom ảnh.
<div class="magnifier-preview" id="js-preview"> </div>
- Tạo element class .magnifier-thumb-wrapper chứa <img>, <img> này chính là ảnh cần tạo hiệu ứng.
b. Sử dụng JS function():
- Sau khi đã tạo html, ta thực hiện các bước sau:
- Tạo Event object.
var event = new Event();
- Tạo Magnifier với Event object vừa được tạo.
var magnifier = new Magnifier(event);
- Sử dụng Magnifier object vừa được tạo, gọi function attach() và truyền các option cần thiết.
magnifier.attach({ thumb: '#js-thumb', large: 'images/large_image.jpg', largeWrapper: 'js-large-wrapper' });
- Tạo Event object.
c. Sử dụng HTML data-attribute:
-
Các option trong function attach() có thể thay thế bằng các html data-attribute tương ứng và viết lại như sau.
-
HTML:
<span class="magnifier-thumb-wrapper"> <img id="js-thumb" src="images/original_image.jpg" data-large-img-url="images/large_image.jpg" data-large-img-wrapper="js-large-wrappe"> </span> <div class="magnifier-preview" id="js-large-wrapper"> </div>
-
JS:
var event = new Event(); var magnifier = new Magnifier(event); magnifier.attach({ thumb: '#js-thumb' });
c. Các option của function attach():
- Các option của function attach():
Property | Data attribute | Type | Description | Required | Default |
---|---|---|---|---|---|
thumb | string | ID hoặc class của image, bắt đầu với . hoặc # | yes | ||
large | data-large-img-url | string | URL của preview image, thường lớn hơn thump image | yes | |
largeWrapper | data-large-img-wrapper | string | ID của the element mà large image được chứa bên trong nó | yes (nếu mode là outside) | |
zoom | data-zoom | int | zoom level, zoom mang giá trị bao nhiêu thì class .magnifier-lens có kích thước (awidth, height) nhỏ hơn bấy nhiêu lần so với ảnh gốc | no | 2 |
mode | data-mode | string | inside hoặc outside, quy định hình preview được show bên trong hay bên ngoài class .magnifier-lens | no | outside |
zoomable | data-zoomable | bool | Enable hoặc disable chức năng zoom khi lăn chuột | no | false |
onthumbenter | callback | function được gọi khi di chuyển chuột vào trong image | no | ||
onthumbmove | callback | function được gọi khi di chuyển chuột bên trong image | no | ||
onthumbleave | callback | function được gọi khi di chuyển chuột ra ngoài image | no | ||
onzoom | callback | function được gọi thực hiện zoom | no |
d. Các callback():
-
Các callback() nhận 1 tham số được cũng có thể được truyền vào function attach() như 1 option.
-
Tùy vào loại callback() được gọi mà tham số truyền vào có thể truy cập các thuộc tính khác nhau
-
Các thuộc tính thumb, lens, large, x, y cho tất cả các callback().
-
Các thuộc tính zoom, w, h cho onzoom().
var event = new Event(); var magnifier = new Magnifier(event); magnifier.attach({ thumb: '#js-thumb-options', large: 'images/large_image.jpg', largeWrapper: 'js-large-wrapper-options', zoomable: true, onthumbenter: function(event) { console.log(' onthumbenter ...'); }, onthumbmove: function(event) { console.log(' onthumbmove ...'); }, onthumbleave: function(event) { console.log(' onthumbleave ...'); }, onzoom: function(event) { console.log(' onzoom ...'); // all callback can access properties below console.log('thum: ', event.thumb); console.log('lens: ', event.lens); console.log('large: ', event.large); console.log('x: ', event.x); console.log('y: ', event.y); // only onzoom callback can access properties below console.log('zoom: ', event.zoom); console.log('w: ', event.w); console.log('h: ', event.h); } });
-
Các thuộc tính được truy cập trong callback():
Property Description thumb thumbnail DOM element lens lens DOM element large large image DOM element x tọa độ x của chuột y tọa độ y của chuột zoom zoom level w chiều rộng cùa lens h chiều cao của lens
-
Link tham khảo: https://github.com/mark-rolich/Magnifier.js
-
Source code demo: https://github.com/LeTanThanh/MagnifierJS