基于jquery的一个拖拽到指定区域内的效果


Posted in Javascript onSeptember 21, 2011

这个可与前两个不同了,这个是拖拽到指定的区域内的特效。其实逻辑方式差不多,只不过不同的是 找到目标元素,用appendTo 的方法插入到目标元素。
具体的代码如下,有兴趣者可以试下。(由于是初学,做的简单,如果有其他的方法请给下指点,我定感激不尽哈。。。)

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>测试的拖拽功能</title> 
<style type="text/css"> 
body, div { margin: 0; paading: 0; font-size: 12px; } 
ul, li { margin: 0; padding: 0; list-style: none; } 
.clear { clear: both; width: 1px; height: 0px; line-height: 0px; font-size: 1px; } 
.bor2 { padding: 20px 0 0 0; } 
.box { position: static; float: left; width: 200px; height: 800px; margin: 0 auto; margin-top: 15px; } 
.bor { position: static; width: 100px; height: 100px; margin: 0 0 5px 0 ; border: 1px solid #ccc; background: #ececec; } 
.borp { position: absolute; width: 100px; height: 80px; margin: 10px; padding: 10px; border: 1px solid #ccc; background: #ececec; } 
.bg { float:left; width: 100px; height: 100px; margin: 8px 5px 0 auto; padding: 10px; border: 1px solid #ccc; } 
.text2 { width: 200px; } 
.bgColor { border: 1px dashed #f00; } 
</style> 
<script type="text/javascript" src="jquery-1.6.1.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
var move = false; // 移动的初始化 
var $bg = $(".bg"); 
var initDiv, tarDiv, tarDivHalf = 0, wHalf = 0; //拖拽对象 目标对象 
var initPos = {x: 0, y: 0}, relPos = {x: 0, y: 0}, temPos = {x: 0, y: 0}; 
var dragPos = {x1: 0, x2: 0, y1: 0, y2: 0};// 拖拽对象的四个坐标 
var tarDivPos = {x1: 0, y1: 0, x2: 0, y2: 0}; //目标对象的四个坐标 
$(".bor").each(function() { 
$(this).mousedown(function(event) { 
borSub = $(this).index(); 
initDiv = $(".bor").eq(borSub); //拖拽对象 
// 鼠标 与 目标元素的相对坐标 
relPos.x = event.pageX - $(this).offset().left; 
relPos.y = event.pageY - $(this).offset().top; 
move = true; 
}); 
$(document).mousemove(function(event) { 
if (!move) { return false; } 
// 下列代码是 if(move)的 程序 
initDiv.removeClass("bor").addClass("borp"); 
// 目标元素随鼠标移动的坐标 
dragPos.x1 = event.pageX - relPos.x; 
dragPos.y1 = event.pageY - relPos.y; 
dragPos.x2 = dragPos.x1 + initDiv. innerWidth(); 
dragPos.y2 = dragPos.y1 + initDiv. innerHeight(); 
initDiv.css({ left: dragPos.x1 +'px', top: dragPos.y1 + 'px' }); 
$bg.each(function() { 
tarDiv = $(this); 
// 目标对象的坐标 
tarDivPos.x1 = tarDiv.offset().left; 
tarDivPos.x2 = tarDivPos.x1 + tarDiv.width(); 
tarDivPos.y1 = tarDiv.offset().top; 
tarDivPos.y2 = tarDivPos.y1 + tarDiv.height(); 
tarDivHalf = tarDiv.height()/2; //临时变量,以便于在if判断中使用 
wHalf = tarDiv.width()/2; 
if (dragPos.x2 >= tarDivPos.x1 + wHalf && dragPos.x2 <= tarDivPos.x2 + wHalf && dragPos.y2 >= tarDivPos.y1 + tarDivHalf && dragPos.y2 <= tarDivPos.y2 + tarDivHalf ) { 
if(tarDiv.children().length >0 ) {return false;}// 解决重叠元素 移动到一个目标元素 
tarDiv.removeClass("bg").addClass("bg bgColor"); 
} else { 
tarDiv.removeClass("bgColor"); 
} 
}); 
}).mouseup (function(event) { 
initDiv.appendTo($(".bgColor"));// 利用 apppendTo 方法 使拖动元素对象添加到指定的区域。 
initDiv.removeClass("borp").addClass("bor").removeAttr("style"); //恢复拖拽对象初始的样式 
move = false; 
}); 
}); 
}); 
</script> 
</head> 
<body> 
<div class="box"> 
<div class="bor">bor1</div> 
<div class="bor">bor2</div> 
<div class="bor">bor3</div> 
</div> 
<div class="box2"> 
<div class="bg" id="bg1"></div> 
<div class="bg" id="bg2"></div> 
<div class="bg" id="bg3"></div> 
<div class="bg" id="bg4"></div> 
<div class="bg" id="bg5"></div> 
<div class="bg" id="bg6"></div> 
<div class="bg" id="bg7"></div> 
<div class="bg" id="bg8"></div> 
<div class="bg" id="bg9"></div> 
<div class="bg" id="bg10"></div> 
<div class="bg" id="bg11"></div> 
<div class="bg" id="bg12"></div> 
<div class="bg" id="bg13"></div> 
<div class="bg" id="bg14"></div> 
<div class="bg" id="bg15"></div> 
<div class="bg" id="bg16"></div> 
<div class="bg" id="bg17"></div> 
<div class="bg" id="bg18"></div> 
<div class="bg" id="bg19"></div> 
<div class="bg" id="bg20"></div> 
<div class="bg" id="bg21"></div> 
<div class="bg" id="bg22"></div> 
<div class="bg" id="bg23"></div> 
<div class="bg" id="bg24"></div> 
<div class="bg" id="bg25"></div> 
<div class="bg" id="bg26"></div> 
<div class="bg" id="bg27"></div> 
<div class="bg" id="bg28"></div> 
<div class="bg" id="bg29"></div> 
<div class="bg" id="bg30"></div> 
<div class="bg" id="bg31"></div> 
<div class="bg" id="bg32"></div> 
<div class="bg" id="bg33"></div> 
<div class="bg" id="bg34"></div> 
<div class="bg" id="bg35"></div> 
<div class="bg" id="bg36"></div> 
<div class="bg" id="bg37"></div> 
<div class="bg" id="bg38"></div> 
<div class="bg" id="bg39"></div> 
</div> 
<div class="clear"></div> 
</body> 
</html>
Javascript 相关文章推荐
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
jQuery的12招常用技巧分享
Aug 08 Javascript
mailto的使用技巧分享
Dec 21 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
jQuery实现的多滑动门,多选项卡效果代码
Mar 28 Javascript
js 模仿锚点定位的实现方法
Nov 19 Javascript
浅谈js原生拖放
Nov 21 Javascript
js canvas实现QQ拨打电话特效
May 10 Javascript
Angular中点击li标签实现更改颜色的核心代码
Dec 08 Javascript
解决vue跨域axios异步通信问题
Apr 17 Javascript
Vue3.x源码调试的实现方法
Oct 13 Javascript
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 #Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 #Javascript
Dom操作之兼容技巧分享
Sep 20 #Javascript
js获取图片大小的函数代码
Sep 20 #Javascript
javascript中的注释使用与注意事项小结
Sep 20 #Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 #Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 #Javascript
You might like
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
基于node.js实现微信支付退款功能
2017/12/19 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
社团成立邀请函
2014/01/08 职场文书
报关专员求职信范文
2014/02/22 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
立志成才演讲稿
2014/09/04 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP