码迷,mamicode.com
首页 > 其他好文 > 详细

图片切割插件分步实现(一)

时间:2014-12-26 19:00:27      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

该插件是在窗口拖动效果的基础上实现的

回头再写详细点,时间比较急。先贴上代码

插件源码如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=8" /> 
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>登录</title>
</head>
<style>
body{
	background-color:#DCDCDC;
	
}
.container{
	position:absolute;
	height:400px;
	width:300px;
	border:1px solid black;
	border-radius:3px;
	background:url("http://oospace.sinaapp.com/img/cut.jpg") no-repeat;
	background-color:black;
	opacity:0.2;
	filter:alpha(opacity=20);
	top:100px;
	left:100px
}
.imgLayer{
	position:absolute;
	background:url("http://oospace.sinaapp.com/img/cut.jpg") no-repeat;
	height:400px;
	width:300px;
	clip:rect(20px  280px 300px 30px);
	top:100px;
	left:100px
	
}
.controlLayer{
	position:absolute;
	height:280px;
	width:250px;
	zoom:1;
	border:1px dashed #DCDCDC;
	top:120px;
	left:130px;
	/*cursor:move;*/
}
.mark{
border:1px solid #000000;
	background-color:#ffffff;
	opacity:0.8;
	filter:alpha(opacity=80);
	padding:2px;
	height:3px;
	width:3px;
}
.leftTop{
	position:absolute;
	top:-3px;
	left:-3px;
	cursor: se-resize;
}
.leftCenter{
	position:absolute;
	top:50%;
	left:-3px;
	cursor: w-resize;
}
.topCenter{
	position:absolute;
	top:-3px;
	left:50%;
	cursor: ns-resize;
}
.rightTop{
	position:absolute;
	top:-3px;
	right:-3px;
	cursor: ne-resize;
}
.rightCenter{
	position:absolute;
	top:50%;
	right:-3px;
	cursor: e-resize;
}
.leftBottom{
	position:absolute;
	bottom:-3px;
	left:-3px;
	cursor: ne-resize;
}
.bottomCenter{
	position:absolute;
	bottom:-3px;
	left:50%;
	cursor: s-resize;
}
.rightBottom{
	position:absolute;
	bottom:-3px;
	right:-3px;
	cursor: se-resize;
}
</style>
<body>
    <div class="container">
	</div>
	
		<div  class="imgLayer">
		</div>
	
	<div class="controlLayer">
		<div class="leftTop  mark"></div>
		<div class="topCenter mark"></div>
		<div class="rightTop mark"></div>
		<div class="leftCenter mark"></div>
		<div class="rightCenter mark"></div>
		<div class="leftBottom mark"></div>
		<div class="bottomCenter mark"></div>
		<div class="rightBottom mark"></div>
	</div>
</body>
<script  type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script>
//拖动效果代码
//var _z=9999;
$(document).ready(function(){
 var _move=false;//移动标记
 var _x,_y;//鼠标离控件左上角的相对位置
 var wd;//窗口
 var img=$(".imgLayer");//图片
 var ctain=$(".container");
    $(".controlLayer").click(function(){
        //alert("click");//点击(松开后触发)
     this.style.cursor = "default";//鼠标形状
     //this.style.zIndex = 999;
        }).mousedown(function(e){
        _move=true;
        wd=$(this);
        this.style.cursor = "move";//鼠标形状
        //this.style.zIndex = _z;//窗口层次
        //_z++;
        _x=e.pageX-parseInt(wd.css("left"));
        _y=e.pageY-parseInt(wd.css("top"));
		//_ximg=e.pageX-parseInt(img.css("left"));
		//_yimg=e.pageX-parseInt(img.css("top"));
       /*  wd.fadeTo(20, 0.25); *///点击后开始拖动并透明显示
        $(document).mousemove(function(e){
            if(_move){
                var x=e.pageX-_x;//移动时根据鼠标位置计算控件左上角的绝对位置
                var y=e.pageY-_y;
				
				//设置controlLayer的范围
				var w_ctn=parseInt(ctain.css("width"));
				var h_ctn=parseInt(ctain.css("height"));
				var l_ctn=parseInt(ctain.css("left"));
				var t_ctn=parseInt(ctain.css("top"));
				var  w_wd=parseInt(wd.css("width"));
				var  h_wd=parseInt(wd.css("height"));
				
				//设置imgLayer的范围
				var top=y-t_ctn+"px";
				var right=parseInt(wd.css("width"))+x-l_ctn+"px";
				var bottom=parseInt(wd.css("height"))+y-t_ctn+"px";
				var left=x-l_ctn+"px";
				var rect="rect( "+top+" "+right+" "+bottom+" "+left+" )";
				
				//根据container控制移动范围
				if(w_ctn>=(x+w_wd-l_ctn)&&h_ctn>=(y+h_wd-t_ctn)&&(y>=t_ctn)&&(x>=l_ctn)){
					wd.css({top:y,left:x});//控件新位置
					img.css("clip",rect);//切割位置
					//img.css({top:ctain.css("top"),left:ctain.css("left")});//切割显示图片新位置
				}
				
				
				//var ximg=e.pageX-_ximg;//移动时根据鼠标位置计算控件左上角的绝对位置
				//var yimg=e.pageY-_yimg;
				//img.css({top:yimg,left:ximg});//图片新位置
				
            }
        }).mouseup(function(){
        _move=false;
        /* wd.fadeTo("fast", 1); *///松开鼠标后停止移动并恢复成不透明
      });
    });
    
});
</script>
</html>

效果:http://oospace.sinaapp.com/cut.php

图片切割插件分步实现(一)

标签:

原文地址:http://my.oschina.net/oospace/blog/360994

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!