下面代码图片链接换成自己的就可以用了
<!DOCTYPE html>
<html lang="en">
<head>
<title>图片拖拽、旋转、缩放、移动</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
-moz-user-select:none;
}
table{
width: 100%;
border-spacing: 8px;
}
td{
border: 1px solid gray;
}
.ltd{
width: 60%;
height: 900px;
overflow: hidden;
}
.drawingBoard{
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
}
.drawingBoard .rel_img{
cursor:move;
}
.line_center_s{
background: #ddd;
border: 1px solid #000;
position: absolute;
width: 15px;
height: 15px;
top: -15px;
left: 50%;
border-radius: 50%;
}
.line_center_s:link,.line_center_s:visited,.line_center_s:hover,.line_center_s:active{
cursor: url("images/rotate_arrow.cur"),crosshair;
}
.rtd{
width: 40%;
height: 900px;
}
div.panel{
width: 100%;
height: 100%;
}
a.cloth{
display: block;
float: left;
text-decoration: none;
border: 1px solid transparent;
margin: 6px -3px -3px 6px;
padding: 2px;
cursor: pointer;
}
a.cloth:hover{
border: 1px solid gray;
}
</style>
</head>
<body>
<table>
<tr>
<td class="ltd">
<div class="drawingBoard" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</td>
<td class="rtd">
<div class="panel">
<a class="cloth" ><img src="images/cloth_1.jpg" data-url="images/cloth_1.png"></a>
<a class="cloth" ><img src="images/cloth_2.jpg" data-url="images/cloth_2.png"></a>
<a class="cloth" ><img src="images/cloth_3.jpg" data-url="images/cloth_3.png"></a>
</div>
</td>
</tr>
</table>
<script type="text/javascript" src="js/jquery-1.11.3.js"></script>
<script type="text/javascript" src='js/zooming.js'></script>
<script type="text/javascript">
jQuery(function(){
document.onselectstart=function(){return false;}
$(".panel .cloth img").each(function(){
this.ondragstart=function(event){
var img_path= jQuery(this).attr("data-url");
event.dataTransfer.setData("Text",img_path);
}
});
$(".drawingBoard").on('click',function(event) {
event.preventDefault();
event.stopPropagation();
hideStyle();
});
$(".drawingBoard").on('click', '.rel_img', function(event) {
event.preventDefault();
event.stopPropagation();
hideStyle();
$(this).find(".zoom").show();
$(this).css({
border: '1px solid gray'
});
$(this).find(".line_center").show();
$(this).find(".line_center_s").show();
zooming.add(this);
});
var rotate=0;
$(".drawingBoard").on('mousedown','.rel_img .line_center_s', function(e) {
e.preventDefault();
e.stopPropagation();
$(".drawingBoard").css({
cursor: "url('images/rotate_arrow.cur'),crosshair"
});
var x=e.clientX,
y=e.clientY,
cloth_width=$(this).parent().css("width"),
cloth_height=$(this).parent().css("height"),
position_x=$(this).parent().offset().left,
position_y=$(this).parent().offset().top,
cx=parseInt(position_x)+parseInt(cloth_width)/2,
cy=parseInt(position_y)+parseInt(cloth_height)/2,
curentEle=this;
var anglePre=countDeg(cx,cy,x,y);
$(document).on('mousemove', function(e) {
e.preventDefault();
e.stopPropagation();
var curr_x=e.clientX;
var curr_y=e.clientY;
var angleNext=countDeg(cx,cy,curr_x,curr_y);
var new_rotate=angleNext-anglePre;
rotate+=new_rotate;
anglePre=angleNext;
$(curentEle).parent().css({
"transform":"rotate("+rotate+"deg)",
'-ms-transform':"rotate("+rotate+"deg)",
"-webkit-transform":"rotate("+rotate+"deg)"
});
});
}).mouseup(function() {
$(document).off("mousemove");
$(".drawingBoard").css({
cursor: "default"
});
});
});
function allowDrop(event) {
event.preventDefault();
}
var _zindex=10;
function drop(event) {
event.preventDefault();
event.stopPropagation();
var data=event.dataTransfer.getData("Text");
var x=event.clientX;
var y=event.clientY;
var _x=x-80;
var _y=y-105;
hideStyle();
var rel_img_div="<div class='rel_img' style='position: absolute;left:"+_x+"px;top:"+_y+"px;"+
"border: 1px solid #999;z-index:"+_zindex+";' >"+
"<img onmousedown='myMousedown(this,event)' onload='Tzoom(this)' src="+data+" style='width:160px;height:210px;'>"+
"<div class='line_center_s'></div>"+
"</div>";
jQuery(".drawingBoard").append(rel_img_div);
_zindex+=1;
}
function myMousedown(t,e){
e.preventDefault();
e.stopPropagation();
var x=e.clientX;
var y=e.clientY;
var _left=parseInt($(t).parent().css("left"));
var _top=parseInt($(t).parent().css("top"));
this.onmousemove=function(e){
var _x= e.clientX;
var _y= e.clientY;
var new_x=_x-x;
var new_y=_y-y;
x=e.clientX;
y=e.clientY;
_left=_left+new_x;
_top=_top+new_y;
$(t).parent().css({left:_left+"px",top:_top+"px"});
this.onmouseup=function(){
this.onmousemove=null;
}
}
}
function hideStyle(){
$(".drawingBoard .rel_img").find(".zoom").hide();
$(".drawingBoard .rel_img").css({
border: '0 solid gray'
});
$(".drawingBoard .rel_img").find(".line_center").hide();
$(".drawingBoard .rel_img").find(".line_center_s").hide();
}
var countDeg=function(cx,cy,pointer_x,pointer_y){
var ox=pointer_x-cx;
var oy=pointer_y-cy;
var to=Math.abs(ox/oy);
var angle = Math.atan( to )/( 2 * Math.PI ) * 360;
if( ox < 0 && oy < 0)
{
angle = -angle;
}else if( ox < 0 && oy > 0)
{
angle = -( 180 - angle )
}else if( ox > 0 && oy < 0)
{
angle = angle;
}else if( ox > 0 && oy > 0)
{
angle = 180 - angle;
}
return angle;
}
</script>
</body>
</html>
js/zooming.js 代码
var zooming=function(e){
e=window.event ||e;
var o=this,data=e.wheelDelta || -e.detail*40,zoom,size;
if(!+'\v1'){
zoom = parseInt(o.style.zoom) || 100;
zoom += data / 12;
if(zoom > zooming.min)
o.style.zoom = zoom + '%';
e.returnValue=false;
}else {
size=o.getAttribute("_zoomsize").split(",");
zoom=parseInt(o.getAttribute("_zoom")) ||100;
zoom+=data/12;
if(zoom>zooming.min){
o.setAttribute("_zoom",zoom);
o.style.width=size[0]*zoom/100+"px";
o.style.height=size[1]*zoom/100+"px"
}
e.preventDefault();
e.stopPropagation();
}
};
zooming.add=function(obj,min){
zooming.min=min || 50;
obj.onmousewheel=zooming;
if(/Firefox/.test(navigator.userAgent))
obj.addEventListener("DOMMouseScroll",zooming,false);
if(-[1,]){
obj.setAttribute("_zoomsize",obj.offsetWidth+","+obj.offsetHeight);
}
};
function Tzoom(t){
zooming.add(t);
}