基于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 相关文章推荐
许愿墙中用到的函数
Oct 07 Javascript
js 中 document.createEvent的用法
Aug 29 Javascript
js 函数调用模式小结
Dec 26 Javascript
IE8下String的Trim()方法失效的解决方法
Nov 08 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
jQuery中:image选择器用法实例
Jan 03 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
JavaScript 对象详细整理总结
Sep 29 Javascript
详解vue渲染从后台获取的json数据
Jul 06 Javascript
JS删除String里某个字符的方法
Jan 06 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
Sep 29 Javascript
关于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
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python3中多线程编程的队列运作示例
2015/04/16 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
python基础教程之Filter使用方法
2017/01/17 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
详解python中的装饰器
2018/07/10 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
python3获取当前目录的实现方法
2019/07/29 Python
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
英语专业毕业生自荐信
2013/10/28 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
员工生日会策划方案
2014/06/14 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python