/*
* 预览图片 Object
* 2015-05-23 17:25
*
*/
import request from '@/router/axios';
export const ImagePreview = () => {
var that = this;
//用来存储图片数据
var IMGS = {
"num": 0,
"imgs": {}
};
var IMGP_BG = null;
var IMGP_P_BG = null;
var IMGSHOW_BG = null;
var IMGSHOW_BOX = null;
var IMGSHOW_NEXT = null;
var IMGSHOW_LAST = null;
var IMGSHOW_CLOSE = null;
var FullScreen = null;
var IMGSHOW_NOW = null;
var IMGP_BOX = null;
var IMGP_IMGS = null;
var IMGP_NEXT = null;
var IMGP_LAST = null;
var IMGP_HTML = "";
var nowNum = 0; //当前预览图片序号
var moveW = 0;
var isFullscreen = false;
_start();
//初始化获得图片数据
this.Image = function(imgObjBox) {
var len = imgObjBox.children.length;
IMGP_HTML = "";
for (var i = 0; i < len; i++) {
IMGS["imgs"][i] = { "src": '' }
IMGS["imgs"][i]["src"] = imgObjBox.children[i].firstElementChild.src;
IMGP_HTML += '
';
}
IMGS["num"] = len;
IMGP_IMGS.innerHTML = IMGP_HTML;
IMGP_IMGS.style.width = len * (100 + 7) + "px";
IMGSHOW_NOW.src = IMGS["imgs"][0]["src"]; //显示第一张图片
IMGP_IMGS.onclick = function(e) {
//获取data-num
var n = e.target.dataset.num; //ie不识别
if (n) {
nowNum = n;
that.show(nowNum);
}
}
}
IMGP_BG.onmousewheel = function(e) {
//存在兼容性
//console.log(e.wheelDelta+" "+e.detail);
return false;
}
//显示图片
this.show = function(n) {
nowNum = n;
IMGP_BG.style.display = "block";
IMGSHOW_NOW.src = IMGS["imgs"][n]["src"];
}
//预览下一张
IMGSHOW_NEXT.onclick = function() {
nowNum++;
if (nowNum > (IMGS["num"] - 1)) {
nowNum = 0;
}
that.show(nowNum);
}
//预览上一张
IMGSHOW_LAST.onclick = function() {
nowNum--;
if (nowNum < 0) {
nowNum = IMGS["num"] - 1;
}
that.show(nowNum);
}
//关闭预览
IMGSHOW_CLOSE.onclick = function() {
exitFullscreen();
isFullscreen = false;
document.body.style.overflow = "auto";
IMGP_BG.style.display = "none";
}
FullScreen.onclick = function() {
if (isFullscreen == false) {
//进入全屏
isFullscreen = true;
requestFullScreen();
FullScreen.className = "isFullScreen";
document.body.style.overflow = "hidden";
} else {
//退出全屏
isFullscreen = false;
exitFullscreen();
FullScreen.className = "notFullScreen";
document.body.style.overflow = "auto";
}
}
IMGP_NEXT.onclick = function() {
var w_bg = IMGP_BOX.offsetWidth;
var w = IMGP_IMGS.offsetWidth;
var L = -IMGP_IMGS.offsetLeft;
var wr = w - (L + w_bg);
var moveL = wr > w_bg ? w_bg : wr;
console.log(w_bg + " " + w + " " + L + " " + moveL + " " + wr);
if (wr == 0) {
IMGP_IMGS.style.left = 0 + "px";
} else {
IMGP_IMGS.style.left = -(L + moveL) + "px";
}
}
IMGP_LAST.onclick = function() {
var w_bg = IMGP_BOX.offsetWidth;
var w = IMGP_IMGS.offsetWidth;
var L = -IMGP_IMGS.offsetLeft;
var wl = L;
var moveL = wl > w_bg ? w_bg : wl;
console.log(w_bg + " " + w + " " + L + " " + moveL + " " + wl);
if (wl == 0) {
IMGP_IMGS.style.left = -(w - w_bg) + "px";
} else {
IMGP_IMGS.style.left = -(L - moveL) + "px";
}
}
function _start() {
//创建预览照片盒子
IMGP_BG = document.createElement("div");
IMGP_BG.id = "IMGP_BG";
document.body.appendChild(IMGP_BG);
//大图预览背景
IMGSHOW_BG = document.createElement("div");
IMGSHOW_BG.id = "IMGSHOW_BG";
IMGP_BG.appendChild(IMGSHOW_BG);
//大图预览盒子
IMGSHOW_BOX = document.createElement("div");
IMGSHOW_BOX.id = "IMGSHOW_BOX";
IMGSHOW_BG.appendChild(IMGSHOW_BOX);
//大图预览按钮下
IMGSHOW_NEXT = document.createElement("div");
IMGSHOW_NEXT.id = "IMGSHOW_NEXT";
IMGSHOW_BG.appendChild(IMGSHOW_NEXT);
//大图预览按钮上
IMGSHOW_LAST = document.createElement("div");
IMGSHOW_LAST.id = "IMGSHOW_LAST";
IMGSHOW_BG.appendChild(IMGSHOW_LAST);
//大图预览按钮关闭
IMGSHOW_CLOSE = document.createElement("div");
IMGSHOW_CLOSE.id = "IMGSHOW_CLOSE";
IMGSHOW_BG.appendChild(IMGSHOW_CLOSE);
//全屏控制按钮
FullScreen = document.createElement("div");
FullScreen.id = "FullScreen";
FullScreen.className = "notFullScreen";
IMGSHOW_BG.appendChild(FullScreen);
//正在预览
IMGSHOW_NOW = document.createElement("img");
IMGSHOW_NOW.id = "IMGSHOW_NOW";
IMGSHOW_BOX.appendChild(IMGSHOW_NOW);
//--------------------------------
//创建待预览图片背景
IMGP_P_BG = document.createElement("div");
IMGP_P_BG.id = "IMGP_P_BG";
IMGP_BG.appendChild(IMGP_P_BG);
//创建待预览图片盒子背景
IMGP_BOX = document.createElement("div");
IMGP_BOX.id = "IMGP_BOX";
IMGP_P_BG.appendChild(IMGP_BOX);
//创建待预览图片盒子
IMGP_IMGS = document.createElement("div");
IMGP_IMGS.id = "IMGP_IMGS";
IMGP_BOX.appendChild(IMGP_IMGS);
//创建待预览盒子按钮上
IMGP_LAST = document.createElement("div");
IMGP_LAST.id = "IMGP_LAST";
IMGP_P_BG.appendChild(IMGP_LAST);
//创建待预览盒子按钮下
IMGP_NEXT = document.createElement("div");
IMGP_NEXT.id = "IMGP_NEXT";
IMGP_P_BG.appendChild(IMGP_NEXT);
var bodyW = document.documentElement.clientHeight;
IMGSHOW_BG.style.height = (bodyW) / bodyW * 100 + "%";
IMGSHOW_BOX.style.lineHeight = (bodyW - 5) + "px";
IMGSHOW_NEXT.style.top = ((bodyW) - 400) / 2 + "px";
IMGSHOW_LAST.style.top = ((bodyW) - 400) / 2 + "px";
///IMGSHOW_NOW.src="./Uploads/3.0_banner.jpg"
}
window.onresize = function() {
var bodyW = document.documentElement.clientHeight;
IMGSHOW_BG.style.height = (bodyW) / bodyW * 100 + "%";
IMGSHOW_BOX.style.lineHeight = (bodyW - 5) + "px";
IMGSHOW_NEXT.style.top = ((bodyW) - 400) / 2 + "px";
IMGSHOW_LAST.style.top = ((bodyW) - 400) / 2 + "px";
}
function _setCss(obj, css) {
for (var v in css) {
obj.style[v] = css[v];
}
}
//进入全屏
function requestFullScreen() {
var de = document.documentElement;
if (de.requestFullscreen) {
de.requestFullscreen();
} else if (de.mozRequestFullScreen) {
de.mozRequestFullScreen();
} else if (de.webkitRequestFullScreen) {
de.webkitRequestFullScreen();
}
}
//退出全屏
function exitFullscreen() {
var de = document;
if (de.exitFullscreen) {
de.exitFullscreen();
} else if (de.mozCancelFullScreen) {
de.mozCancelFullScreen();
} else if (de.webkitCancelFullScreen) {
de.webkitCancelFullScreen();
}
}
}