Ich habe für eine einfache Aufgabe ausprobieren jQueryUI wo ich brauche einen grundlegenden drag zu implementieren und Drop-Funktion. Ich habe festgestellt, dass die Elemente bei der Verwendung der Option "In Raster einrasten" nicht korrekt ausgerichtet sind, wenn sie auf den Zielcontainer fallen gelassen werden. Es berechnet die Position des ziehbaren Elements aus seinem Container, obwohl ich das Containment als Zielbereich definiert habe.JQuery UI ziehbar/abwerfbaren Raster ausrichten positioniert nicht richtig
sehen einen Beispielcode hier: https://jsfiddle.net/9yzL87md/7/
$(function() {
$(".spare-item").draggable({
grid: [ 26, 26 ],
containment: "#preview",
cursor: "grab",
revert: "invalid",
start: function(event, ui) {
console.log(ui);
console.log(ui);
}
});
$("#preview").droppable({
accept: ".spare-item",
over: function(event, ui) {
$(".spare-item").draggable({
grid: [26, 26]
});
},
out: function(event, ui) {
$(".spare-item").draggable("option", "grid", false);
},
drop: function(event, ui) {
var pos = ui.draggable.offset(), dPos = $(this).offset();
//console.log(pos.top - dPos.top, pos.left - dPos.left);
}
});
});
oben ist ein Beispiel für mein Layout zum leichteren Verständnis. Wenn Sie versuchen, das rote Element zu ziehen, wird es sofort in das graue Feld übernommen, aber es wird etwas niedriger als der untere Rand gefangen. Ich habe viele ähnliche Fragen und Lösungen ausprobiert, hatte aber kein Glück. Was fehlt mir hier? (Die Breite des Behälters ist 234px, und die Breite der roten Elemente sind 26px. Ich erwarte, dass die roten Elemente in einem 26 x 26 Raster ausgerichtet werden)
In der Tat ist dies mein Problem und deshalb fragte ich hier. Ich weiß, wenn ich die Ränder und die Polsterung entferne, würden sie richtig genommen werden. Ich muss die Ränder behalten. Deshalb frage ich, wie ich das Layout beibehalten und das Raster gleichzeitig verwenden kann. –
leider, die Ränder zu entfernen und sie zusammenhalten zu lassen, ist nicht die Lösung, die ich suche :) –