viewer.js实现移动端h5点击图片预览缩放

viewer.js实现h5点击图片预览缩放

1.引入文件js和css

<link href="~/Assets/css/viewer.css" rel="stylesheet" />
<script src="~/Assets/lib/viewerjs/viewer.js"></script>

引用的文件是分js版本和jquery版本的,下面使用的是js版本的;
需求:点击某张图片可以弹出大图进行预览和缩放
2.创建页面容器

        <img id="hide_image" src="" alt="你的图片地址" style="display:none;"/>

3.viewer.js的使用

var image = new Viewer(document.getElementById('hide_image'), {
                        url: 'data-original',
                    });
                    这里图片的点击事件触发:
                    $("#content img").click(function (e) {
                        var img = e.target.currentSrc;   获取到的点击图片地址
                        document.getElementById(&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现移动图片,可以使用一些现成的库,例如PhotoSwipe、viewer.js等,也可以自己实现。 以下是一个简单的实现步骤: 1. 首先,需要监听图片的点事件,当图片被点时,显示框,并在框中显示图片。 2. 接下来,需要实现手势和手势拖动。可以借助Hammer.js等手势库来实现,当用户在图片上进行或拖动时,修改图片的样式,实现和拖动效果。 3. 双大功能可以通过监听双事件来实现,当用户双图片时,将图片大到一定的比例。 4. 最后,需要注意一些细节问题,例如在时限制最大最小比例,避免图片过小或过大,同时在框中显示图片时,需要对图片进行居中处理,以保证用户体验。 下面是一个简单的示例代码: ```html <!-- HTML部分 --> <div class="preview-container"> <img src="your-image-url" class="preview-image"> </div> ``` ```css /* CSS部分 */ .preview-container { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); display: none; justify-content: center; align-items: center; } .preview-image { max-width: 100%; max-height: 100%; } ``` ```javascript // JavaScript部分 var previewContainer = document.querySelector('.preview-container'); var previewImage = document.querySelector('.preview-image'); // 监听图片事件 previewImage.addEventListener('click', function() { previewContainer.style.display = 'flex'; }); // 初始化手势库 var mc = new Hammer.Manager(previewImage); mc.add(new Hammer.Pinch()); mc.add(new Hammer.Pan({ threshold: 0 })); var scale = 1, lastScale = 1; var posX = 0, posY = 0, lastPosX = 0, lastPosY = 0; // 监听手势事件 mc.on('pinchstart', function(e) { lastScale = scale; }); mc.on('pinchmove', function(e) { scale = Math.max(1, Math.min(lastScale * e.scale, 3)); previewImage.style.transform = 'scale(' + scale + ') translate(' + posX + 'px,' + posY + 'px)'; }); mc.on('pinchend', function(e) { lastScale = scale; }); mc.on('panstart', function(e) { lastPosX = posX; lastPosY = posY; }); mc.on('panmove', function(e) { posX = lastPosX + e.deltaX; posY = lastPosY + e.deltaY; previewImage.style.transform = 'scale(' + scale + ') translate(' + posX + 'px,' + posY + 'px)'; }); // 监听双事件 previewImage.addEventListener('dblclick', function() { if (scale === 1) { scale = 2; previewImage.style.transform = 'scale(' + scale + ') translate(' + posX + 'px,' + posY + 'px)'; } else { scale = 1; posX = 0; posY = 0; previewImage.style.transform = 'scale(' + scale + ') translate(' + posX + 'px,' + posY + 'px)'; } }); // 点框关闭 previewContainer.addEventListener('click', function() { previewContainer.style.display = 'none'; scale = 1; posX = 0; posY = 0; previewImage.style.transform = 'scale(' + scale + ') translate(' + posX + 'px,' + posY + 'px)'; }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值