基于jquery完美拖拽,可返回拖动轨迹


Posted in Javascript onMarch 29, 2012
<!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> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>完美拖拽</title> 
<style type="text/css"> 
html, body { 
overflow:hidden; 
} 
body, div, h2, p { 
margin:0; 
padding:0; 
} 
body { 
color:#fff; 
background:#000; 
font:12px/2 Arial; 
} 
p { 
padding:0 10px; 
margin-top:10px; 
} 
span { 
color:#ff0; 
padding-left:5px; 
} 
#box { 
position:absolute; 
width:300px; 
height:150px; 
background:#333; 
border:2px solid #ccc; 
top:150px; 
left:400px; 
margin:0; 
} 
#box h2 { 
height:25px; 
cursor:move; 
background:#222; 
border-bottom:2px solid #ccc; 
text-align:right; 
padding:0 10px; 
} 
#box h2 a { 
color:#fff; 
font:12px/25px Arial; 
text-decoration:none; 
outline:none; 
} 
</style> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(function(){ 
var bDrag = false; 
var _x,_y; 
var $box=$("#box") 
var aPos = [{ 
x: $("#box").offset().left, 
y: $("#box").offset().top 
}]; 
$("span:eq(1)").text(aPos[0].y); 
$("span:eq(2)").text(aPos[0].x); 
$("#box h2:first").mousedown(function(event){ 
var e=event || window.event; 
bDrag = true; 
_x=e.pageX-$box.position().left; 
_y=e.pageY-$box.position().top; 
return false 
}) 
$(document).mousemove(function(event){ 
if(!bDrag) return false; 
var e=event || window.event; 
var x=e.pageX-_x; 
var y=e.pageY-_y; 
var maxL = $(document).width() - $box.outerWidth(); 
var maxT = $(document).height() - $box.outerHeight(); 
x = x < 0 ? 0: x; 
x = x > maxL ? maxL: x; 
y = y < 0 ? 0: y; 
y = y > maxT ? maxT: y; 
$box.css({left:x,top:y}); 
aPos.push({ 
x: x, 
y: y 
}); 
status() 
return false 
}).mouseup(function(){ 
bDrag = false; 
status() 
return false 
}) 
$("#box h2:first a").click(function(){ 
if (aPos.length == 1) return; 
var timer = setInterval(function() { 
var oPos = aPos.pop(); 
oPos ? ($box.css({left : oPos.x + "px", top : oPos.y + "px"})) : clearInterval(timer) 
status(); 
},30); 
}).mousedown(function(){return false}) 
function status() { 
$("#box span:eq(0)").text(bDrag); 
$("#box span:eq(1)").text($box.position().top); 
$("#box span:eq(2)").text($box.position().left); 
} 
status() 
}) 
</script> 
</head> 
<body> 
<div id="box"> 
<h2><a href="javascript:;">点击回放拖动轨迹</a></h2> 
<p><strong>Drag:</strong><span></span></p> 
<p><strong>top:</strong><span></span></p> 
<p><strong>left:</strong><span></span></p> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Sep 22 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
jQuery 遍历map()方法详解
Nov 04 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
Feb 20 Javascript
Bootstrap table使用方法总结
May 10 Javascript
vue使用Google地图的实现示例代码
Dec 19 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 Javascript
了解前端理论:rscss和rsjs
May 23 Javascript
vue中监听返回键问题
Aug 28 Javascript
ES6扩展运算符和rest运算符用法实例分析
May 23 Javascript
JavaScript基于SVG的图片切换效果实例代码
Dec 15 Javascript
Javascript面向对象扩展库代码分享
Mar 27 #Javascript
用Javascript实现Windows任务管理器的代码
Mar 27 #Javascript
推荐30个新鲜出炉的精美 jQuery 效果
Mar 26 #Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 #Javascript
jquery星级插件、支持页面中多次使用
Mar 25 #Javascript
JQuery实现倒计时按钮的实现代码
Mar 23 #Javascript
JQuery防止退格键网页后退的实现代码
Mar 23 #Javascript
You might like
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
跟老齐学Python之for循环语句
2014/10/02 Python
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
Python的in,is和id函数代码实例
2020/04/18 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
一些Unix笔试题和面试题
2012/09/25 面试题
优秀村官事迹材料
2014/01/10 职场文书
致400米运动员广播稿
2014/02/07 职场文书
情人节活动策划方案
2014/02/27 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
市场督导岗位职责
2015/04/10 职场文书
停车场管理制度范本
2015/08/05 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python