基于jquery的一个简单拖拽功能
2011-09-08 17:49
597 查看
拖拽功能,首先是需要 mousedown,mousemove,mouseup 这三个事件的,然后最主要的是怎么样计算 目标元素 随鼠标移动的坐标 。
1. 在mousedown事件里,获取鼠标点击时的坐标:initPos.x | initPos.y 和 目标元素的坐标: $target.offset().left | $target.offset().top, 计算出 当时鼠标 相对 目标元素左上角的 坐标relPos.x = initPos.x - $target.offset().left , relPosy = initPos.y- $taget.offset().top。
2. 在mousemove 事件里,获取鼠标移动的坐标, event.pageX 和 event.pageY; 目标元素最后的坐标便是: movePos.x = event.pageX - relPos.x; movePos.y = event.pageY- relPos.Y; (这个不理解的画个草图就知道怎么回事了)
3. 在mouseup事件里,停止。
具体的代码如下:
1. 在mousedown事件里,获取鼠标点击时的坐标:initPos.x | initPos.y 和 目标元素的坐标: $target.offset().left | $target.offset().top, 计算出 当时鼠标 相对 目标元素左上角的 坐标relPos.x = initPos.x - $target.offset().left , relPosy = initPos.y- $taget.offset().top。
2. 在mousemove 事件里,获取鼠标移动的坐标, event.pageX 和 event.pageY; 目标元素最后的坐标便是: movePos.x = event.pageX - relPos.x; movePos.y = event.pageY- relPos.Y; (这个不理解的画个草图就知道怎么回事了)
3. 在mouseup事件里,停止。
具体的代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试的</title> <style type="text/css"> body, div { margin: 0; paading: 0; font-size: 12px; } ul, li { margin: 0; padding: 0; list-style: none; } .clear { clear: both; width: 1px; height: 0px; line-height: 0px; font-size: 1px; } .box { width: 960px; margin: 0 auto; padding-top: 15px; } .bor { width: 100px; height: 80px; margin: 12px; padding: 10px; border: 1px solid #ccc; background: #ececec; } </style> <script type="text/javascript" src="jquery-1.6.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ var move = false; // 移动状态 var zIndexCount = 0; // css 中 z-index标识 var $bor = $(".bor"), target = null, goal = null; var initPos = {x: 0, y: 0}, relPos = {x: 0, y: 0}, movePos = {x: 0, y: 0}; // 初始坐标 和 拖拽最后的位置坐标 也可以这样设置 var initX = 0, initY = 0, rX = 0, rY = 0; var borCount = $bor.length; $bor.each(function() { $(this).mousedown(function(event) { $target = $(this); // 鼠标点击的初始位置 initPos.x = event.pageX; initPos.y = event.pageY; goal = $bor.eq($target.index()) // 鼠标点击时 相对 目标元素左上角的位置。 relPos.x = initPos.x - $target.offset().left; relPos.y = initPos.y - $target.offset().top; move = true; zIndexCount++; $target.css({ position: "absolute", zIndex: zIndexCount }); }); $(document).mousemove(function(event) { if(move) { //目标元素新的坐标。 movePos.x = event.pageX - relPos.x; movePos.y = event.pageY - relPos.y; goal.css({ left: movePos.x + "px", top: movePos.y + "px" }); } }).mouseup(function() { move = false; }); }); }); </script> </head> <body> <div class="box"> <div class="bor">box1</div> <div class="bor">box2</div> <div class="bor">box3</div> <div class="bor">box4</div> <div class="bor">box5</div> <div class="clear"></div> </div> </body> </html>
相关文章推荐
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
- EasySlider 基于jQuery功能强大简单易用的滑动门插件
- 基于Java的一个简单的文件上传下载功能
- 使用jQuery开发一个基于HTML5的漂亮图片拖拽上传web应用
- 一个简单的基于jquery的表单输入提示案例
- jQuery实现的简单鼠标拖拽功能
- 基于jQuery实现拖拽图标到回收站并删除功能
- 使用 ADD-ON SDK 开发 基于 Html JQuery 和 CSS 的 firefox 插件入门教程1: 创建一个简单的 Add-on
- 使用jQuery开发一个基于HTML5的漂亮图片拖拽上传web应用
- 一个基于jquery回到顶部的简单代码
- 基于jQuery的一个简单聊天室
- 一个简单的基于jQuery的焦点图(幻灯片)代码
- 一个简单的jQuery计算器实现了连续计算功能
- 一个简单的jQuery计算器实现了连续计算功能
- 一个基于jQuery的简单树形菜单
- 使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传
- 一个最简单的基于PHP+jQuery的AJAX例子
- 基于JQuery的一个简单的鼠标跟随提示效果
- EasilyUI的一个简单的拖拽功能
- jQuery实现的简单拖拽功能示例