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 相关文章推荐
JS option location 页面跳转实现代码
Dec 27 Javascript
js中的屏蔽的使用示例
Jul 30 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
Sep 29 Javascript
jquery attr方法获取input的checked属性问题
May 26 Javascript
深入分析Cookie的安全性问题
Mar 01 Javascript
JavaScript中字符串(string)转json的2种方法
Jun 25 Javascript
jquery使用ul模拟select实现表单美化的方法
Aug 18 Javascript
超链接怎么正确调用javascript函数
May 23 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 Javascript
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
js实现二级联动简单实例
Jan 11 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伪静态的实现详细介绍
2013/04/28 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
node中modules.exports与exports导出的区别
2018/06/08 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
深入理解Python中的内置常量
2017/05/20 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
Python3分析处理声音数据的例子
2019/08/27 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
保险专业大学生职业规划书
2014/03/03 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
销售员岗位职责
2014/06/09 职场文书
代领毕业证委托书
2014/08/02 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
新娘婚礼答谢词
2015/09/29 职场文书