【问题标题】:Drag image below another image using jquery draggable使用 jquery draggable 将图像拖动到另一个图像下方
【发布时间】:2012-10-24 11:20:55
【问题描述】:

我有一个背景图片,其中有一个洞,这样我们就可以看到它下面的内容。 我在背景图像下方放置了另一个图像,以便通过孔可以看到它。现在我需要从透明孔中拖动下面的图像。

背景图片:

我正在使用 z-index 将另一个图像放在它后面并将可拖动的图像与它相关联。如果我在圆形孔上拖动,我希望下面的图像可以拖动。 目前它不会发生,因为我已将 draggable 与后面的另一个 div 相关联,并且我正在拖动它上方的 div。如何使上方 div 上的拖动事件传播到下方 div 并被拖动?

我希望我在这里很清楚。

我的 div 的:

<div class="container">
 <div id="screen">
    <img src="kailash.jpg" class="drag-image" id="draggable"/>
 </div>
 <div id="bg">
    <img src="final.png"/>
 </div>
</div>

编辑:也可以接受任何其他方法来实现这一点。 添加了JsFiddle 示例

编辑:Asad 在下面给出了很好的解决方案,但它在 IE 和 Opera 中不起作用。虽然这可以通过使用触发器来实现。 只需在 Asad 的解决方案中添加此代码:

 $("#bg").mousedown(function(event){
     $("#draggable").trigger(event);
 }); 

并删除:

pointer-events: none

来自 CSS。你可以在这里找到工作示例(跨浏览器):JsFiddle

希望这也有助于其他人:)

【问题讨论】:

标签: jquery jquery-ui-draggable


【解决方案1】:

这是一个有效的example。我只是在 bg div 上设置了pointer-events:none; 并包含图像。

编辑:正如 kailash 在下面指出的那样,我最初的建议是更兼容浏览器,所以我在这里转发它以供后代使用:

$('#bg').mousedown(function(ev) {
    $('#screen').trigger(ev);
});

【讨论】:

  • 它的作品,谢谢。你能解释一下吗?也可以从图像的任何部分进行拖动,我能否以某种方式使其仅在单击孔时才可拖动?
  • 是的,我现在正在努力。解释很简单;将指针事件设置为无意味着该元素现在对鼠标交互是透明的。
  • @kailash19 Here 是一个有点错误的实现。这个想法是如果鼠标在圆圈之外,则触发 mouseup。问题是我必须估计圆的半径和圆心的坐标。
  • 感谢它的工作原理:),但有点错误,因为重复点击外部实际上可以缓慢移动图像:P。我会接受你的回答。
  • 您可能需要对其进行一些改进,但它应该可以作为一种通用方法。
【解决方案2】:

移动上面的 div 时会触发 drag event。使用它,只需根据 div 的位置更改下图的位置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多