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 相关文章推荐
json 定义
Jun 10 Javascript
js身份证验证超强脚本
Oct 26 Javascript
jquery一般方法介绍 入门参考
Jun 21 Javascript
基于jquery的图片轮播 tab切换组件
Jul 19 Javascript
Jquery中offset()和position()的区别分析
Feb 05 Javascript
jquery实现两边飘浮可关闭的对联广告
Nov 27 Javascript
微信小程序实现全局搜索代码高亮的示例
Mar 30 Javascript
浅谈Angular HttpClient简单入门
May 04 Javascript
JavaScript闭包原理与用法实例分析
Aug 10 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
Sep 21 Javascript
vue中过滤器filter的讲解
Jan 21 Javascript
js中对象与对象创建方法的各种方法
Feb 27 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
Yii学习总结之安装配置
2015/02/22 PHP
php实现Mysql简易操作类
2015/10/11 PHP
PHP文件操作实例总结
2016/09/27 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
js常用DOM方法详解
2017/02/04 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
Python绘制的二项分布概率图示例
2018/08/22 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
python 调用钉钉机器人的方法
2019/02/20 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
企划专员岗位职责
2013/12/09 职场文书
办理信用卡工作证明
2014/09/30 职场文书
2014年纪检工作总结
2014/11/12 职场文书
正规借条模板
2015/05/26 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
总结python多进程multiprocessing的相关知识
2021/06/29 Python
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js