jQuery鼠标拖动元素事件(实现拖动一个派蒙的效果)

jQuery鼠标拖动元素事件(实现拖动一个派蒙的效果)
1.引入jquery.js
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
2.实现原理

通过设置鼠标按下事件,鼠标移动事件,和鼠标弹起事件来完成整个效果。

2.1.获取可拖动元素位置
2.2.鼠标移动事件mousemove

​ 可以获取鼠标的位置,通过鼠标位置的偏移量(改变量)来确定想要拖动元素的新的位置。新位置 = 之前的位置 + 偏移量

2.3.设置可拖动范围

这个可以不做设置,那么元素则可以拖到浏览器窗口外面。

也可自己定义范围的大小,本例中范围设置成了浏览去窗口可视区域大小。

3.代码实现
3.1 html部分
  <div class="wrapper">
      <div class="paimeng"></button></div>
    </div>
3.2 css部分
.paimeng {
        background: url("https://www.icyakuya.website/jiaban/img/paimeng.gif");
        background-repeat: no-repeat;
        background-size: 100% 100%;
        top: 30%;
        left: 30%;
        width: 200px;
        height: 200px;
        border-radius: 50%;
        cursor: pointer;
        position: absolute;
      }
3.3 js部分
 $(function () {

   //获得可移动dom

   var paimeng = $(".paimeng").first();

   //存放数据的对象

   var date = {};

   //鼠标按下事件

   paimeng.mousedown(function (e) {

​    //获得鼠标偏移量

​    date.left = e.pageX;

​    date.top = e.pageY;

​    //console.log(date.left+"+++"+date.top);

​    //获取派萌初始位置

​    date.sPositionX = $(this).position().left;

​    date.sPositionY = $(this).position().top;

​    //console.log(date.sPositionX+"+++"+date.sPositionY);



​    //鼠标移动事件

​    $(document).mousemove(function (e) {

​     //新的偏移位置

​     date.newleft = e.pageX;

​     date.newtop = e.pageY;

​     //偏移量

​     date.x = date.newleft - date.left;

​     date.y = date.newtop - date.top;

​     //派萌 新的位置

​     date.newPositionX = date.sPositionX + date.x;

​     date.newPositionY = date.sPositionY + date.y;

​     if (date.newPositionY < 0) {

​      //当上边的偏移量小于0的时候,就是上边的临界点,就让新的位置为0

​      date.newPositionY = 0;}

​     //如果向下的偏移量大于文档对象的高度减去自身的高度,就让它等于这个高度

​     if (date.newPositionY > $(document).height() - paimeng.height()) {

​      date.newPositionY = $(document).height() - paimeng.height();}

​     //右限制

​     if (date.newPositionX > $(document).width() - paimeng.width()) {

​      date.newPositionX = $(document).width() - paimeng.width();}

​     if (date.newPositionX < 0) {

​      //左边的偏移量小于0的时候设置 左边的位置为0

​      date.newPositionX = 0;}

​     paimeng.css({left: date.newPositionX + "px",top: date.newPositionY + "px",});

​     //鼠标抬起事件

​     $(document).mouseup(function (e) {

​      $(document).off("mousemove");});});

   });

  });

****注意事项:
鼠标的按下事件包含鼠标的移动事件,鼠标的移动事件包含鼠标抬起事件,关系不能乱,嵌套关系。
另外鼠标的抬起事件中,写的事件是关闭鼠标移动事件。

3.5 派蒙的动图(自己拿,图片来自网络,如果侵权,联系删除)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

godlike-icy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值