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 相关文章推荐
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
简述JavaScript中正则表达式的使用方法
Jun 15 Javascript
js HTML5 Ajax实现文件上传进度条功能
Feb 13 Javascript
JavaScript深度复制(deep clone)的实现方法
Feb 19 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
React学习笔记之条件渲染(一)
Jul 02 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
小程序云开发部署攻略(图文教程)
Oct 30 Javascript
js实现无刷新监听URL的变化示例代码详解
Jun 03 Javascript
vue 插槽简介及使用示例
Nov 19 Vue.js
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
第七节--类的静态成员
2006/11/16 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
python算的上脚本语言吗
2020/06/22 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
公务员个人自我评价分享
2013/11/06 职场文书
门卫工作岗位职责
2013/12/17 职场文书
双十佳事迹材料
2014/01/29 职场文书
社会发展项目建议书
2014/08/25 职场文书
工作检讨书大全
2015/01/26 职场文书
承兑汇票延期证明
2015/06/23 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang