我可以使用一些事件来处理拖放操作:
https://developer.mozilla.org/en/DragDrop/Drag_and_Drop
有一个drag
事件,它在元素被拖动时触发。我可以控制源元素的样式或目标可拖放容器,但如何设置浏览器创建的“ghost”元素的样式呢?
我想在元素位于不可拖动区域时删除“disabled”图标,并将其替换为“cursor-move”图标
以下是我目前掌握的情况:
http://jsfiddle.net/YkaCM/
我可以使用一些事件来处理拖放操作:
https://developer.mozilla.org/en/DragDrop/Drag_and_Drop
有一个drag
事件,它在元素被拖动时触发。我可以控制源元素的样式或目标可拖放容器,但如何设置浏览器创建的“ghost”元素的样式呢?
我想在元素位于不可拖动区域时删除“disabled”图标,并将其替换为“cursor-move”图标
以下是我目前掌握的情况:
http://jsfiddle.net/YkaCM/
5条答案
按热度按时间nsc4cvqm1#
您无法直接对其设置样式,因为它是开始拖动时元素外观的位图/副本:
http://jsfiddle.net/2EvGP/
编辑:
实际上,您可以通过在拖动开始时简单地更改元素的样式来实现这一点:http://jsfiddle.net/LULbV/
这在Chrome 19中工作得很完美,并根据你在Firefox 13中的拖动方式显示样式的变化。你需要在拖放时重置拖动元素的样式。
(Note我有一台相当快的电脑,所以我不确定这个黑客是否还能在慢机器上工作)
kuuvgm7e2#
另一种方法是只使用CSS,将元素的
:active
伪类样式化为所需的拖动样式。拖动副本将基于此状态创建。然而,原始元素将保留此样式,因为浏览器似乎将其保持
:active
直到删除。为了避免这种情况,我们可以在一个非常短的时间内运行的动画中指定此样式。足以让浏览器复制此样式,但不要太短。0.1s似乎足够用于Chrome、Safari和Firefox。https://jsfiddle.net/mLsw5ajr/
第一个
我在Firefox中发现的一个问题是,如果没有其他元素触发的事件(如drop),该元素将保持
:active
。要解决这个问题,我们可以在该元素外触发一个单击。rqqzpn5f3#
不太清楚其他浏览器,但是
dataTransfer
对象包含一个名为mozCursor
的属性。这允许您在拖动状态下更改光标,但这是Mozilla的属性。https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/mozCursor
在以下位置可以找到使用此选项的示例,在
dragstart
(设置为使用默认的“箭头”光标)、dragover
(设置为使用自动拖动光标(带副本的箭头))和dragleave
(重置为使用默认的“箭头”光标)上更改设置:http://jsfiddle.net/YkaCM/4/
请尝试以下问题的答案:
Javascript: How can I set the cursor during a drag & drop operation on a website?
使用以下内容更新了dragover:
http://jsfiddle.net/YkaCM/1/
eeq64g8w4#
基本上,您希望将特定样式应用于新创建的元素,这些元素是#droppable的子元素。
mfpqipee5#
你可以给被拖动的元素添加一个类,这样你就可以随意设置它的样式。
checkout https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/setData