基于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 相关文章推荐
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
Feb 24 Javascript
JQuery 中几个类选择器的简单使用介绍
Mar 14 Javascript
easyui datagrid 键盘上下控制选中行示例
Mar 31 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
jquery中$(#form :input)与$(#form input)的区别
Aug 18 Javascript
Angular2学习教程之ng中变更检测问题详解
May 28 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
Jan 07 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
May 12 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
Jul 22 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
Sep 11 Javascript
vue界面发送表情的实现代码
Sep 11 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实现用户认证及管理完全源码
2007/03/11 PHP
实用函数8
2007/11/08 PHP
PHP源码之explode使用说明
2011/08/05 PHP
PHP Reflection API详解
2015/05/12 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
python3抓取中文网页的方法
2015/07/28 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
python实现百度语音识别api
2018/04/10 Python
python中scikit-learn机器代码实例
2018/08/05 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
学生会个人总结范文
2015/02/15 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
详解Java实践之适配器模式
2021/06/18 Java/Android
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python