var touchScale = function() { var startX, endX, scale, x1, x2, y1, y2, imgLeft, imgTop, imgWidth, imgHeight, one = false, $touch = $(".showDiv img"), //選擇放大縮小的元素 originalWidth = $touch.width(), originalHeight = $touch.height(), baseScale = parseFloat(originalWidth/originalHeight), imgData = [], bgTop = parseInt($(".showDiv img").css('top')); function siteData(name) { imgLeft = parseInt(name.css('left')); imgTop = parseInt(name.css('top')); imgWidth = name.width(); imgHeight = name.height(); } $(document).on('touchstart touchmove touchend', $(".showDiv img"), function(event){ var $me = $(".showDiv img"); touch1 = event.originalEvent.targetTouches[0], // 第一根手指touch事件 touch2 = event.originalEvent.targetTouches[1], // 第二根手指touch事件 fingers = event.originalEvent.touches.length; // 屏幕上手指數量 //手指放到屏幕上的時候,還沒有進行其他操作 if (event.type == 'touchstart') { if (fingers == 2) { // 縮放圖片的時候X坐標起始值 startX = Math.abs(touch1.pageX - touch2.pageX); one = false; }else if (fingers == 1) { x1 = touch1.pageX; y1 = touch1.pageY; one = true; } //siteData($me); } //手指在屏幕上滑動 else if (event.type == 'touchmove') { if (fingers == 2) { // 縮放圖片的時候X坐標滑動變化值 endX = Math.abs(touch1.pageX - touch2.pageX); scale = endX - startX; $me.css({ 'width' : originalWidth + scale, 'height' :originalWidth + scale //如果圖片被拉伸了可以把這句去掉,讓圖片自適應 }); }else if (fingers == 1) { x2 = touch1.pageX; y2 = touch1.pageY; // if (one) { // $me.css({ // 'left' : imgLeft + (x2 - x1), // 'top' : imgTop + (y2 - y1) // }); // } } } //手指移開屏幕 else if (event.type == 'touchend') { // 手指移開后保存圖片的寬 originalWidth = $touch.width(), siteData($me); imgData = [[imgLeft, imgTop-bgTop, imgWidth, imgHeight],[0, 0, 640, 640]]; } }); var getData = function(){ return imgData; }; return { imgData : getData } };
在點擊打開大圖的時候,使用touchScale();來生效js
如果圖片被拉伸了,把 'height' :originalWidth + scale 去掉即可
如果切換圖片想讓圖片變成初始化尺寸,可以在切換圖片時,把圖片的with設置成100%就可以了
參考網址:https://blog.csdn.net/weixin_41578603/article/details/90212578