');
_imgbox = $(imgbox_selector);
new_swiper();
imgbox_on();
}
function new_swiper() {
var selector = imgbox_selector + ' .swiper-imgbox';
var speed = ~~(($(window).width() + 1600) / 600);
var option = {};
// option['init'] = false;
option['mousewheel'] = {
speed: 10,
};
option['speed'] = speed * 100;
option['zoom'] = {
maxRatio: $(window).width() < 769 ? 3 : 2,
};
option['autoplay'] = {
disableOnInteraction: false,
};
option['grabCursor'] = true;
option['navigation'] = {
nextEl: selector + ' .swiper-button-next',
prevEl: selector + ' .swiper-button-prev',
};
option['keyboard'] = {
enabled: !0,
onlyInViewport: !1,
};
option['pagination'] = {
el: selector + ' .counter-con',
type: 'custom',
renderCustom: function (swiper, current, total) {
if (total > 1) {
return '' + current + '/' + total + '';
}
return '';
},
};
if (options.thumbs && options.group) {
new_thumbs_swiper();
option['thumbs'] = {
swiper: imgbox_thumbs_swiper,
autoScrollOffset: ~~(speed / 1.6),
};
}
Miniimgbox.swiper = imgbox_swiper = new Swiper(selector, option);
}
function new_thumbs_swiper() {
var selector = imgbox_selector + ' .swiper-thumbsbox';
var option = {};
// option['init'] = true;
option['watchSlidesVisibility'] = true; //防止不可点击
option['navigation'] = {
nextEl: selector + ' .swiper-button-next',
prevEl: selector + ' .swiper-button-prev',
};
option.slidesPerView = 'auto';
option.freeMode = true;
option.freeModeSticky = true;
Miniimgbox.thumbs_swiper = imgbox_thumbs_swiper = new Swiper(selector, option);
}
//绑定执行
function imgbox_on() {
//仅绑定一次
if (_imgbox.data('is_on')) return;
//下滑关闭
touch_close();
//关闭灯箱
_imgbox.on('click', '.img-close,.imgbox-bg,.imgbox-an .icon-close', close);
//切换thumb
_imgbox.on('click', '.imgbox-an .toggle-thumbs,.hide-but', function () {
_imgbox.toggleClass('show-thumb');
});
//下载图片
_imgbox.on('click', '.imgbox-an .img-down', function () {
var _this = $(this);
var img = _imgbox.find('.swiper-imgbox .swiper-slide-active img');
var src = img.attr('data-src') || img.attr('src');
var down_name = src.substring(src.lastIndexOf('/') + 1) || src;
_this.attr('href', src).attr('download', down_name);
});
//播放图片
_imgbox.on('click', '.imgbox-an .toggle-palay', function () {
var _this = $(this);
_this.hasClass('is-play') ? imgbox_swiper.autoplay.stop() : imgbox_swiper.autoplay.start();
_this.toggleClass('is-play');
});
//按钮切换放大缩小
_imgbox.on('click', '.imgbox-an .toggle-zoom', function () {
var _this = $(this);
imgbox_swiper.zoom.toggle();
_this.toggleClass('is-zoom');
});
//切换全屏
_imgbox.on('click', '.imgbox-an .toggle-full', function () {
if (!document.fullscreenElement) {
//进入页面全屏
full_in();
} else {
full_out();
}
});
_imgbox.data('is_on', true);
}
//全屏
function full_in() {
var docElm = document.documentElement;
if (docElm.requestFullscreen) {
docElm.requestFullscreen();
} else if (docElm.msRequestFullscreen) {
docElm.msRequestFullscreen();
} else if (docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen();
} else if (docElm.webkitRequestFullScreen) {
docElm.webkitRequestFullScreen();
}
$(imgbox_selector + ' .imgbox-an .toggle-full .fa')
.removeClass('fa-expand')
.addClass('fa-compress');
$(imgbox_selector + '.show').addClass('full-screen'); //全屏
}
//退出全屏
function full_out() {
if (document.fullscreenElement) {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
}
$(imgbox_selector + ' .imgbox-an .toggle-full .fa')
.removeClass('fa-compress')
.addClass('fa-expand');
_imgbox.removeClass('full-screen'); //全屏
}
//链接处理
function link_replace(link) {
return link.indexOf('base64,') == -1 && link.length < 300 ? link.replace(/(.*\/)(.*)(-\d+x\d+\.)(.*)/g, '$1$2.$4').replace(/\??x-oss-process(.*)/, '') : link;
}
//定位show_style
function show_style(_this) {
var offset = _this.offset();
var offset_top = offset.top;
var offset_left = offset.left;
var scrollTop = $(document).scrollTop();
var height = _this.height();
var width = _this.width();
var s_top = offset_top - scrollTop + height / 2;
var s_left = offset_left + width / 2;
_imgbox.attr('style', '--imgbox-origin-top:' + s_top + 'px;--imgbox-origin-left:' + s_left + 'px;');
}
function thumb_open() {
var _thumb_btn = $(imgbox_selector + ' .imgbox-an .toggle-thumbs,.hide-but');
if (options.thumbs && _thumb_btn.length) {
if (imgbox_swiper.slides.length > 1) {
_thumb_btn.show();
} else {
_imgbox.removeClass('show-thumb');
_thumb_btn.hide();
}
}
}
function checkScrollbar() {
var fullWindowWidth = window.innerWidth;
if (!fullWindowWidth) {
// 兼容IE8
var documentElementRect = document.documentElement.getBoundingClientRect();
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
}
return document.body.clientWidth < fullWindowWidth;
}
function measureScrollbar() {
var scrollbarWidthData = _body.data('scrollbar-width');
if (scrollbarWidthData !== undefined) {
return scrollbarWidthData;
}
// thx walsh
var scrollDiv = document.createElement('div');
scrollDiv.className = 'modal-scrollbar-measure';
_body.append(scrollDiv);
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
_body[0].removeChild(scrollDiv);
_body.data('scrollbar-width', scrollbarWidth);
return scrollbarWidth;
}
function setScrollbar() {
var bodyPad = parseInt(_body.css('padding-right') || 0, 10);
var scrollbarWidth = measureScrollbar();
if (checkScrollbar()) {
_body.css('padding-right', bodyPad + scrollbarWidth);
_fixed.each(function (index, element) {
var actualPadding = element.style.paddingRight;
var calculatedPadding = $(element).css('padding-right');
$(element)
.data('padding-right', actualPadding)
.css('transition', 'none')
.css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px');
});
}
}
//显示
function show(_this) {
setScrollbar();
_body.addClass('imgbox-show');
//$(".modal").modal("hide");
show_style(_this);
_imgbox.addClass('show').removeClass('hide');
}
function close() {
_body.removeClass('imgbox-show').css('padding-right', '');
//等待动画结束,延迟
_fixed.css('padding-right', '');
setTimeout(function () {
_fixed.css('transition', '');
}, 10);
_imgbox.addClass('hideing').removeClass('show');
full_out(); //退出全屏
setTimeout(function () {
_imgbox.removeClass('hideing').addClass('hide').attr('style', '');
$('.toggle-palay.is-play').removeClass('is-play'); //停止播放
try {
imgbox_swiper.zoom.out(); //恢复放大缩小
imgbox_swiper.autoplay.stop(); //停止播放
} catch (e) {
console.log(e);
}
//恢复下滑关闭
$(imgbox_selector + ' .swiper-close').css({
opacity: '',
transform: '',
});
}, 300);
}
//滑动关闭
function touch_close() {
_imgbox.on('touchmove pointermove MSPointerMove', function (e) {
e.preventDefault ? e.preventDefault() : (e.returnValue = !1);
});
_imgbox.minitouch({
direction: 'bottom',
selector: '.swiper-close',
depreciation: 100,
onStart: false,
stop: function (_e, _this) {
var scale = _this
.find('img')
.css('transform')
.replace(/[^0-9\-,]/g, '')
.split(',')[0];
return scale && scale > 1;
},
onIng: function (_e, _this, distanceX, distanceY) {
var set_opacity = (150 - distanceY) / 80;
set_opacity = set_opacity < 1 && set_opacity > 0.2 && set_opacity;
_this.css('opacity', set_opacity);
},
inEnd: function (_e, _this) {
_this.css({
opacity: '',
});
},
onEnd: function (_e, _this) {
_imgbox.attr('style', '--imgbox-origin-top:' + t_h + 'px;--imgbox-origin-left:conter;');
var t_h = _this.height();
_this.css({
transform: 'translate3D(0px, ' + t_h + 'px, 0px)',
transition: '.2s linear',
opacity: 0,
});
// close();
setTimeout(close, 150);
},
});
}
function get_slide(each_this) {
var thumbs_src = each_this.attr('src') || each_this.attr('box-img');
var data_src = each_this.attr('data-src');
if (!thumbs_src && !data_src) return '';
var full_src = each_this.attr('data-full-url') || link_replace(data_src || thumbs_src);
var main_img = '';
var main_img_html = '
' + main_img + '
';
return main_img_html;
}
function get_thumbs(each_this) {
var thumbs_src_b = each_this.attr('data-src') || each_this.attr('src');
if (!thumbs_src_b) return '';
var thumbs_img = '';
var thumbs_img_html = '