基于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 相关文章推荐
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
Apr 14 Javascript
jquery ajax提交表单数据的两种实现方法
Apr 29 Javascript
dojo学习第二天 ajax异步请求之绑定列表
Aug 29 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
jquery实现的图片点击滚动效果
Apr 29 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
原生JS实现图片轮播与淡入效果的简单实例
Aug 21 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
vue移动端城市三级联动组件使用详解
Jul 26 Javascript
vue 组件间的通信之子组件向父组件传值的方式
Jul 29 Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 Javascript
开发一个封装iframe的vue组件
Mar 29 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动态生成函数示例
2014/03/21 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
使用Python实现一个简单的项目监控
2015/03/31 Python
python使用生成器实现可迭代对象
2018/03/20 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
python3实现猜数字游戏
2020/12/07 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
大四学生毕业自荐信
2013/11/07 职场文书
运动会班级口号
2014/06/09 职场文书
商业企业管理专业求职信
2014/07/10 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS