javascript - 關于trasform后的坐標計算的問題
問題描述
我在做了一個圖片在父容器內拖動的功能后,將父容器用transform變化了一下,旋轉啊拉伸啊什么的,之后坐標的計算就開始紊亂了,我想問一下如果想讓他正常工作的話應該怎么做?拖動的代碼如下:$(function(){
var dragging = false;var iX, iY;var qX, qY;var tempid; $('.dragcontain').mousedown(function(e) { dragging = true; iX = accSub(e.clientX,this.offsetLeft); iY = accSub(e.clientY,this.offsetTop); qX = $(e.target).children().position().left; qY = $(e.target).children().position().top; console.log(qX,qY); console.log(iX,iY); this.setCapture && this.setCapture(); return false;});document.onmousemove = function(e) { if (dragging) { var e = e || window.event; console.log('sX:',e.clientX,'sY:',e.clientY); var nX = accSub(e.clientX,e.target.offsetLeft); var nY = accSub(e.clientY,e.target.offsetTop); console.log(e.clientX,e.target.offsetLeft) var mX = accSub(nX,iX); var mY = accSub(nY,iY); var oX = accAdd(qX,mX); var oY = accAdd(qY,mY); $(e.target).children().css({'left':oX + 'px', 'top':oY + 'px'}); console.log('iX:',iX,'iY:',iY); console.log('oX:',oX,'oY:',oY); console.log('nX:',nX,'nY:',nY); console.log('mX:',mX,'mY:',mY); console.log('qX:',qX,'qY:',qY); console.log(''); return false; }};$(document).mouseup(function(e) { dragging = false; e.cancelBubble = true; iX=0; iY=0;})
})
光光是將dragcontain給rotate(45deg)旋轉后就開始亂了,坐標直接到-1000多去了
問題解答
回答1:transform旋轉縮放都是有基點的,transform-origin
相關文章:
1. javascript - sublime快鍵鍵問題2. 實現bing搜索工具urlAPI提交3. javascript - 移動端上不能實現拖拽布局嗎?4. boot2docker無法啟動5. thinkPHP5中獲取數據庫數據后默認選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙6. 前端 - 這段代碼一直生效不了,查半天因為 top: 0px; 分號后一個隱藏的東西,也不是占位符...刪了就可以生效,這是什么情況。。7. angular.js - 單頁應用(ng/vue)該如何監聽用戶離開當前頁面(或者路由)?8. nginx bind failed9. javascript - 如何判斷不同兩個對象觸發同一事件?10. javascript - react native在run-android時出現這個錯誤該怎么解決?大神賜教

網公網安備