国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > JS > 正文

基于touch.js手勢(shì)庫(kù)+zepto.js插件開(kāi)發(fā)圖片查看器(滑動(dòng)、縮放、雙擊縮放)

2024-05-06 16:32:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

最近由于公司項(xiàng)目需要圖片查看器,網(wǎng)上搜了一圈,感覺(jué)資料很少,所以決定基于百度的touch.js手勢(shì)庫(kù)+zepto.js自己寫(xiě)了一個(gè)小插件,實(shí)現(xiàn)了左右滑動(dòng),雙指縮放,雙擊縮放功能,基本使用還行,但是有時(shí)候還是不太順暢,后續(xù)會(huì)慢慢完善;寫(xiě)的不好的地方望各位能夠給出好的建議,謝謝!

源碼地址: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?molong:{};molong.photoSwipe=function(options){  //給大圖查看器添加一個(gè)獨(dú)立的容器  var bigContainerString="<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;    //大圖滑動(dòng)的位置  var bigImgLength=0;  //大圖數(shù)量  //縮放設(shè)置  var initialScale = 1;  //初始縮放比例  var currentScale=1;   //當(dāng)前縮放比例  var pinchSelf;     //當(dāng)前縮放比例的對(duì)象  var dragSelf;     //當(dāng)前拖拽的對(duì)象  //解析參數(shù)  swipeSelf.options=$.extend({    listContainer:$("ul"),    swipeRigth:true,    swipeLeft:true,    pinch:true  },options);  //容器  swipeSelf.listContainer=options.listContainer; //小圖容器  swipeSelf.swipeContainer=$("#bigImg"); //大圖容器  //阻止touchstart默認(rèn)事件  touch.on(this.swipeContainer, 'touchstart', function(ev){    ev.preventDefault();  });  swipeSelf.swipeContainer.css("-webkit-transition","all ease 0.3s");//設(shè)置動(dòng)畫(huà)事件  //顯示大圖  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();    //添加事件監(jiān)聽(tīng),監(jiān)聽(tīng)查看大圖    if(swipeSelf.listenShow){      swipeSelf.listenShow();    }  }  //隱藏大圖  swipeSelf.hideBigImg=function() {    $(".molong-swiper").hide();    swipeSelf.swipeContainer.html("");    if(swipeSelf.listenHide){      swipeSelf.listenHide();    }  }  //右滑動(dòng)  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)");//元素移動(dòng)復(fù)位        swipeSelf.dx=0;        swipeSelf.dy=0;        console.log("向右滑動(dòng).");        if(pinchSelf){          pinchSelf.style.webkitTransform = 'scale(1)';          currentScale=1;        }        bigImgOffset+=screenWidth;        bigImgOffset=bigImgOffset>=0?0:bigImgOffset;        swipeSelf.swipeContainer.css("-webkit-transition","all ease 0.5s");//設(shè)置動(dòng)畫(huà)事件        swipeSelf.swipeContainer.css("-webkit-transform","translate3d("+bigImgOffset+"px,0,0)");      }    });  }  //左滑動(dòng)  swipeSelf.swipeLeft=function(){    touch.on(swipeSelf.swipeContainer, 'swipeleft','li', function(ev){      console.log("swipeleft");      if(swipeSelf.options.swipeLeft){        console.log("向左滑動(dòng).");        // $(".img-div").css("-webkit-transform","translate3d(0px, 0px, 0px)");//元素移動(dòng)復(fù)位        swipeSelf.dx=0;        swipeSelf.dy=0;        if(pinchSelf){          pinchSelf.style.webkitTransform = 'scale(1)';          currentScale=1;        }        bigImgOffset-=screenWidth;        bigImgOffset=Math.abs(bigImgOffset)>=(screenWidth*bigImgLength)?(-screenWidth*(bigImgLength-1)):bigImgOffset;        swipeSelf.swipeContainer.css("-webkit-transition","all ease 0.5s");//設(shè)置動(dòng)畫(huà)事件        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 ? 2 : currentScale;        currentScale = currentScale < 1 ? 1 : currentScale;        swipeSelf.swipeContainer.css("-webkit-transition","all ease 0.1s");//設(shè)置動(dòng)畫(huà)事件        this.style.webkitTransform = 'scale(' + currentScale + ')';        console.log("當(dāng)前縮放比例為:" + currentScale + ".");      }    });  }  //雙擊放大縮小  swipeSelf.doubletap=function(){    touch.on(swipeSelf.swipeContainer, 'doubletap','.img-div', function(ev){      //console.log(ev.type);      pinchSelf=this;      currentScale=currentScale>1?2:1;      if(currentScale==1){        currentScale=2;        swipeSelf.swipeContainer.css("-webkit-transition","all ease 0.1s");//設(shè)置動(dòng)畫(huà)事件        this.style.webkitTransform = 'scale(' + currentScale + ')';      }else{        currentScale=1;        swipeSelf.swipeContainer.css("-webkit-transition","all ease 0.1s");//設(shè)置動(dòng)畫(huà)事件        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("當(dāng)前x值為:" + swipeSelf.dx + ", 當(dāng)前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;    });  }  //觸發(fā),查看大圖  swipeSelf.init=function(){    //設(shè)置小圖    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();//右滑動(dòng)    swipeSelf.swipeLeft();//左滑動(dòng)    swipeSelf.pinche();//縮放    swipeSelf.drag();//拖拽    swipeSelf.doubletap();//雙擊放大縮小  }  //事件監(jiān)聽(tīng)  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="js/zepto.min.js"></script><script src="js/touch.min.js"></script><script src="js/molong.js"></script><script>  $(function(){    //添加大圖容器    var screenHeight=window.innerHeight;    var screenWidth=window.innerWidth;    var minImageWidth=screenWidth*0.25;//顯示小圖的寬高    var mySwipe=new molong.photoSwipe({listContainer:$("#imgList")});    mySwipe.init();    //關(guān)閉圖片查看器    $("#addClose").on("tap",function(){      mySwipe.hideBigImg();    });    $("#addBtn").on("click",function(){      console.log(this);      var addImg1='<li big-url="imges/4.jpg"><div class="img-bg" style="background-image:url(imges/4.jpg);"></div></li>';      mySwipe.listContainer.append(addImg1);      mySwipe.listContainer.find(".img-bg").width(minImageWidth);      mySwipe.listContainer.find(".img-bg").height(minImageWidth);    })    //顯示大圖監(jiān)聽(tīng)    mySwipe.listen("listenShow",function(){      alert("打開(kāi)大圖");    });    //關(guān)閉大圖監(jiān)聽(tīng)    mySwipe.listen("listenHide",function(){      alert("關(guān)閉大圖");    });  });</script></body></html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新沂市| 黄梅县| 自贡市| 梧州市| 青海省| 辛集市| 依安县| 茶陵县| 延安市| 清水县| 峨边| 庐江县| 合山市| 忻城县| 大石桥市| 余姚市| 河津市| 余江县| 新和县| 金阳县| 海城市| 历史| 莎车县| 广平县| 镇赉县| 祁门县| 诸城市| 郁南县| 广宁县| 阳原县| 太谷县| 甘泉县| 永嘉县| 英吉沙县| 遂宁市| 叶城县| 探索| 华阴市| 桃园市| 开阳县| 武鸣县|