/**
* showZoomImg
* @param domName image element
* @param model 'img'or 'text'
* @param clickEle click element
*/
function showZoomImg(domName, model, clickEle) {
var len = 0;
var domImg; //img dom
var arrPic = new Array();
var arrName = new Array(); //瀹氫箟涓€涓暟缁刵ame
var num = 0; //褰撳墠棰勮鐨�
var numNow = 1; //褰撳墠棰勮搴忓彿,鏈€灏忎负1
var leftPoint; //鍚戝乏绉诲姩鑼冨洿
var rightPoint; //鍙崇Щ鍔ㄨ寖鍥�
var spin_n = 0; //鏃嬭浆瑙掑害
var zoom_n = 1;//缂╂斁 鏀惧ぇ
showModel(model); //鍒ゆ柇鏄剧ず鏂瑰紡
function showModel(model) {
if (model == "img") { //鍥剧墖鐩存帴鏌ョ湅
$("body").on('click', clickEle, function () {
domImg = $(domName);
console.log(domImg);
len = domImg.length;
arrPic = [];
arrName = [];
for (var i = 0; i < len; i++) {
arrPic[i] = domImg.eq(i).attr("src"); //灏嗘墍鏈塱mg璺緞瀛樺偍鍒版暟缁勪腑
if (domImg.eq(i).attr("data-caption")) {
arrName[i] = domImg.eq(i).attr("data-caption");
} else {
arrName[i] = '图片' + (i + 1);
}
}
var img_index = Number($(this).attr('data-id')); //鑾峰彇鐐瑰嚮鐨勭储寮曞€�
num = img_index;
numNow = num + 1;
addMaskLater(); //娣诲姞寮瑰嚭dom
});
} else if (model == "text") {
$("body").on('click', domName, function () {
domImg = $(this).children('.zoomImg-hide-box').find('img');
len = domImg.length;
if (len < 1) {
layui.use('layer', function () {
var layer = layui.layer;
layer.msg('鏆傛湭涓婁紶璧勬枡鍥剧墖');
});
return;
}
num = 0;
numNow = 1;
arrPic = [];
arrName = [];
for (var i = 0; i < len; i++) {
arrPic[i] = domImg.eq(i).attr("src"); //灏嗘墍鏈塱mg璺緞瀛樺偍鍒版暟缁勪腑
if (domImg.eq(i).attr("data-caption")) {
arrName[i] = domImg.eq(i).attr("data-caption");
} else {
arrName[i] = '鍥剧墖' + (i + 1);
}
}
addMaskLater();
})
}
}
//缁檅ody娣诲姞寮瑰嚭灞傜殑html
function addMaskLater() {
var maskBg =
"
" +
"
" +
"
" +
"
" +
"
" +
"
" +
"
" +
"" +
"
" +
"
";
$("body").append(maskBg);
if (len > 1) {
showSmall(); //鍔犺浇缂╃暐鍥�
} else {
$(".img-pre").css('display', 'none');
$(".img-next").css('display', 'none');
}
showImg(); //鍥剧墖鍔犺浇
showCtrl(); //鎻掍欢鎿嶄綔
}
/*鍔犺浇鍥剧墖 鍙婂浘鐗囨搷浣�*/
function showImg() {
$(".mask-layer-imgbox").empty();
var imgCont = '' + arrName[num] + '
' +
'';
$(".mask-layer-imgbox").append(imgCont);
imgInit(); //鍥剧墖鎿嶄綔
}
/*鎻掍欢鎿嶄綔*/
function showCtrl() {
//涓婁竴寮�
$(".img-pre").on("click", function () {
num--;
if (num == -1) {
num = len - 1;
}
showImg();
showSmallThis(); //鏄剧ず褰撳墠閫変腑
});
//涓嬩竴寮�
$(".img-next").on("click", function () {
num++;
if (num == len) {
num = 0;
boxReset();
}
showImg();
showSmallThis(); //鏄剧ず褰撳墠閫変腑
});
/*鍏抽棴*/
$(".mask-layer-close").click(function () {
$(".mask-layer").remove();
});
/*缂╃暐鍥炬搷浣滄柟娉�*/
if (arrPic.length > 1) {
showSmallThis(); //鏄剧ず褰撳墠閫変腑
}
/*缂╃暐鍥惧綋鍓�*/
function showSmallThis() { //鏄剧ず褰撳墠閫変腑鐨勫皬鍥�
$('.mask-small-img').removeClass('onthis');
$($('.mask-small-img')[num]).addClass('onthis');
allowShow();
}
/*灏忓浘鐐瑰嚮鍒囨崲*/
$('.mask-small-img').on("click", function () {
num = $('.mask-small-img').index(this);
showImg();
showSmallThis(); //鏄剧ず褰撳墠閫変腑
});
/*box-go-left 鍐呭鍚戝彸绉诲姩*/
$('.box-go-left').on('click', function () {
boxGoRight();
});
$('.box-go-right').on('click', function () {
boxGoLeft();
});
function boxGoLeft(intTime) { //鍚戝乏绉诲姩
intTime ? intTime : intTime = 1;
if (leftPoint > 0) {
$('.small-img-box').animate({
left: '-=' + 630 * intTime
}, 500);
leftPoint = leftPoint - intTime;
rightPoint = rightPoint + intTime;
}
}
function boxGoRight() { //鍚戝彸绉诲姩
if (rightPoint > 0) {
$('.small-img-box').animate({
left: '+=630'
}, 500);
leftPoint++;
rightPoint--;
}
}
function allowShow() { //淇濇寔閫変腑鐨勫浘鐗囧湪瀹瑰櫒涓兘鐪嬪埌
/*璺熼殢鍒囨崲*/
var boxLeft = $('.small-content').offset().left; //鐩掑瓙璺濈椤堕儴
var thisLeft = $('.mask-small-img.onthis').offset().left; //褰撳墠閫変腑鍥剧墖璺濈椤堕儴
var intTime = Math.floor((thisLeft - boxLeft) / 630);
if (thisLeft - boxLeft >= 630) {
boxGoLeft(intTime);
} else if (thisLeft < boxLeft) {
boxGoRight();
} else {
//console.log('涓嶉渶绉诲姩')
}
}
/*澶嶄綅*/
function boxReset() {
$('.small-img-box').animate({
left: '0'
}, 500);
leftPoint = Math.ceil(arrPic.length / 5) - 1;
rightPoint = 0;
}
$(".clockwise").click(function () {
clockwise(); //椤烘椂閽堟棆杞�
});
$(".counterClockwise").click(function () {
counterClockwise(); //閫嗘椂閽堟棆杞�
})
/*椤烘椂閽堟棆杞�*/
function clockwise() {
spin_n += 90;
$(".mask-layer-imgbox img").css({
"transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-moz-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-ms-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-o-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-webkit-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")"
});
};
/*閫嗘椂閽堟棆杞�*/
function counterClockwise() {
spin_n -= 90;
$(".mask-layer-imgbox img").css({
"transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-moz-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-ms-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-o-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-webkit-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")"
});
}
rightMenu('.mask-layer-container');
function rightMenu(dom) {
// 榧犳爣鍙抽敭浜嬩欢
$(dom).contextmenu(function (e) {
// 鑾峰彇绐楀彛灏哄
var winWidth = $(document).width();
var winHeight = $(document).height();
// 榧犳爣鐐瑰嚮浣嶇疆鍧愭爣
var mouseX = e.clientX;
var mouseY = e.clientY;
// ul鏍囩鐨勫楂�
var menuWidth = $(".mask-layer .contextmenu").width();
var menuHeight = $(".mask-layer.contextmenu").height();
// 鏈€灏忚竟缂榤argin(鍏蜂綋绐楀彛杈圭紭鏈€灏忕殑璺濈)
var minEdgeMargin = 10;
// 浠ヤ笅鍒ゆ柇鐢ㄤ簬妫€娴媢l鏍囩鍑虹幇鐨勫湴鏂规槸鍚﹁秴鍑虹獥鍙h寖鍥�
// 绗竴绉嶆儏鍐碉細鍙充笅瑙掕秴鍑虹獥鍙�
if (mouseX + menuWidth + minEdgeMargin >= winWidth &&
mouseY + menuHeight + minEdgeMargin >= winHeight) {
menuLeft = mouseX - menuWidth - minEdgeMargin + "px";
menuTop = mouseY - menuHeight - minEdgeMargin + "px";
}
// 绗簩绉嶆儏鍐碉細鍙宠竟瓒呭嚭绐楀彛
else if (mouseX + menuWidth + minEdgeMargin >= winWidth) {
menuLeft = mouseX - menuWidth - minEdgeMargin + "px";
menuTop = mouseY + minEdgeMargin + "px";
}
// 绗笁绉嶆儏鍐碉細涓嬭竟瓒呭嚭绐楀彛
else if (mouseY + menuHeight + minEdgeMargin >= winHeight) {
menuLeft = mouseX + minEdgeMargin + "px";
menuTop = mouseY - menuHeight - minEdgeMargin + "px";
}
// 鍏朵粬鎯呭喌锛氭湭瓒呭嚭绐楀彛
else {
menuLeft = mouseX + minEdgeMargin + "px";
menuTop = mouseY + minEdgeMargin + "px";
};
// ul鑿滃崟鍑虹幇
$(".mask-layer .contextmenu").css({
"left": menuLeft,
"top": menuTop
}).show();
// 闃绘娴忚鍣ㄩ粯璁ょ殑鍙抽敭鑿滃崟浜嬩欢
return false;
});
// 鐐瑰嚮涔嬪悗锛屽彸閿彍鍗曢殣钘�
$(document).click(function () {
$(".contextmenu").hide();
});
}
}
/*鍥剧墖鎿嶄綔鏂规硶*/
function imgInit() {
zoom_n = 1;//閲嶇疆缂╂斁姣斾緥
/*鍥剧墖鎷栨嫿*/
var $div_img = $(".layer-img-box img");
//缁戝畾榧犳爣宸﹂敭鎸変綇浜嬩欢
$div_img.bind("mousedown", function (event) {
event.preventDefault && event.preventDefault(); //鍘绘帀鍥剧墖鎷栧姩鍝嶅簲
//鑾峰彇闇€瑕佹嫋鍔ㄨ妭鐐圭殑鍧愭爣
var offset_x = $(this)[0].offsetLeft; //x鍧愭爣
var offset_y = $(this)[0].offsetTop; //y鍧愭爣
//鑾峰彇褰撳墠榧犳爣鐨勫潗鏍�
var mouse_x = event.pageX;
var mouse_y = event.pageY;
//缁戝畾鎷栧姩浜嬩欢
//鐢变簬鎷栧姩鏃讹紝鍙兘榧犳爣浼氱Щ鍑哄厓绱狅紝鎵€浠ュ簲璇ヤ娇鐢ㄥ叏灞€锛坉ocument锛夊厓绱�
$(".layer-img-box").bind("mousemove", function (ev) {
// 璁$畻榧犳爣绉诲姩浜嗙殑浣嶇疆
var _x = ev.pageX - mouse_x;
var _y = ev.pageY - mouse_y;
//璁剧疆绉诲姩鍚庣殑鍏冪礌鍧愭爣
var now_x = (offset_x + _x) + "px";
var now_y = (offset_y + _y) + "px";
//鏀瑰彉鐩爣鍏冪礌鐨勪綅缃�
$div_img.css({
top: now_y,
left: now_x
});
});
$(".layer-img-box").bind("mouseup", function () {
$(".layer-img-box").unbind("mousemove");
});
});
$div_img.bind("mousewheel DOMMouseScroll", function (e) {
e = e || window.event;
var delta = e.originalEvent.wheelDelta || e.originalEvent.detail;
var dir = delta > 0 ? 'down' : 'up';
zoomImg(this, dir);
return false;
});
function zoomImg(o, delta) {
if (delta == 'up') {
zoom_n -= 0.2;
zoom_n = zoom_n <= 0.2 ? 0.2 : zoom_n;
} else {
zoom_n += 0.2;
}
$(".mask-layer-imgbox img").css({
"transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-moz-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-ms-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-o-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")",
"-webkit-transform": "translate(-50%, -50%) rotate(" + spin_n + "deg) scale(" + zoom_n + ")"
});
}
}
function showSmall() {
leftPoint = Math.ceil(arrPic.length / 6) - 1;
rightPoint = 0;
$(".mask-layer-imgbox").addClass('has-small');
var sDom = ""
$(".mask-layer-container").append(sDom);
for (var i = 0; i < arrPic.length; i++) {
$('.small-img-box').append('');
}
if (arrPic.length > 6) {
$(".small-img-box").width(Math.ceil(arrPic.length / 6) * 630);
$('.small-content').append('');
}
}
}