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 相关文章推荐
实现png图片和png背景透明(支持多浏览器)的方法
Sep 08 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
Dec 11 Javascript
js判断选择时间不能小于当前时间的示例代码
Sep 24 Javascript
jQuery实现Tab菜单滚动切换的方法
Sep 21 Javascript
jquery实现列表上下移动功能
Feb 25 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
js仿微博动态栏功能
Feb 22 Javascript
Node.js编写CLI的实例详解
May 17 Javascript
Angular 5.0 来了! 有这些大变化
Nov 15 Javascript
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 Javascript
Vue-router中hash模式与history模式的区别详解
Dec 15 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
PHP新手上路(六)
2006/10/09 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
Smarty3配置及入门语法
2017/02/22 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
javascript中Function类型详解
2015/04/28 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
电气专业应届生求职信
2013/11/01 职场文书
矿泉水广告词
2014/03/20 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
辞职信标准格式
2015/02/27 职场文书
优秀团员自我评价
2015/03/10 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL