layer 点击图片缩略图弹出图片原图

项目中有一个需求,点击图片的缩略图可以弹出弹层,查看图片原图;点击关闭按钮或点击遮罩层部分关闭图片

  • 代码实现如下:
  1. 项目是单页面,有多处需要用到查看图片详情,于是在主页面放置一个图片弹层的容器
<div id="window-img" style="display: none"></div>
  1. 封装一个函数,需要传入要查看的图片的路径
function windowImg(imgUrl) {
    $('#window-img').empty();
    var img = "<img class='window-img' src='"+ imgUrl +"' width='100%' />";
    $('#window-img').append(img);
    
    layer.open({
        type: 1,
        title: false,
        //resize:false,
        shadeClose: true,//点击遮罩关闭
        content:$('#window-img'),
        area:'auto',
        maxWidth: 800,
        cancel: function () {
            $('#window-img').css('display', 'none');
        },
        end:function () {
            $('#window-img').css('display', 'none');
        }
    });
}
  1. 通过点击图片事件调用
    $('#img').on('click',function () {
       var curImgUrl = this.src;
       windowImg(curImgUrl);
    });
  • 图片弹层效果图:
    在这里插入图片描述
  • 注意事项:

在写的过程中遇到了一些问题,总结一下避免再次踩坑:

  1. 由于弹层的图片是动态添加生成的,所以必须在调用layer.open()之前,先完成对弹层内容的渲染,这样可以实现弹层打开在页面居中~
  2. 由于弹层中图片显示的是原图,当图片过大时需要对它做一个最大宽高的限制,在网上找了很多方法都不是很好用,于是在img标签内加了一个 width='100%的设置,设置弹层最大宽度maxWidth:800,这样能够将图片按原比例缩小(但是该方法还有缺陷,只做了宽度的限制,如果图片高度过大的话,在页面中会显示不全造成遮挡)
  3. 设置图片最大宽度的格式是maxWidth:800,一开始按area的写法:maxWidth: ‘290px’,发现怎么都无效,文档还是要看仔细
  4. 只有当area: 'auto’时,maxWidth的设定才有效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值