MagnifierJS
Bài đăng này đã không được cập nhật trong 6 năm
1. Giới thiệu 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 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.
2. Cài đặt và sử dụng:
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
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ớiEvent
object vừa được tạo.var magnifier = new Magnifier(event);
- Sử dụng
Magnifier
object vừa được tạo, gọi functionattach()
và truyền cácoption
cần thiết.magnifier.attach({ thumb: '#js-thumb', large: 'images/large_image.jpg', largeWrapper: 'js-large-wrapper' });
- Tạo
c. Sử dụng HTML data-attribute:
-
Các
option
trong functionattach()
có thể thay thế bằng các htmldata-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 functionattach()
:
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 (width, 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 functionattach()
như 1option
. -
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áccallback()
. -
Các thuộc tính
zoom
,w
,h
choonzoom()
.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('\n onthumbenter ...'); }, onthumbmove: function(event) { console.log('\n onthumbmove ...'); }, onthumbleave: function(event) { console.log('\n onthumbleave ...'); }, onzoom: function(event) { console.log('\n 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
3. Tham khảo:
-
Link tham khảo: https://github.com/mark-rolich/Magnifier.js
-
Source code demo: https://github.com/LeTanThanh/MagnifierJS
All rights reserved