/*
|
* 预览图片 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 += '<div class="imgp_k"><img data-num="' + i + '"src="' + imgObjBox.children[i].firstElementChild.src + '" class="imgp"/></div>';
|
}
|
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();
|
}
|
}
|
|
}
|