本文实例为大家分享了vue iview多张图片大图预览,可缩放翻转,供大家参考,具体内容如下
先看效果:
完整项目代码地址
具体代码如下:
<style lang="less"> @import "../advanced-router.less"; </style> <template> <div class="balance-accounts"> <Row class-name="detail-row"> <Card> <p slot="title"> 回单照片 </p> <div class="demo-upload-list" v-for="(item,index) in opPicsList" :key="index"> <img :src="/UploadFiles/2021-04-02/item.url">可以看到,这个图片大图预览是用js创建的,而且是在main元素下添加的元素。因为这个是在ivew-admin框架下写的,其主要内容区的z-index是比菜单和header小的,所以如果在内容去写这个图片全局预览阴影区域无法覆盖整个页面。所以需要在main下加入元素。
组件方式:
<template> <div> </div> </template> <script> import iconLeft from "@/images/icon-left.png"; import iconRight from "@/images/icon-right.png"; import iconClose from "@/images/icon-close.png"; import iconRotate from "@/images/icon-rotate.png"; import iconNoImages from "@/images/icon-no-images.png"; import {IMAGE_URL_PREFIX} from "@/config/constant"; export default { data() { return { opPicsList: [ { name: "none", url: iconNoImages } ], imgName: "", bigImage: null, currentImageName: "", currentRotate: 0 }; }, props: { }, methods: { loadImages(opPics) { this.opPicsList.splice(0, this.opPicsList.length); opPics.split(",").forEach((element, index) => { this.opPicsList.push({ name: index, url: IMAGE_URL_PREFIX + element }); }); this.handleView("0"); }, rollImg() { /* 获取当前页面的缩放比 若未设置zoom缩放比,则为默认100%,即1,原图大小 */ var zoom = parseInt(this.bigImage.style.zoom) || 100; /* event.wheelDelta 获取滚轮滚动值并将滚动值叠加给缩放比zoom wheelDelta统一为±120,其中正数表示为向上滚动,负数表示向下滚动 */ zoom += event.wheelDelta / 12; /* 如果缩放比大于0,则将缩放比加载到页面元素 */ if (zoom >= 100) { this.bigImage.style.zoom = zoom + "%"; } /* 如果缩放比不大于0,则返回false,不执行操作 */ return false; }, handleView(name) { if (this.opPicsList[0].name == "none") { this.$Message.error("没有图片哦~"); return; } this.currentImageName = name; let elementArr = document.getElementsByClassName("showBigImage"); if (elementArr.length == 0) { this.createShowImage(); } for (let y = 0; y < this.opPicsList.length; y++) { if (name == this.opPicsList[y].name) { document.getElementById("bigImageE").src = this.opPicsList[y].url; // debugger // document.getElementById("bigImageE").width = this.opPicsList[y].url; // document.getElementById("bigImageE").height = this.opPicsList[y].url; // for (let i = 0; i < elementArr.length; i++) { // elementArr[i].style.display = "block"; // } break; } } }, closeImageShow() { let elementArr = document.getElementsByClassName("showBigImage"); let main = document.getElementsByClassName("main"); let count = elementArr.length; for (let i = 0; i < count; i++) { main[0].removeChild(elementArr[0]); } }, rotateImage() { let imageE = document.getElementById("bigImageE"); this.currentRotate = (this.currentRotate + 90) % 360; imageE.style.transform = imageE.style.transform.split(" ")[0] + " rotate(" + this.currentRotate + "deg)"; }, toLeftImage() { for (let y = 0; y < this.opPicsList.length; y++) { if (this.currentImageName == this.opPicsList[y].name) { if (y - 1 < 0) { this.$Message.info("已经是最左边的一张图了哦~"); } else { this.currentImageName = this.opPicsList[y - 1].name; let imageE = document.getElementById("bigImageE"); imageE.src = this.opPicsList[y - 1].url; // 加载完成执行 imageE.onload = function() { if (imageE.naturalHeight < window.innerHeight) { //图片高度小于屏幕则需要垂直居中处理 imageE.style.height = imageE.naturalHeight + "px"; imageE.style.top = "50%"; imageE.style.position = "relative"; imageE.style.transform = "translateY(-50%)"; imageE.style.zoom = "100%"; } else { //需要去除前一张图片的效果 imageE.style.height = window.innerHeight + "px"; imageE.style.top = "0"; imageE.style.position = "relative"; imageE.style.transform = "translateY(0%)"; imageE.style.zoom = "100%"; } }; } break; } } }, toRightImage() { for (let y = 0; y < this.opPicsList.length; y++) { if (this.currentImageName == this.opPicsList[y].name) { if (y + 1 == this.opPicsList.length) { this.$Message.info("已经是最右边的一张图了哦~"); } else { this.currentImageName = this.opPicsList[y + 1].name; let imageE = document.getElementById("bigImageE"); imageE.src = this.opPicsList[y + 1].url; // 加载完成执行 imageE.onload = function() { if (imageE.naturalHeight < window.innerHeight) { //图片高度小于屏幕则需要垂直居中处理 imageE.style.height = imageE.naturalHeight + "px"; imageE.style.top = "50%"; imageE.style.position = "relative"; imageE.style.transform = "translateY(-50%)"; imageE.style.zoom = "100%"; } else { //需要去除前一张图片的效果 imageE.style.height = window.innerHeight + "px"; imageE.style.top = "0"; imageE.style.position = "relative"; imageE.style.transform = "translateY(0%)"; imageE.style.zoom = "100%"; } }; } break; } } }, createShowImage() { //创建图片显示 // let elementArr = document.getElementsByClassName("showBigImage"); // if (elementArr.length == 0) { let main = document.getElementsByClassName("main"); let topContainer = document.createElement("div"); let scrollContainer = document.createElement("div"); topContainer.style.position = "fixed"; topContainer.style.zIndex = "80"; topContainer.style.background = "rgba(0,0,0,0.80)"; topContainer.style.height = "100%"; topContainer.style.width = "100%"; topContainer.style.textAlign = "center"; topContainer.className = "showBigImage"; // topContainer.style.display = "none"; let imageContainer = document.createElement("div"); imageContainer.style.width = window.innerWidth + "px"; imageContainer.style.height = window.innerHeight + "px"; imageContainer.style.margin = "0 auto"; imageContainer.style.overflow = "auto"; imageContainer.style.top = "50%"; imageContainer.style.position = "relative"; imageContainer.style.transform = "translateY(-50%)"; let imageE = document.createElement("img"); imageE.src = iconNoImages; imageE.title = "鼠标滚轮滚动可缩放图片"; imageE.id = "bigImageE"; // 加载完成执行 imageE.onload = function() { if (imageE.naturalHeight < window.innerHeight) { //图片高度小于屏幕则需要垂直居中处理 // imageE.style.width = "100%"; imageE.style.top = "50%"; imageE.style.position = "relative"; imageE.style.transform = "translateY(-50%)"; } else { imageE.style.height = window.innerHeight + "px"; } }; // imageE.style.width = "100%"; // imageE.style.width = "475px"; // imageE.style.height = window.innerHeight + 'px'; // imageE.style.objectFit= "scale-down"; // imageE.style.height = "100%"; // imageE.style.top = "50%"; // imageE.style.position = "relative"; // imageE.style.transform = "translateY(-50%)"; this.bigImage = imageE; //添加鼠标滚轮事件缩放图片 if (imageE.addEventListener) { // IE9, Chrome, Safari, Opera imageE.addEventListener("mousewheel", this.rollImg, false); // Firefox imageE.addEventListener("DOMMouseScroll", this.rollImg, false); } else { // IE 6/7/8 imageE.attachEvent("onmousewheel", this.rollImg); } imageContainer.appendChild(imageE); topContainer.appendChild(imageContainer); main[0].appendChild(topContainer); //创建点击左右浏览按钮 //左按钮 let imgLeft = document.createElement("img"); imgLeft.src = iconLeft; imgLeft.style.zIndex = "101"; imgLeft.style.position = "fixed"; imgLeft.style.top = "50%"; imgLeft.style.transform = "translateY(-50%)"; imgLeft.style.left = "12%"; imgLeft.style.cursor = "pointer"; imgLeft.className = "showBigImage"; //添加鼠标点击事件切换图片 imgLeft.addEventListener("click", this.toLeftImage); //右按钮 let imgRight = document.createElement("img"); imgRight.src = iconRight; imgRight.style.zIndex = "101"; imgRight.style.position = "fixed"; imgRight.style.top = "50%"; imgRight.style.transform = "translateY(-50%)"; imgRight.style.right = "12%"; imgRight.style.cursor = "pointer"; imgRight.className = "showBigImage"; //添加鼠标点击事件切换图片 imgRight.addEventListener("click", this.toRightImage); //大图片选转 let imgRotate = document.createElement("img"); imgRotate.id = "rotateImageBtn"; imgRotate.src = iconRotate; imgRotate.style.zIndex = "102"; imgRotate.style.position = "fixed"; imgRotate.style.top = "5%"; imgRotate.style.right = "5%"; imgRotate.style.transform = "translateY(-50%)"; imgRotate.style.cursor = "pointer"; imgRotate.className = "showBigImage"; //添加鼠标点击事件旋转大图 imgRotate.addEventListener("click", this.rotateImage); //关闭按钮 let imgClose = document.createElement("img"); imgClose.src = iconClose; imgClose.style.zIndex = "101"; imgClose.style.position = "fixed"; imgClose.style.top = "5%"; imgClose.style.right = "1%"; imgClose.style.transform = "translateY(-50%)"; imgClose.style.cursor = "pointer"; imgClose.className = "showBigImage"; //添加鼠标点击事件关闭显示大图 imgClose.addEventListener("click", this.closeImageShow); // imgLeft.style.display = "none"; // imgRight.style.display = "none"; // imgClose.style.display = "none"; main[0].appendChild(imgLeft); main[0].appendChild(imgRight); main[0].appendChild(imgClose); main[0].appendChild(imgRotate); // main[0].style.textAlign = "center"; // this.imgName = name; // this.visible = true; // } } }, mounted() { // this.loadImages(); } }; </script>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月26日
2024年11月26日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]