Heim >Web-Frontend >CSS-Tutorial >## Wie behebe ich jQuery-Drag/Resize-Diskrepanzen mit der CSS-Transformationsskala?

## Wie behebe ich jQuery-Drag/Resize-Diskrepanzen mit der CSS-Transformationsskala?

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 05:53:02703Durchsuche

## How to Resolve jQuery Drag/Resize Discrepancies with CSS Transform Scale?

jQuery Drag/Resize mit CSS-Transformationsskala

Problem:

Anwenden von CSS-Transformationen ( (einschließlich Matrixskalierung) auf Elemente führt zu Diskrepanzen beim Ziehen und Ändern der Größe, die mit den jQuery-Plugins Draggable() und Resizable() ausgeführt werden.

Lösung:

Ein Benutzer hat einen Patch vorgeschlagen Dadurch wurden die jQuery-Plugins geändert, aber diese Lösung erforderte die Bearbeitung der Plugin-Dateien.

Alternativer Ansatz:

Alternativ können Sie das Patchen von jQuery vermeiden, indem Sie Callback-Handler im Draggable verwenden und anpassbare Konfigurationen. Dieser Ansatz passt die neuen Abmessungen und Positionen basierend auf dem Zoommaßstab während dieser Ereignisse an.

Code:

Für Resizable:

<code class="js">$(this).resizable({
  minWidth: -(contentElem.width()) * 10,
  minHeight: -(contentElem.height()) * 10,
  resize: function(event, ui) {
    var changeWidth = ui.size.width - ui.originalSize.width;
    var newWidth = ui.originalSize.width + changeWidth / zoomScale;
    var changeHeight = ui.size.height - ui.originalSize.height;
    var newHeight = ui.originalSize.height + changeHeight / zoomScale;
    ui.size.width = newWidth;
    ui.size.height = newHeight;
  }
});</code>

Für Draggable:

<code class="js">$(this).draggable({
  handle: '.drag-handle',
  start: function(event, ui) {
    ui.position.left = 0;
    ui.position.top = 0;
  },
  drag: function(event, ui) {
    var changeLeft = ui.position.left - ui.originalPosition.left;
    var newLeft = ui.originalPosition.left + changeLeft / ((zoomScale));
    var changeTop = ui.position.top - ui.originalPosition.top;
    var newTop = ui.originalPosition.top + changeTop / zoomScale;
    ui.position.left = newLeft;
    ui.position.top = newTop;
  }
});</code>

In diesen Codeausschnitten ist zoomScale eine globale Variable, die den aktuellen Maßstab des transformierten Elements darstellt.

Diese Lösung Bietet eine nicht-invasive Methode zum Ziehen und Ändern der Größe innerhalb skalierter Elemente mithilfe der Plugins von jQuery.

Das obige ist der detaillierte Inhalt von## Wie behebe ich jQuery-Drag/Resize-Diskrepanzen mit der CSS-Transformationsskala?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn