/* * 预览图片 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(); } } }