图片放大查看上一张下一张功能实现方法
微wx笑 2020-08-06【网页网站】 8 0关键字: 图片查看器 JQuery
最近在做一个网页上放大查看图片的功能,网上找到强大的jQuery图片查看器插件Viewer.js,但不是自己想要的样子,所以自己实现了一个。
最近在做一个网页上放大查看图片的功能,网上找到强大的jQuery图片查看器插件Viewer.js,但不是自己想要的样子,所以自己实现了一个。
效果如下:
去这里体验:http://www.yuanfangmingliu.cn/product/huxing_xflw.html
html代码:
<div id="div_mark" style="display:none; position: absolute; width:100%; height:1000px; top:0; left:0; background:rgba(0,0,0,0.7); z-index: 99999;"> <div style="width:1200px;height:848px; margin:auto auto;"> <div style="float:right; width:48px; height:48px; padding-right: 20px;"><img id="img_close" src="/resource/close.png" style="cursor:pointer; border: 1px dashed #888;"></div> <div style="width:100%; clear:both;"> <div style="width:60px;height:800px;float:left;"> <img id="img_prev" src="/resource/prev.png" style="cursor:pointer; position: relative; top: 49%; border: 1px dashed #888;"> </div> <div style="width:1074px;height:100%;float:left;"> <img id="img_ctnr" src="" style="width:100%;"> </div> <div style="width:60px;height:800px;float:right; text-align:right;"> <img id="img_next" src="/resource/next.png" style="cursor:pointer; position: relative; top: 49%; border: 1px dashed #888;"> </div> </div> </div> </div>
js代码:
<script> var canScroll = true; //指示当前是否可以滚动页面,当显示放大图片时值为false,否则为true document.body.addEventListener('touchmove', function(e){ e.preventDefault(); }, { passive: false }); //passive 参数不能省略,用来兼容ios和android //添加事件 var addEvent = (function () { if (document.addEventListener) { return function (el, type, fn, capture) { document.addEventListener(type, fn, capture); }; } else { return function (el, type, fn, capture) { document.attachEvent('on' + type, function () { return fn.call(el, window.event); }, capture); } } })(); //添加鼠标滚动轮事件 function addEventWheel(obj, fn ,useCapture){ var mousewheelevt=(/Firefox/i.test(navigator.userAgent))?"DOMMouseScroll": "mousewheel";//FF doesn't recognize mousewheel as of FF3.x addEvent(obj, mousewheelevt, handler, useCapture); //初始化处理回调函数 function handler(event) { if (canScroll){ return; } var delta = 0; var event = window.event ||event ; var delta = event.detail ?-event.detail/3 : event.wheelDelta/120; if(event.preventDefault){ event.preventDefault(); event.returnValue = false; }else{ event.returnValue = false; } //禁止默认事件 return fn.apply(obj, [event, delta]);//event事件对象 delta 滚动值 } } //添加鼠标滚动轮事件 随着滚动而改变值 addEventWheel( $(document), function(e,delta){ $("he").innerHTML = parseInt($("he").innerHTML) + delta; }, { passive: false } ); //显示放大图片 function showimg(imgurl){ canScroll = false; var mk = $("#div_mark"); mk.height(document.body.clientHeight); mk.css("top", $(document).scrollTop()); var img = $("#img_ctnr"); img.attr("src", imgurl); mk.show(); console.log(imgurl); } function prevNext(pn, crnt){ //实现上一张下一张图片切换功能,pn取值范围{-1,1},-1代表上一张,1代表下一张;crnt没有用到 var photos = $("img.photo"); var index = 0; //获取当前放大图片的索引 photos.each(function(idx, ele){ if (currentImgUrl == ele.getAttribute("src")){ index = idx + pn; } }); if (index < 0){ index = photos.length - 1; } if (index >= photos.length){ index = 0; } var img = $("#img_ctnr"); currentImgUrl = photos[index].getAttribute("src"); img.attr("src", currentImgUrl); window.event? window.event.cancelBubble = true : e.stopPropagation(); } var currentImgUrl = null; //记录当前放大图片的url $(document).ready(function(){ //绑定事件处理程序 $("img.photo").each(function(idx, ele){ $(this).click({imgurl:$(this).attr("src")}, function(evt){ currentImgUrl = evt.data.imgurl showimg(evt.data.imgurl); }); }); $("#img_close").click(function(){ canScroll = true; var mk = $("#div_mark"); mk.hide(); }); $("#div_mark").click(function(){ canScroll = true; var mk = $("#div_mark"); mk.hide(); }); $("#img_prev").click(function(evt){ prevNext(-1, evt); }); $("#img_next").click(function(evt){ prevNext(1, evt); }); $("#img_ctnr").click(function(evt){ //禁止事件冒泡向上传递 window.event? window.event.cancelBubble = true : e.stopPropagation(); }); }); </script>
功能依赖JQuery,本例使用的为 jquery-1.9.1.min.js。
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/web/2020-08-06/517.html
上一篇:div中内容上下居中小结
下一篇:js禁止页面滚动