打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一个使用Jquery写的一个鼠标拖动效果
近日项目中要做一个鼠标拖拽层的效果,于是手动使用Jquery做了一个,发出来跟大伙儿分享一下,并希望能得到高手的指点,如果哪位大侠觉得我的思路和代码不正确或者需要改进的话,希望能指点一二,在下感激不尽。

     我的思路是这样的:

     1、在鼠标按下的时候,捕获鼠标的当前位置;

     2、得到要移动对象的当前位置信息;

     3、鼠标移动时,计算鼠标移动的距离,将这个距离更新到对象的位置,在我的代码中,我试用绝对定位来表示对象的位置;

     4、当鼠标移出对象或者鼠标弹起的时候,则认为对象处于不能移动的状态。这个在我的代码中使用一个bool类型的变量isMouseDown表示,当这个变量为true的时候,则说明对象处于可移动状态,如果为false的时候,表示对象处于不可移动状态。鼠标移出对象或者弹出的时候,就将isMouseDown置为false。

    好了,思路就是这样,下面将代码贴出来,如果我的思路中表达的不清楚的话,可以在代码中看出来:

    注:依照楼下的建议调整了一下代码,基本上兼容浏览器,但是鼠标移动太快的时候就会出现不能移动,这一点如果有哪位大侠知道的话还请指点一下

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2  <html xmlns="http://www.w3.org/1999/xhtml" > 3  <head> 4      <title>使用鼠标拖动层代码</title> 5      <style type="text/css"> 6          #Main 7          { 8              width:400px; 9              height:400px;10              position:absolute;11              top:10px;12              left:0;13              border:1px solid #CCC;14              border-radius:5px;15              background-color:Green;16          }17          h318          {19              margin:0;20              width:400px;21              height:40px;22              background-color:Gray;23              cursor:move;24              line-height:40px;25              border-radius:5px 5px 0 0;26          }27      </style>28      <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>29      <script type="text/javascript">30          //注册一个Jquery的鼠标拖动函数,参数为要拖动的对象31          $.fn.extend({ SliderObject: function (objMoved) {32              var mouseDownPosiX;33              var mouseDownPosiY;34              var InitPositionX;35              var InitPositionY;36              var obj = $(objMoved) == undefined ? $(this) : $(objMoved);37              $(this).mousedown(function (e) {38                  //当鼠标按下时捕获鼠标位置以及对象的当前位置39                  mouseDownPosiX = e.pageX;40                  mouseDownPosiY = e.pageY;41 42                  InitPositionX = obj.css("left").replace("px", "");43                  InitPositionY = obj.css("top").replace("px", "");44                  obj.mousemove(function (e) {//这个地方改成$(document).mousemove貌似可以避免因鼠标移动太快而失去焦点的问题45                      //貌似只有IE支持这个判断,Chrome和Firefox还没想到好的办法46                      //if ($(this).is(":focus")) {47                          var tempX = parseInt(e.pageX) - parseInt(mouseDownPosiX) + parseInt(InitPositionX);48                          var tempY = parseInt(e.pageY) - parseInt(mouseDownPosiY) + parseInt(InitPositionY);49                          obj.css("left", tempX + "px").css("top", tempY + "px");50                      //};51                      //当鼠标弹起或者离开元素时,将鼠标弹起置为false,不移动对象52                  }).mouseup(function () {53                      obj.unbind("mousemove");54                  }).mouseleave(function () {55                      obj.unbind("mousemove");56                  });57              })58          }59          });60      $(document).ready(function () {61          $("h3").SliderObject($("#Main"));62      })63      </script>64  </head>65  <body>66      <div id="Main">67          <h3>鼠标放在这里拖动我</h3>68          <div id="Container">可以使用鼠标拖动的层</div>69      </div>70  </body>71  </html>

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
jquery鼠标拖动层插件实例
javascript 拖拽
基于 JQuery 的动态罗盘时钟
图片无缝滚动-jquery插件
jQuery实现textarea高度自适应
JS按钮控制内容上下滚动
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服