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
Freigeben: 2024-10-29 05:53:02
Original
809 Leute haben es durchsucht

## 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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage