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 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
jquery 动态创建元素的方式介绍及应用
Apr 21 Javascript
jquery实现图片灯箱明暗的遮罩效果
Nov 15 Javascript
JavaScript计划任务后台运行的方法
Dec 18 Javascript
AngularJS进行性能调优的7个建议
Dec 28 Javascript
javascript中的作用域和闭包详解
Jan 13 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
Nov 09 Javascript
整理关于Bootstrap导航的慕课笔记
Mar 29 Javascript
react 创建单例组件的方法
Apr 26 Javascript
Promise.all中对于reject的处理方法
Aug 01 Javascript
layer扩展打开/关闭动画的方法
Sep 23 Javascript
React 父子组件通信的实现方法
Dec 05 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/02/20 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
jquery maxlength使用说明
2011/09/09 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
用javascript实现倒计时效果
2021/02/09 Javascript
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
详解python中的文件与目录操作
2017/07/11 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
英语专业毕业生自荐信范文
2013/12/31 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
感谢信模板大全
2015/01/23 职场文书
安全责任书
2015/01/29 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
Spring实现内置监听器
2021/07/09 Java/Android
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers