js实现简单拖拽功能

所属分类:输入-拖和放

 91783  375  查看评论 (9)
分享到微信朋友圈
X
js实现简单拖拽功能 ie兼容8

拖拽功能实现原理和说明:

1、说明:

拖拽实现一般有两种方式,一种是使用html的新特性dragable,但是由于在火狐浏览器上dragable每拖拽一次会打开一个新的标签,

尝试阻止默认行为和冒泡都无法解决,所以使用第二种方法来实现拖拽。第二种方法是使用js监听鼠标三个事件,配合节点操作来实现。

2、实现原理:

    01-在允许拖拽的节点元素上,使用on来监听mousedown(按下鼠标按钮)事件,鼠标按下后,克隆当前节点

    02-监听mousemove(鼠标移动)事件,修改克隆出来的节点的坐标,实现节点跟随鼠标的效果

    03-监听mouseup(放开鼠标按钮)事件,将原节点克隆到鼠标放下位置的容器里,删除原节点,拖拽完成。

3、优势:

    01-可动态添加允许拖拽的节点(因为使用了on委托事件)

    02-可获取到原节点,跟随节点,目标节点的对象,可根据需要进行操作。

    03-使用js实现,兼容性好。

4、实现过程在代码里都有注释。

相关插件-拖和放

鼠标拖动翻页

鼠标可以拖动表格来翻页,十分方便,界面也很漂亮
  拖和放
 29106  329

微信左划删除效果

微信左划出现删除按钮
  拖和放
 37070  421

图标拖拽效果,兼容所有浏览器

原生JS实现图标图片拖拽,封装好了,可以直接拿去使用
  拖和放
 38701  374

拖动排序插件

实现在两个div中,互相自由的拖动,并且排序
  拖和放
 51519  484

讨论这个项目(9)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

    lala001 0
    2023/3/15 9:23:01
    👍谢谢分享,好用 回复
    280453309 0
    2022/3/23 16:14:34
    简单,清晰,为作者点赞! 回复
    feeking 0
    2021/3/13 14:57:36
    赞👍,非常好用,感谢分享。 回复
    楠梓 0
    2018/11/15 10:01:46

    作者您好!我这边尝试着在第一个ul标签上增加了position: fixed;悬浮样式,第二个第三个ul标签height: 1000px; float: right;添加了加长和靠左浮动样式,然后再把滚动条滑到中间,然后克隆临时节点再乱跑
    测试代码:

    <div class="container"> 
        <ul style="background-color: rgb(255, 255, 240);position: fixed;"> 
            <li>A</li> 
            <li>B</li> 
            <li>e</li> 
            <li>f</li> 
            <li>g</li> 
         </ul> 
         <ul style="background-color: rgb(255, 255, 240); height: 1000px; float: right;"></ul> 
         <ul style="background-color: rgb(255, 255, 240); height: 1000px; float: right;"></ul> 
     </div>
    回复
    小? 0
    2017/11/20 13:48:44

    请问这个可以多个选择进行拖拽吗

    回复
    ???怃 0
    2017/8/25 17:02:40

    怎么没有说明文档

    回复
    ?☆Sunshine☆? 0
    2017/8/18 10:23:16

    拖放后点击事件会失效如何解决?

        ???怃 0
        2017/8/25 17:07:49
        注释没说吗?
    回复
    侠猪猪 0
    2017/4/18 17:43:38

    你好,我打算做个拖放的,怎么和你联系。

    回复
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
取消回复