html5拖拽后保存位置,利用HTML5 的拖放Drag 相关的API,怎么实现拖动的对象离开原来的位置...

仅提供思路。

H5的原生拖放只是允许监听鼠标拖拽事件,并允许传递自定义数据。具体实现什么行为,需要自己写。

如果用原生拖放,自己实现的部分,逻辑类似下面这句话:

child_1.insertBefore(child_2);

child_1是dragstart时候得到的,而child_2的获取需要在drop时通过相对位置计算得出来的,只有这部分在整个实现中比较繁琐。

原生拖放在实现这种拖拽移动DOM的表现上,体验不如用监听鼠标事件来得好。原生拖放在拖拽过程中没办法实现被拖拽的元素跟随鼠标移动的效果。但用鼠标事件实现起来相对更复杂一些。

鼠标拖拽实现基于absolute position布局。每个子元素监听mousedown事件,父元素监听mouseover和mouseup事件。在mousedown时记录被拖拽的元素位置信息和鼠标位置信息。在mouseover中根据鼠标位置相对变化不停计算被拖拽元素最新的位置,并改变其位置,实现被拖拽元素跟着鼠标走的效果。并且可以同时计算如果此刻松开鼠标,这个元素应该被放置到什么位置,利用这个数据,不仅可以在mouseup时直接调整元素位置,还可以在mouseover过程中调整其他元素位置来实现移动提示效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值