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游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
Jan 23 Javascript
javascript自启动函数的问题探讨
Oct 05 Javascript
open 动态修改img的onclick事件示例代码
Nov 13 Javascript
jQuery插件expander实现图片翻转特效
May 21 Javascript
快速学习jQuery插件 Form表单插件使用方法
Dec 01 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
jquery.validate表单验证插件使用详解
Jun 21 jQuery
Angularjs自定义指令实现分页插件(DEMO)
Sep 16 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 jQuery
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 Javascript
详解Vscode中使用Eslint终极配置大全
Nov 08 Javascript
layui前端时间戳转化实例
Nov 15 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
php 设计模式之 单例模式
2008/12/19 PHP
php 404错误页面实现代码
2009/06/22 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python记录详细调用堆栈日志的方法
2015/05/05 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python元组知识点总结
2019/02/18 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
python实现批处理文件
2020/07/28 Python
聊聊python中的循环遍历
2020/09/07 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
经销商培训邀请函
2014/01/21 职场文书
民主生活会汇报材料
2014/12/15 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书