1. html

<div class="wrapper">
<a class="btn btn-md" ui-turn-off="AllIssueImgView" style="position: absolute;top: 10px;left: 0px;font-size: x-large;color: white;z-index: 1100"><i class="fa fa-angle-left"></i></a>
<div class="modal-body">
<div class="panzoomContainer">
<div class="parent" style="position: fixed;left: 0px;top:0px;bottom:0px" ui-swipe-right="swipePreview('prev')" ui-swipe-left="swipePreview('next')">
<div class="panzoom">
<img class="issueImg" ng-src="{{activeImg.base64Str == null ? '/issues/bigImage/'+activeImg : activeImg.base64Str}}" style="width: 500px;height: 600px;">
</div>
</div> </div> </div>
</div>

  

2. js

<script>

      	var $panzoomContainer = $('.panzoomContainer').first();
var parentElement = $('.parent');
var panzoomElement = $panzoomContainer.find('.panzoom'); // 初始化panzoom
(function() {
panzoomElement.panzoom({
minScale: 0.7,
maxScale: 2,
startTransform: 'scale(0.7)',
duration: 100,
contain: 'automatic',
});
})(); // 处理panzoomstart事件
(function() {
panzoomElement.on('panzoomstart', function(e, panzoom, event, touches) {
if (panzoom.scale == 0.7) {
panzoomElement.panzoom("option", "disableYAxis", true);
} else {
panzoomElement.panzoom("option", "disableYAxis", false);
}
});
})(); // 处理panzoomend事件
(function() {
panzoomElement.on('panzoomend', function(e, panzoom, matrix, changed) { if (changed) { // 父元素绝对坐标
var parentLeftTop = parseInt(parentElement.offset().left);
var parentRightTop = parseInt(parentElement.offset().left + parentElement.width());
// alert(parentLeftTop);
// alert(parentRightTop);
// panzoom绝对坐标
var panzoomLeftTop = parseInt(panzoomElement.offset().left);
var panzoomRightTop = parseInt(panzoomElement.offset().left + panzoomElement.width());
// alert(panzoomLeftTop);
// alert(panzoomRightTop);
// alert(panzoom.scale);
if (Math.abs(parentLeftTop - panzoomLeftTop) <= 10) {
if (panzoom.scale == 0.7) {
angular.element('#issueImagesView').scope().swipePreview('next', true)
} else {
angular.element('#issueImagesView').scope().swipePreview('prev', true);
}
}
if (Math.abs(parentRightTop - panzoomRightTop) <= 10) {
if (panzoom.scale == 0.7) {
angular.element('#issueImagesView').scope().swipePreview('prev', true);
} else {
angular.element('#issueImagesView').scope().swipePreview('next', true);
}
} } else { // 缩放时重置
if (panzoom.scale != 0.7) {
setTimeout(function() {
panzoomElement.panzoom("reset");
}, 200);
}
} });
})(); </script>

  

使用jquery-panzoom来实现图片或元素的放大缩小的更多相关文章

  1. html 图片在一个div中放大缩小效果

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...

  2. JS微信网页使用图片预览(放大缩小)

    前言 需求在微信网页中客户点击图片可进行预览放大缩小功能,网上找了各种js方式实现, 唯一的麻烦就是不兼容或者和项目框架不兼容 次函数只只用于部分客户端,否则会出现 WeixinJSBridge is ...

  3. PhotoView实现图片随手势的放大缩小的效果

    项目需求:在listView的条目中如果有图片,点击条目,实现图片的放大,并且图片可以根据手势来控制图片放大缩小的比例.类似于微信朋友圈中查看好友发布的照片所实现的效果. 思路是这样的:当点击条目的时 ...

  4. Ionic实战三:Ionic 图片预览可放大缩小左右滑动demo-iClub图片预览

    这个demo的主要功能有两个,一个是首页的导航向上拉动会浮动在最上面的效果,另一个就是我们平时非常实用的功能,就是图片预览功能 点击可以放大图片,并且可以左右滑动,还可以双击放大缩小图片以及双手指控制 ...

  5. Winform 图片鼠标滚动查看(放大,缩小,旋转,拖动查看)[日常随笔]

    方法千千万,我只是其中一笔[通过控制PictureBox来控制图片,图片完全施展在控件中]...几久不做,还真有点陌生! 窗体构造中添加鼠标滚动: /// <summary> /// 窗体 ...

  6. Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)

    原文地址:http://menxu.lofter.com/post/164b9d_3ebf79 package com.teamkn.base.utils; import java.io.ByteAr ...

  7. iOS图片预览、放大缩小

    思路 图片预览,优先考虑基础控件UIImageView.UIButton 图片预览中可能需设置不同的mode,优先考虑UIImageView typedef NS_ENUM(NSInteger, UI ...

  8. jQuery页面滚动图片等元素动态加载实现

    一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商城页面. 或者是前段时间写血本买了个高档耳机的京东商城页面,或者是新浪微博之类. 这些页面图片数量 ...

  9. [转]jQuery页面滚动图片等元素动态加载实现

    本文转自:http://www.zhangxinxu.com/wordpress/?p=1259 一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商 ...

随机推荐

  1. rem是如何自适应的

    原文链接:http://caibaojian.com/web-app-rem.html 摘要:rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个px字号,则可以来算 ...

  2. Redis进阶实践之十四 Redis-cli命令行工具使用详解第一部分

    一.介绍       redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redis的东西要看的都差不多看完了.网上的东西也不多了.剩下来就看看官网的东西吧,一遍翻译,一遍测试. ...

  3. linux周期性计划任务 进程管理

    周期性计划任务crontab命令系统服务:/etc/init.d/crond(crond必须启动才会生效)用户计划:/var/spool/cron/用户名默认的计划任务全局配置:/etc/cronta ...

  4. 笔记︱支持向量机SVM在金融风险欺诈中应用简述

    本笔记源于CDA-DSC课程,由常国珍老师主讲.该训练营第一期为风控主题,培训内容十分紧凑,非常好,推荐:CDA数据科学家训练营 欺诈一般不用什么深入的模型进行拟合,比较看重分析员对业务的了解,从异常 ...

  5. 【linux】linux下vi命令的使用

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  6. MongoDB集群之分片

    原文:点击打开链接 MongoDB分片 分片(sharding)是将数据拆分,将其分散在不同的机器上的过程.MongoDB支持自动分片 片键(shard key)设置分片时,需要从集合里面选一个键,用 ...

  7. [Err] 1136 - Column count doesn't match value count at row 1

    1 错误描述 [Err] 1136 - Column count doesn't match value count at row 1 Procedure execution failed 1136 ...

  8. Java获取某年某季度的第一天出错

    1.错误描述 Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given ...

  9. INF 右键安装驱动以及卸载

    INF 右键安装驱动以及卸载 之前写过一篇文章是关于INF文件详解的,大家可以参看INF文件详解,这次写的是关于INF右键安装,这样比较方便.卸载的话也是一句话,可以大大减少安装时间: 先将INF文件 ...

  10. SecurityError:Error #2048:安全沙箱冲突

    1.错误描述 SecurityError:Error #2048:安全沙箱冲突:http://localhost:8080/YHD/flash/YHD.swf 不能从 http://123.89.45 ...