基于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图像处理—为矩阵添加常用方法
Dec 27 Javascript
JS获取Table中td值的方法
Mar 19 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
Jun 19 Javascript
jquery+CSS3实现3D拖拽相册效果
Jul 18 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
js中int和string数据类型互相转化实例
Jan 16 Javascript
react 组件传值的三种方法
Jun 03 Javascript
js blob类型url的视频下载问题的解决
Nov 29 Javascript
javascript执行上下文、变量对象实例分析
Apr 25 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
asp.net和php的区别点总结
2019/10/10 PHP
JavaScript学习笔记(十)
2010/01/17 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
原生JS实现留言板
2020/03/26 Javascript
Python random模块常用方法
2014/11/03 Python
详解python开发环境搭建
2016/12/16 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
浅析Python迭代器的高级用法
2020/07/16 Python
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
简历的个人自我评价范文
2014/01/03 职场文书
餐饮管理自我介绍信
2014/01/15 职场文书
会议新闻稿
2015/07/17 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers