基于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 相关文章推荐
给Javascript数组插入一条记录的代码
Aug 30 Javascript
js控制不同的时间段显示不同的css样式的实例代码
Nov 04 Javascript
jquery统计用户选中的复选框的个数
Jun 06 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
用window.onerror捕获并上报Js错误的方法
Jan 27 Javascript
深入理解jQuery.data() 的实现方式
Nov 30 Javascript
js仿搜狐视频记录片列表展示效果
May 30 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
JS实现简单的天数计算器完整实例
Apr 28 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
JS+HTML5 canvas绘制验证码示例
Dec 05 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
Apr 23 Javascript
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递归创建和删除文件夹的代码小结
2012/04/13 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
jQuery 使用手册(七)
2009/09/23 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
MySQL 数据类型详情
2021/11/11 MySQL
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android