在HTML5拖动期间隐藏/自定义光标

时间:2015-08-05 10:31:56

标签: jquery css html5 drag-and-drop

我想在HTML5拖动操作期间自定义鼠标光标,因为将rowDragImage设置为表示被拖动对象(不是在IE中)的东西是一回事,但是叠加标准鼠标光标通常看起来非常糟糕。当'DragImage'很小并且无法控制'DragImage'的不透明度时尤其如此。

我在放置目标上指定了各种CSS游标,但在拖动过程中Chrome和Firefox都会禁用/忽略这些游标。这给我们留下了标准的没有吸引力的箭头和点缀框。

这是小提琴: http://jsfiddle.net/MCAU/wect6xuy/8/

这是HTML:

<img draggable id="i" src="http://icons.iconarchive.com/icons/icons8/windows-8/64/Diy-Paint-Bucket-icon.png"/>

<table>
    <tr>
        <td class="a">Copy</td>
        <td class="b">None</td>
    </tr>
    <tr>
        <td class="c">Move</td>
        <td class="d">Crosshair</td>
    </tr>
</table>

这是CSS:

td {
    padding: 30px;
    font-size: 2em;
    font-family: arial;
    border: 3px solid white;
    background-color: #eee;
    border-spacing: 10px;
}

.a {    cursor: copy;}
.b {    cursor: none;}
.c {    cursor: move;}
.d {    cursor: crosshair;}

img {
    cursor: move;
    cursor: -moz-grabbing;
}

这是jQuery:

var i = $('#i');

i.on('dragstart', function(e) {
    e.originalEvent.dataTransfer.setData('text', 'foo');
    e.originalEvent.dataTransfer.setDragImage(this, this.offsetWidth/2, this.offsetHeight/2);
});

$('td').on('dragenter, dragover', function(e) {
   e.preventDefault();
   e.stopPropagation();
    return false;
});

$('td').on('drop', function(e) {
    $(this).append(i);
    e.preventDefault();
});

有没有办法在HTML5拖动过程中隐藏或更改鼠标光标?

1 个答案:

答案 0 :(得分:-1)

刚遇到同样的问题。我找到了一个有帮手的工作解决方案。

这是脚本:

$('#i').draggable({
  helper: function(e) {
    return '<img id="drag" src="http://icons.iconarchive.com/icons/icons8/windows-8/64/Diy-Paint-Bucket-icon.png">';
  }
});

这必须添加到你的CSS ......

#drag {cursor: none;}

看小提琴 https://jsfiddle.net/wect6xuy/31/

请注意我已将jQuery UI添加到库中。这是我让它运行的唯一方式。

希望这有帮助