基于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滚动条多种样式,推荐
Feb 05 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
Jan 05 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
浅谈Vue下使用百度地图的简易方法
Mar 23 Javascript
node打造微信个人号机器人的方法示例
Apr 26 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
vue.js实现二级菜单效果
Oct 19 Javascript
js实现简单掷骰子小游戏
Oct 24 Javascript
前端实现滑动按钮AJAX与后端交互的示例代码
Feb 24 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 set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
php表单提交问题的解决方法
2011/04/12 PHP
解析PHP工厂模式的好处
2013/06/18 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
面试常见的js算法题
2017/03/23 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
python编写的最短路径算法
2015/03/25 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
解析python的局部变量和全局变量
2019/08/15 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
销售行业个人求职自荐信
2013/09/25 职场文书
师范大学应届生求职信
2013/11/21 职场文书
小学教师国培感言
2014/02/08 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
三爱活动实施方案
2014/03/19 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers