Layui的图片放大查看并且可以翻页和缩放
众所周知,Layui的Layer弹出层组件是有相册层的,可以很简单的实现图片点击放大和翻页功能,一种是数据请求
$.getJSON('/jquery/layer/test/photos.json', function(json){ layer.photos({ photos: json ,anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数) }); }); //而返回的json需严格按照如下格式: { "title": "", //相册标题 "id": 123, //相册id "start": 0, //初始显示的图片序号,默认0 "data": [ //相册包含的图片,数组格式 { "alt": "图片名", "pid": 666, //图片id "src": "", //原图地址 "thumb": "" //缩略图地址 } ] }
另外一种是图片已经在页面上有展示了,那么只需要图片层的DIV有ID就可以定位直接初始化相册层了
//HTML示例 <div id="layer-photos-demo" class="layer-photos-demo"> <img layer-pid="图片id,可以不写" layer-src="大图地址" src="缩略图" alt="图片名"> <img layer-pid="图片id,可以不写" layer-src="大图地址" src="缩略图" alt="图片名"> </div> <script> //调用示例 layer.photos({ photos: '#layer-photos-demo',
shade: 0.4, //遮罩层 anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数) }); </script>
现在想实现放大查看的时候可以通过滚轮放大缩小,那么加一个监听事件就可以了
$(document).on("mousewheel DOMMouseScroll", ".layui-layer-phimg", function (e) { var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1)) || // chrome & ie (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1)); // firefox var imagep = $(".layui-layer-phimg").parent().parent(); var image = $(".layui-layer-phimg").parent(); var h = image.height(); var w = image.width(); if (delta > 0) { if (h < (window.innerHeight)) { h = h * 1.05; w = w * 1.05; } } else if (delta < 0) { if (h > 100) { h = h * 0.95; w = w * 0.95; } } imagep.css("top", (window.innerHeight - h) / 2); imagep.css("left", (window.innerWidth - w) / 2); image.height(h); image.width(w); imagep.height(h); imagep.width(w); });