jQuery拖动div、移动div、弹出层实现原理及示例


Posted in Javascript onApril 08, 2014

代码演示:

http://www.imqing.com/demo/movediv.html

大概原理:

使div的position为绝对定位absolute,然后控制其top与left值,需要监听鼠标事件,主要用到mousedown, mousemove, mouseup。

在mousedown后,记录mousedown时鼠标与需要移动的div的位置,然后取得两者之差,得到在鼠标移动后,div的位置。即:

left = 当前鼠标位置.x - (鼠标点击时的.x值 - div的初始位置x值)
top = 当前鼠标位置.y - (鼠标点击时的.y值 - div的初始位置y值)

代码:

<!DOCTYPE html> 
<html lang="zh"> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<title>Qing's Web</title> 
<script src="./jquery-1.7.2.min.js" type="text/javascript"></script> 
<style type="text/css"> 
.footer { 
position: fixed; 
bottom: 0; 
width: 100%; 
} 
.moveBar { 
position: absolute; 
width: 250px; 
height: 300px; 
background: #666; 
border: solid 1px #000; 
} 
#banner { 
background: #52CCCC; 
cursor: move; 
} 
</style> 
</head> 
<body style="padding-top: 50px;"> <div class="moveBar"> 
<div id="banner">按住此处移动当前div</div> 
<div class="content">这里是其它内容</div> 
</div> 
<div class="footer"> 
<p align="center" class="label">ALL Rights Reserved Qing 版权所有</p> 
</div> 
<script> 
jQuery(document).ready( 
function () { 
$('#banner').mousedown( 
function (event) { 
var isMove = true; 
var abs_x = event.pageX - $('div.moveBar').offset().left; 
var abs_y = event.pageY - $('div.moveBar').offset().top; 
$(document).mousemove(function (event) { 
if (isMove) { 
var obj = $('div.moveBar'); 
obj.css({'left':event.pageX - abs_x, 'top':event.pageY - abs_y}); 
} 
} 
).mouseup( 
function () { 
isMove = false; 
} 
); 
} 
); 
} 
); 
</script> 
</body> 
</html>

其实代码量也不多的,嘿嘿。要点就是需要移动的div的position是绝对定位,然后检测鼠标事件就行了。嘿嘿。
Javascript 相关文章推荐
JavaScript 对象、函数和继承
Jul 07 Javascript
myEvent.js javascript跨浏览器事件框架
Oct 24 Javascript
Jquery实现搜索框提示功能示例代码
Aug 13 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
Dec 05 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 Javascript
浅析js实现网页截图的两种方式
Nov 01 Javascript
vue项目中锚点定位替代方式
Nov 13 Javascript
nuxt配置通过指定IP和端口访问的实现
Jan 08 Javascript
javascript跨域的4种方法和原理详解
Apr 08 #Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 #Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
Apr 07 #Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
Apr 06 #Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
Apr 06 #Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 #Javascript
当达到输入长度时表单自动切换焦点
Apr 06 #Javascript
You might like
处理php自动反斜杠的函数代码
2010/01/05 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
JavaScript 原型继承
2011/12/26 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
JS模板实现方法
2013/04/03 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
python计算对角线有理函数插值的方法
2015/05/07 Python
Python编程之多态用法实例详解
2015/05/19 Python
20个常用Python运维库和模块
2018/02/12 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
NumPy 数组使用大全
2019/04/25 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
好的自荐信的要求
2013/10/30 职场文书
电工实训报告总结
2014/11/05 职场文书
六年级数学教学反思
2016/02/16 职场文书
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android
Python实现Hash算法
2022/03/18 Python
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL