在我们拖动对象时对其进行样式设置

Posted

技术标签:

【中文标题】在我们拖动对象时对其进行样式设置【英文标题】:Styling the object while we are dragging it 【发布时间】:2013-06-20 03:06:34 【问题描述】:

我只是想知道如何使用 html5 的 Drag/Drop API 更改我们正在拖动的对象的样式。我在网上搜索但一无所获!看过本教程,但它没有提供有关在拖动对象时设置对象样式的信息。

有解决这个问题的办法吗?

另外,这可能吗?

【问题讨论】:

【参考方案1】:

部分可能 在 HTML5 中,您无法更改 ghost 对象的样式 但是您可以使用 来自 DataTransfer 对象的 setDragImage 方法。 这里打了个例子(蓝色的div拖拽的时候会变成红色的div):

  <style>
      #div1
        background-color:blue;
        width:100px;
        height:100px;
      
      #div2
        background-color:red;
        width:100px;
        height:100px;
      
    </style>
    ...
    <div id="div1" draggable="true" ></div>
    <br/>
    <div id="div2" ></div>
    <script>
      document.getElementById('div1').addEventListener('dragstart', function(event) 
        event.dataTransfer.setDragImage(document.getElementById('div2'),50,50);
      );
    </script>

http://jsfiddle.net/ftX3C/

所以你不能改变样式,但有一个隐藏元素可以用作幻像。它也可以是 img 或 canvas。

我推荐以下关于html5拖放的教程: http://www.html5rocks.com/en/tutorials/dnd/basics/

在完成该 tut 后,还可以阅读有关 DataTransfer 对象的信息: developer.mozilla.org/en-US/docs/Web/API/DataTransfer

【讨论】:

工作正常!我还添加了 e.offsetX、e.offsetY 作为第 2 和第 3 参数而不是 50、50。谢谢! 这不会在拖动时改变图像,而只会在拖动开始时改变。 @MichaelSchmid,你有没有找到在拖动时改变样式的方法? 不@Lossan,我没有。然后我放弃了 Drag-and-Drop API(出于这个和其他原因),并愉快地使用 javascript 库解决了我的问题。

以上是关于在我们拖动对象时对其进行样式设置的主要内容,如果未能解决你的问题,请参考以下文章

第 20 章 设置应用程序的样式并对其进行部署

如何在 C# (web) 中集中维护一个数学公式,以便在需要时对其进行更改?

性能 - NSValue 中的结构与容器对象

jQuery可拖动:在拖动开始时访问被拖动的元素

如何在 Gmail 邮件到达时对其进行编辑?

尝试在 SVG 笔画出现时对其进行动画处理,但没有运气