为啥HTML5拖放dragImage隐藏时不显示?

Posted

技术标签:

【中文标题】为啥HTML5拖放dragImage隐藏时不显示?【英文标题】:Why HTML5 drag and drop dragImage is not displayed when it's hidden?为什么HTML5拖放dragImage隐藏时不显示? 【发布时间】:2012-05-12 18:37:46 【问题描述】:

我在将 html5 拖放中的 'dragImage' 设置为 div 元素时遇到了问题。 问题是当 setDragImage(helper, x, y) 函数的第一个参数没有出现在 dom 中或被隐藏时,当 'dragstart' 事件被触发时它是不可见的。 看看我的小提琴:http://jsfiddle.net/AemN5/10/

在小提琴中,我正在渲染助手(它被着色为黄色),而不是 尝试拖动绿色可拖动框,当鼠标附加助手时 拖动开始。但是,请尝试单击帮助程序上方的按钮 隐藏助手。比再次尝试拖动绿色可拖动框 - 没有帮助 附在我的鼠标上。

任何想法为什么会发生以及更重要的是如何解决问题?因为我的主要目标是拥有不可见的助手,并且只有当用户开始拖动时才使其可见,附加到光标上。

【问题讨论】:

【参考方案1】:

这是一种可能的解决方案http://jsfiddle.net/AemN5/12/

【讨论】:

看起来不错,尤其是当您将 overflow: hidden 添加到 body 元素时!【参考方案2】:

尝试这样做.. chrome 要求至少在拖动开始之前显示图像。

$("[draggable]").on("dragstart", function(e) 
    $("#img1").show();

    e.originalEvent.dataTransfer.setDragImage(helper, 50, 50);

    setTimeout(function()
        $("#img1").hide();
    ,0);
);

【讨论】:

dragstart 事件在 Magento 2 中不起作用。有什么想法吗?

以上是关于为啥HTML5拖放dragImage隐藏时不显示?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 HTML5 拖放功能在 Firefox 中不起作用?

使用 HTML5 拖放,有没有办法在保持拖动流的同时隐藏元素

HTML5 DnD - 为啥在拖放元素后重影图像只能按预期工作?

为啥我的导航栏在向下滚动时不隐藏而在向上滚动时出现?

在 wxPython 中跨面板拖放图像

Chrome 跨框架拖放:为啥它可以跨浏览器工作?