Ich versuche, Jquery UI Sortable arbeiten mit dem Zoom zu bekommen. Das Problem ist, dass sich die Maus nicht mit derselben Geschwindigkeit bewegt wie das Element, das Sie ziehen. Es gibt einige Beispiele dafür, wie man mit Draggable arbeiten kann. Hier ist ein Beispiel für die Abhilfe für Ziehbare Artikel:So erhalten Sie JqueryUI Sortierbare Arbeit mit Zoom/Scale - Mausbewegungen
http://jsfiddle.net/TqUeS/660/
var zoom = $('#canvas').css('zoom');
var canvasHeight = $('#canvas').height();
var canvasWidth = $('#canvas').width();
$('.dragme').draggable({
drag: function(evt,ui)
{
// zoom fix
ui.position.top = Math.round(ui.position.top/zoom);
ui.position.left = Math.round(ui.position.left/zoom);
// don't let draggable to get outside of the canvas
if (ui.position.left < 0)
ui.position.left = 0;
if (ui.position.left + $(this).width() > canvasWidth)
ui.position.left = canvasWidth - $(this).width();
if (ui.position.top < 0)
ui.position.top = 0;
if (ui.position.top + $(this).height() > canvasHeight)
ui.position.top = canvasHeight - $(this).height();
}
});
ich das Drag-Ereignis durch das Sortieren Ereignis ersetzt werden in der Sortable Version dieser erwarten würde, aber wie können Sie von der sehen unter Geige funktioniert es nicht. Das Setzen von ui.position im sort-Ereignis hat keine Auswirkungen - es scheint es zu setzen und zu verwerfen, nachdem das Ereignis ausgelöst wurde.
http://jsfiddle.net/TqUeS/658/
var zoom = $('#canvas').css('zoom');
var canvasHeight = $('#canvas').height();
var canvasWidth = $('#canvas').width();
$('#canvas').sortable({
items: "div",
sort: function(evt,ui)
{
// zoom fix
ui.position.top = Math.round(ui.position.top/zoom);
ui.position.left = Math.round(ui.position.left/zoom);
// don't let draggable to get outside of the canvas
if (ui.position.left < 0)
ui.position.left = 0;
if (ui.position.left + $(this).width() > canvasWidth)
ui.position.left = canvasWidth - $(this).width();
if (ui.position.top < 0)
ui.position.top = 0;
if (ui.position.top + $(this).height() > canvasHeight)
ui.position.top = canvasHeight - $(this).height();
}
});
Wenn jemand eine andere Abhilfe hat, würde ich mich freuen, es zu hören.
Wenn ich mit dem ziehbaren testen, schiebt das Element in Richtung jeder Ecke. Ist das die erwartete Aktivität? Es scheint gut in sortierbar zu funktionieren. Vielleicht sehe ich das ganze Problem nicht. – Twisty
Testen hier: http://jsfiddle.net/Twisty/4nv60ob9/ Wenn ich '$ (" # canvas ") ersetzen. CSS (" Zoom ")' mit '0,5', bekomme ich tatsächliche Werte anstelle von' NaN' oder "Unendlichkeit". – Twisty
Es liest es als String mit einem Wert von "". An einer Lösung arbeiten. – Twisty