zoukankan      html  css  js  c++  java
  • 使用jquery-panzoom来实现图片或元素的放大缩小

    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=" 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>
    

      

  • 相关阅读:
    为什么我的datagridview中显示的日期总把时间也显示出来了,请问怎样才能让它不显示呢?
    .net加载到vb 进程
    <转>RowState 介绍
    sqlserver 一个排序问题
    sqlserver 中含有某字符串
    网站链接的几种方式
    SQL Server 用SQL语句查找某个表的触发器
    获取文件名后缀
    mysql 排重查询
    while循环中不支持循环使用curl
  • 原文地址:https://www.cnblogs.com/nelson-hu/p/7872550.html
Copyright © 2011-2022 走看看