最近由于公司项目需要图片查看器,网上搜了一圈,感觉资料很少,所以决定基于百度的touch.js手势库+zepto.js自己写了一个小插件,实现了左右滑动,双指缩放,双击缩放功能,基本使用还行,但是有时候还是不太顺畅,后续会慢慢完善;写的不好的地方望各位能够给出好的建议,谢谢!
源码地址:https://github.com/GLwen/molong_photoSwipe.git
演示:http://runjs.cn/detail/iceaaogh
molong.css
*{padding:0;margin: 0;list-style: none;} .syswin-swipe-show{display: block;} .syswin-swipe-hide{display: none;} /***大图****/ .molong-swiper{ position: fixed; top:0; left: 0; border: 1px solid #777e8c; overflow: hidden; z-index: 999; } .molong-swiper-item{ float: left; overflow: scroll; background: #333333; text-align: center; } .molong-swiper-item .img-div{ background-size: contain; background-position: center; background-repeat: no-repeat; } .molong-img-list { list-style: none; padding: 0; margin: 0;} .molong-img-list li { float: left; position: relative;margin-right: 10px;} .molong-img-list li .img-bg { display: block; width: 100%; height: 100%;border: none;background-size:cover;background-position: center;background-repeat: no-repeat;}
molong.js
var molong=molong"<div class=\"molong-swiper syswin-swipe-hide\">"+ "<ul id=\"bigImg\"></ul>"+ "</div>"; $("body").append(bigContainerString); var swipeSelf=this; var screenHeight=window.innerHeight; var screenWidth=window.innerWidth; var minImageWidth=screenWidth*0.25;//显示小图的宽高 var bigIndex=0; //大图索引 var bigImgOffset=0; //大图滑动的位置 var bigImgLength=0; //大图数量 //缩放设置 var initialScale = 1; //初始缩放比例 var currentScale=1; //当前缩放比例 var pinchSelf; //当前缩放比例的对象 var dragSelf; //当前拖拽的对象 //解析参数 swipeSelf.options=$.extend({ listContainer:$("ul"), swipeRigth:true, swipeLeft:true, pinch:true },options); //容器 swipeSelf.listContainer=options.listContainer; //小图容器 swipeSelf.swipeContainer=$("#bigImg"); //大图容器 //阻止touchstart默认事件 touch.on(this.swipeContainer, 'touchstart', function(ev){ ev.preventDefault(); }); swipeSelf.swipeContainer.css("-webkit-transition","all ease 0.3s");//设置动画事件 //显示大图 swipeSelf.showBigImg=function(){ var imgs=swipeSelf.listContainer.find("li"); var bigImgsUrl=[]; var bigImgString=""; bigImgLength=imgs.length; bigImgOffset=-screenWidth*bigIndex; for(var i=0;i<bigImgLength;i++){ var bigImgUrl=$(imgs[i]).attr("big-url"); bigImgsUrl.push(bigImgUrl); bigImgString+='<li class="molong-swiper-item"><div class="img-div" style="background-image: url('+bigImgUrl+')"></div></li>'; } swipeSelf.swipeContainer.html(bigImgString); swipeSelf.swipeContainer.height(screenHeight); swipeSelf.swipeContainer.width(screenWidth*bigImgLength); $(".molong-swiper-item").height(screenHeight); $(".molong-swiper-item").width(screenWidth); $(".img-div").height(screenHeight); $(".img-div").width(screenWidth); swipeSelf.swipeContainer.css("-webkit-transform","translate3d("+bigImgOffset+"px,0,0)"); $(".molong-swiper").show(); //添加事件监听,监听查看大图 if(swipeSelf.listenShow){ swipeSelf.listenShow(); } } //隐藏大图 swipeSelf.hideBigImg=function() { $(".molong-swiper").hide(); swipeSelf.swipeContainer.html(""); if(swipeSelf.listenHide){ swipeSelf.listenHide(); } } //右滑动 swipeSelf.swipeRight=function(){ touch.on(swipeSelf.swipeContainer, 'swiperight',"li", function(ev){ console.log("swiperight"); if(swipeSelf.options.swipeRigth){ //$(".img-div").css("-webkit-transform","translate3d(0px, 0px, 0px)");//元素移动复位 swipeSelf.dx=0; swipeSelf.dy=0; console.log("向右滑动."); if(pinchSelf){ pinchSelf.style.webkitTransform = 'scale(1)'; currentScale=1; } bigImgOffset+=screenWidth; bigImgOffset=bigImgOffset>=0"-webkit-transition","all ease 0.5s");//设置动画事件 swipeSelf.swipeContainer.css("-webkit-transform","translate3d("+bigImgOffset+"px,0,0)"); } }); } //左滑动 swipeSelf.swipeLeft=function(){ touch.on(swipeSelf.swipeContainer, 'swipeleft','li', function(ev){ console.log("swipeleft"); if(swipeSelf.options.swipeLeft){ console.log("向左滑动."); // $(".img-div").css("-webkit-transform","translate3d(0px, 0px, 0px)");//元素移动复位 swipeSelf.dx=0; swipeSelf.dy=0; if(pinchSelf){ pinchSelf.style.webkitTransform = 'scale(1)'; currentScale=1; } bigImgOffset-=screenWidth; bigImgOffset=Math.abs(bigImgOffset)>=(screenWidth*bigImgLength)"-webkit-transition","all ease 0.5s");//设置动画事件 swipeSelf.swipeContainer.css("-webkit-transform","translate3d("+bigImgOffset+"px,0,0)"); } }); } //缩放 swipeSelf.pinche=function(){ touch.on(swipeSelf.swipeContainer, 'pinchend',".img-div", function(ev){ console.log("pinchend"); if(swipeSelf.options.pinch){ pinchSelf=this; currentScale = ev.scale - 1; currentScale = initialScale + currentScale; currentScale = currentScale > 2 "-webkit-transition","all ease 0.1s");//设置动画事件 this.style.webkitTransform = 'scale(' + currentScale + ')'; console.log("当前缩放比例为:" + currentScale + "."); } }); } //双击放大缩小 swipeSelf.doubletap=function(){ touch.on(swipeSelf.swipeContainer, 'doubletap','.img-div', function(ev){ //console.log(ev.type); pinchSelf=this; currentScale=currentScale>1"-webkit-transition","all ease 0.1s");//设置动画事件 this.style.webkitTransform = 'scale(' + currentScale + ')'; }else{ currentScale=1; swipeSelf.swipeContainer.css("-webkit-transition","all ease 0.1s");//设置动画事件 this.style.webkitTransform = 'scale(' + currentScale + ')'; } }); } //拖拽 swipeSelf.dx=0; swipeSelf.dy=0; swipeSelf.drag=function(){ touch.on(swipeSelf.swipeContainer, 'drag','.img-div', function(ev){ if(currentScale>1){ console.log("drag"); dragSelf=this; swipeSelf.options.swipeLeft=false; swipeSelf.options.swipeRigth=false; swipeSelf.dx = swipeSelf.dx || 0; swipeSelf.dy = swipeSelf.dy || 0; console.log("当前x值为:" + swipeSelf.dx + ", 当前y值为:" + swipeSelf.dy +"."); var offx = swipeSelf.dx + ev.x + "px"; var offy = swipeSelf.dy + ev.y + "px"; this.style.webkitTransform = "translate3d(" + offx + "," + offy + ",0)"+" scale(" +currentScale +")"; } }); touch.on(swipeSelf.swipeContainer, 'dragend','.img-div', function(ev){ console.log("dragend"); swipeSelf.dx += ev.x; swipeSelf.dy += ev.y; swipeSelf.options.swipeLeft=true; swipeSelf.options.swipeRigth=true; }); } //触发,查看大图 swipeSelf.init=function(){ //设置小图 swipeSelf.listContainer.find(".img-bg").width(minImageWidth); swipeSelf.listContainer.find(".img-bg").height(minImageWidth); //添加绑定查看大图事件 swipeSelf.listContainer.on("tap","li",function(){ bigIndex=$(this).index(); swipeSelf.showBigImg(); }); swipeSelf.swipeRight();//右滑动 swipeSelf.swipeLeft();//左滑动 swipeSelf.pinche();//缩放 swipeSelf.drag();//拖拽 swipeSelf.doubletap();//双击放大缩小 } //事件监听 swipeSelf.listen=function(type,callback){ swipeSelf[type]=callback; } }
index.html
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>图片查看器</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="format-detection" content="telephone=no,email=no,adress=no"> <link rel="stylesheet" href="css/molong.css"> </head> <body> <ul id="imgList" class="molong-img-list"> <li big-url="imges/1.jpg"><div class='img-bg' style="background-image:url(imges/1.jpg);"></div></li> <li big-url="imges/2.jpg"><div class='img-bg' style="background-image:url(imges/2.jpg);"></div></li> <li big-url="imges/3.jpg"><div class='img-bg' style="background-image:url(imges/3.jpg);"></div></li> </ul> <ul style="position: absolute;top:300px;left:0;z-index: 9999999;"> <li><input style="height: 40px;width: 90px;text-align: center;" type="button" value="addImg" id="addBtn"/></li> <li style="margin-top: 30px;"><input style="height: 40px;width: 90px;text-align: center;" type="button" value="closeImg" id="addClose"/></li> </ul> <script src="/UploadFiles/2021-04-02/zepto.min.js">以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- [音展纪念碟]2006年《TAA台湾第十六届国际HI-ENDHI-FI音响展》2cd[WAV]
- 中国音乐地图之听见西藏山歌牧歌酒歌2020[WAV分轨]
- 王宏伟2017-永远的红飘带[太平洋影音][WAV+CUE]
- 费翔.1997-NOW现在【第一中国】【WAV+CUE】
- 新格合唱团.1981-我唱你和2辑(滚石新格民歌系列)【新格】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 雨果唱片-《金唛系列-蔷薇依韵琼瑶》WAV
- 陈百强《凝望(2012华纳LPCD45限量版)[DMI]》[WAV整轨]
- 模拟之声慢刻CD《徐小凤45周年》[德国母带][低速原抓WAV+CUE]
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- 《王菲 单曲合集》[FlAC/分轨][520MB]
- 《费玉清 原味再现 水长流》[WAV+CUE][430MB]
- 群星.1992-畅销榜老歌金曲10CD【风格】【WAV+CUE】
- 孙悦.2024-时光音乐会【金蜂】【WAV+CUE】