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 解析json的代码
Dec 16 Javascript
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
jQuery遍历Form示例代码
Sep 03 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
jQuery树形下拉菜单特效代码分享
Aug 15 Javascript
12 款 JS 代码测试必备工具(翻译)
Dec 13 Javascript
jQuery快速高效制作网页交互特效
Feb 24 Javascript
Angular中支持SCSS的方法
Nov 18 Javascript
JS实现的邮箱提示补全效果示例
Jan 30 Javascript
vue axios请求拦截实例代码
Mar 29 Javascript
小程序实现投票进度条
Nov 20 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 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/03/24 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
自动更新作用
2006/10/08 Javascript
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
python非递归全排列实现方法
2017/04/10 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
Python同步遍历多个列表的示例
2019/02/19 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
给老师的道歉信
2014/01/11 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
租赁协议书
2015/01/27 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript