基于jquery的用鼠标画出可移动的div


Posted in Javascript onSeptember 06, 2012

具体的原理我就不多说了,直接贴代码。
html代码:

<!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> 
<title>Draw rectangle</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<script src="jquery-1.6.2.min.js" type="text/javascript"></script> 
<script src="jquery.ui.core.js" type="text/javascript"></script> 
<script src="jquery.ui.widget.js" type="text/javascript"></script> 
<script src="jquery.ui.mouse.js" type="text/javascript"></script> 
<script src="jquery.ui.draggable.js" type="text/javascript"></script> 
<link href="catch.css" rel="stylesheet" type="text/css";charset=gb2312/> 
<script src="catch.js" type="text/javascript";charset=gb2312></script> 
<!--[if gte IE 7]> 
<style type="text/css"> 
</style> 
<![endif]--> 
</head> 
<body> 
<!-- header --> 
<div id="header"> 
<label>Draw!</label> 
</div> 
<!-- content --> 
<div id="content"> 
</div> 
<!-- bottom --> 
<div id="bottom"> 
</div> 
</body> 
</html>

css代码:
body 
{ 
font-family: "Helvetica Neue", "Lucida Grande", "Segoe UI", Arial, Helvetica, Verdana, sans-serif; 
margin: 0px; 
} 
#header 
{ 
width:150px; 
margin:0px auto; 
} 
#header label 
{ 
font-size:45px; 
font-weight:bolder; 
} 
#content 
{ 
width:90%; 
height:600px; 
margin:10px auto; 
border:1px solid blue; 
} 
.new_rect 
{ 
opacity: 0.7; 
-moz-opacity: 0.7; 
filter: alpha(opacity=70); 
-ms-filter: alpha(opacity=70); 
background:#A8CAEC; 
border:1px solid #3399FF; 
position:fixed; 
float:left; 
} 
.new_rect:hover{ 
cursor:move; 
} 
.mousedown{ 
-webkit-box-shadow:5px 5px 5px black; 
-moz-box-shadow:5px 5px 5px black; 
box-shadow:5px 5px 5px black; 
z-index:999; 
}

js代码:
////////////////////////////////////////////////////////// 
$(function () { 
//$("div[title=new_rect]").click(function(){alert("click");}); 
//$(".new_rect").draggable(); 
drow_rect("#content"); 
}) 
///////////////////////////////////////////////////////// 
function drow_rect(the_id){//theid表示用作画布的层 
var num=1; 
var x_down=0,y_down=0; 
var new_width=0,new_height=0; 
var x_original=0,y_original=0; 
var original_flag=true,down_flag=false; 
var x_point=0,y_point=0; 
var append_string; 
var MouseDown=function(e){ 
down_flag=true; 
x_down=e.pageX; 
y_down=e.pageY;//记录鼠标的当前坐标 
if(original_flag){//如果是第一次点击,把起始点的坐标记录到 x_original 和 y_original中 
x_original=e.pageX; 
y_original=e.pageY; 
original_flag=false; 
} 
}; 
var MouseMove=function(e){ 
if(down_flag){//鼠标有移动 
x_down=e.pageX; 
y_down=e.pageY; 
x_point=x_original; 
y_point=y_original; 
new_width=x_down-x_original; 
if(new_width<0){//鼠标向左运动 
new_width=-new_width; 
x_point=x_down; 
} 
new_height=y_down-y_original; 
if(new_height<0){ //鼠标向右运动 
new_height=-new_height; 
y_point=y_down; 
} 
$("div[name='"+num+"']").remove();//把前面的层删除,并在后面的代码中生成新的层 
append_string="<div class='new_rect' style='left:"+x_point+"px;top:"+y_point+"px;"+"width:"+new_width+"px;height:" 
+new_height+"px' name='"+num+"' title='第"+num+"个'></div>"; 
$(the_id).append(append_string); 
} 
} 
$(the_id).bind("mousedown",MouseDown); 
$(the_id).bind("mousemove",MouseMove);//事件绑定 
$(the_id).mouseup(function(e){//松开鼠标左键,初始化标志位 
down_flag=false; 
original_flag=true; 
$("div[name='"+num+"']").draggable(); 
$("div[name='"+num+"']").mousedown(function(){ 
$(this).addClass("mousedown");//添加阴影 
$(the_id).unbind("mousedown",MouseDown); 
$(the_id).unbind("mousemove",MouseMove);//取消事件绑定 
}); 
$("div[name='"+num+"']").mouseup(function(){ 
$(this).removeClass("mousedown");//删除阴影 
$(the_id).bind("mousedown",MouseDown); 
$(the_id).bind("mousemove",MouseMove);//事件绑定 
}); 
num++; 
}); 
}

上传一个实例图片:
基于jquery的用鼠标画出可移动的div
Javascript 相关文章推荐
jQuery 选择器理解
Mar 16 Javascript
动态加载脚本提升javascript性能
Feb 24 Javascript
jQuery 动态云标签插件
Nov 11 Javascript
Node.js实现批量去除BOM文件头
Dec 20 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
javascript等号运算符使用详解
Apr 16 Javascript
javascript中动态函数用法实例分析
May 14 Javascript
解决layui中的form表单与button的点击事件冲突问题
Aug 15 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
Nov 14 Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 Javascript
Vue.Draggable实现交换位置
Apr 07 Vue.js
js防止表单重复提交实现代码
Sep 05 #Javascript
javascript面向对象入门基础详细介绍
Sep 05 #Javascript
说说JSON和JSONP 也许你会豁然开朗
Sep 02 #Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
Sep 02 #Javascript
Javascript中的delete介绍
Sep 02 #Javascript
JS判断当前日期是否大于某个日期的实现代码
Sep 02 #Javascript
Javascript this 的一些学习总结
Aug 31 #Javascript
You might like
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
python获取文件扩展名的方法
2015/07/06 Python
浅析Git版本控制器使用
2017/12/10 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
法国体育用品商店:GO Sport
2019/10/23 全球购物
个人自我鉴定写法
2013/11/30 职场文书
化学学院毕业生自荐信范文
2013/12/17 职场文书
街道务虚会发言材料
2014/10/20 职场文书
综合实践活动报告
2015/02/05 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
小学教师教学随笔
2015/08/14 职场文书
我的收音机情缘
2022/04/05 无线电