我正在尝试使用代理事件(on-mousedown、up、move、out)使用 RactiveJS 实现一个简单的可拖动 DIV
跟随JSFiddle工作得很好,但是当用户移动鼠标太快时,拖动停止。这仅仅是因为在我的例子中,mouseevent 处理程序位于 DIV 标记而不是正文或文档元素上。我的最终想法是创建一个滑块组件,但是我正在寻求提供最佳的用户体验并使这项工作更像 JQuery 的可拖动。
模板:
<div class="rect {{drag ? 'dragging' : ''}}"
on-mousedown="startDrag"
on-mouseup="stopDrag"
on-mouseout="stopDrag"
on-mousemove="drag"
style="top:{{top}}px; left:{{left}}px;">
</div>
活性实例:
var ractive = new Ractive({
el: "#content",
template: "#template",
data: {left:20,top:80}
});
ractive.on({
startDrag : function (event) {
this.set({
'drag': true,
'mouseX': event.original.clientX - this.get('left'),
'mouseY': event.original.clientY - this.get('top')
});
},
stopDrag : function (event) {
this.set('drag', false);
},
drag : function (event) {
if(this.get('drag')) {
var x = event.original.clientX,
y = event.original.clientY;
this.set({
top: y - this.get('mouseY') ,
left: x - this.get('mouseX')
});
event.original.stopPropagation();
}
}
})
如何改进上述代码?