我正在嘗試構建一個界面,該界面允許在某些元素上調整大小/拖動和旋轉,并且要實現此目的,我正在使用interact.js javascript庫。我的交互功能正在運行: interact('.resize-drag-ratio') .draggable({ onmove: window.dragMoveListener }) .resizable({ preserveAspectRatio: true, edges: { left: true, right: true, bottom: true, top: true } }) .on('resizemove', function (event) { var target = event.target, x = (parseFloat(target.getAttribute('data-x')) || 0), y = (parseFloat(target.getAttribute('data-y')) || 0); var min_size = 35; if(event.rect.width>min_size){ // update the element's style target.style.width = event.rect.width + 'px'; target.style.height = event.rect.height + 'px'; // translate when resizing from top or left edges x += event.deltaRect.left; y += event.deltaRect.top; target.style.webkitTransform = target.style.transform = 'translate(' + x + 'px,' + y + 'px)'; target.setAttribute('data-x', x); target.setAttribute('data-y', y); } });并拖動旋轉以允許旋轉 interact('.drag-rotate') .draggable({ onstart: function (event) { const element = event.target; const rect = element.getBoundingClientRect(); // store the center as the element has css `transform-origin: center center` element.dataset.centerX = rect.left + rect.width / 2; element.dataset.centerY = rect.top + rect.height / 2; console.log("element.dataset.centerX: "+element.dataset.centerX); console.log("element.dataset.centerY: "+element.dataset.centerY);這兩個類使用jQuery進行切換,從而將拖動變成旋轉,反之亦然。我的問題是對象的位置和旋轉角度不會保持原樣,并且我不確定如何解決該問題。在將元素拖動到某個位置并按下旋轉按鈕后,我開始旋轉該元素,該元素向頂部:0px向左:0px移動,并且不停留在其拖動位置。您可以在此處查看完整的工作代碼:https : //codepen.io/yaary-vidanpeled/pen/ZZwGmE
與interact.js拖放
DIEA
2021-05-03 21:42:41