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 相关文章推荐
通过身份证号得到出生日期和性别的js代码
Nov 23 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
jQuery实现的动态伸缩导航菜单实例
May 07 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
Jun 07 Javascript
浅析jQuery 3.0中的Data
Jun 14 Javascript
Vue.js中数组变动的检测详解
Oct 12 Javascript
js微信扫描二维码登录网站技术原理
Dec 01 Javascript
BootStrap Fileinput的使用教程
Dec 30 Javascript
详解webpack介绍&amp;安装&amp;常用命令
Jun 29 Javascript
Vue中使用clipboard实现复制功能
Sep 05 Javascript
KOA+egg.js集成kafka消息队列的示例
Nov 09 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 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
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
使用Django清空数据库并重新生成
2020/04/03 Python
Django model class Meta原理解析
2020/11/14 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
生产班组长岗位职责
2014/01/05 职场文书
会议邀请书范文
2014/02/02 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL