Vue.js中结合jQuery.js实现在指定区域内图片的放大缩小、拖拽及旋转

Vue.js结合jQuery.js实现在指定区域内图片鼠标滚轮控制放大缩小、左键按住实现拖拽以及左键双击旋转效果
工作项目中,使用vue.js+require.js还有少量的JQuery.js组成的前端JS环境,样式用的element-ui,工作需求是要对APP端传到PC端页面的十几张甚至几十张图片进行显示,且与OCR识别图片中的信息进行人工比对,这就需要PC端的工作人员细致的查看图片,要支持在指定的div中图片可放大、缩小、可拖动、可旋转。

编辑html(style样式应格外注意一下)

用下面一个DIV代码片段作为说明



引入JS

js文件,本文章最后的引用链接中,第一个已有,可移步下载,此处不再赘加





在Vue的methods标签内写function方法

//OCR图片放大缩小功能(所有图片div通用,通过jQuery的id绑定操作)
"imgToSize" : function(imgId,event) {
	//通过这个值与零的大小比较,可以知道鼠标的滚轮滚动的方向
	var deltaY = event.deltaY;
	var size = 0;
	if(deltaY > 0){
        size = -100;
       	}else if(deltaY < 0){
       	size = 100;
		}
	var img = $("#"+imgId.id);
	 //取得图片的实际宽度
	var oWidth = img.width();
	//取得图片的实际高度
	var oHeight = img.height(); 
	//赋予改变后的值
	img.width(oWidth + size);
	img.height(oHeight + size / oWidth * oHeight);
}
          
//鼠标左键按下,拖动照片事件(所有图片div通用,通过jQuery的id绑定操作)
"mousedown" : function(id){
	//width: 570, height: 300,需与div的大小一致
	$("#"+id).imageView({ width: 570, height: 300 });
}
	
//图片向右旋转90度
//注意:imgRotate是要定义在方法之外的全局变量,这样每次点击才会产生累加效果!!!!
"imgRotateRight" : function(imgId){
	var img = $("#"+imgId.id);
	imgRotate += 90;
	img.css('transform', 'rotate(' + imgRotate + 'deg)');
 }

在这过程中,还遇到一个问题:就是当需要显示图片很多,按顺序排下来远远超过了屏幕的宽度,当你想对某一张图片鼠标滚轮放大缩小操作的时候,整个页面也会跟着上下动,好烦人,怎么办呢?

把鼠标的光标放在图片上,按住shift键,再滑动鼠标,你会发现,页面不动了,只是光标下方的图片在被放大、缩小!哈哈!

<<<<<<<<<<<<<<<<<<<<<<<<<<<<
解决问题过程中,通过网上查阅,得到了一些前辈的博客文章的指点,帮助解决了问题,再次感谢,并把最有帮助的文章引用至此:
div内部实现图片旋转、放大、缩小、拖拽
JavaScript图片的放大缩小及拖拽

不足或有误之处,欢迎批评指正!

你可能感兴趣的:(Vue.js中结合jQuery.js实现在指定区域内图片的放大缩小、拖拽及旋转)