我正在使用css變換比例在div上創建平滑縮放。問題是我希望能夠得到正確的鼠標相對於div的位置,即使放大時,但我似乎找出正確的算法來獲取這些數據。我從如何獲得正確的鼠標位置相對於已應用比例變換的div
var transform = new WebKitCSSMatrix(window.getComputedStyle($("#zoom_div")[0]).webkitTransform);
scale = transform.a;
檢索當前的比例因子當我看到div的位置在不同的縮放設置似乎當我縮放DIV,直至較大的屏幕上的位置,以報告正確的位置,即左邊和頂部的值是負的,似乎是正確的,因爲不返回的分度值:
$("#zoom_div").position().left
$("#zoom_div").position().top
爲了得到當前鼠標的位置我讀從Click事件的X和Y位置,帶走了偏移。這可以在比例值爲1(無比例)時正常工作,但在div放大時不會發生。這是我的基本代碼:
$("#zoom_div").on("click", function(e){
var org = e.originalEvent;
var pos = $("#zoom_div").position();
var offset = {
x:org.changedTouches[0].pageX - pos.left,
y:org.changedTouches[0].pageY - pos.top
}
var rel_x_pos = org.changedTouches[0].pageX - offset.x;
var rel_y_pos = org.changedTouches[0].pageY - offset.y;
var rel_pos = [rel_x_pos, rel_y_pos];
return rel_pos;
});
我已經在乘以劃分添加和從pageX屬性/ Y,但沒有任何運氣減去比例因子/多次嘗試。任何人都可以幫助我弄清楚如何獲得正確的價值。我從原始代碼中簡化了我的代碼,希望能夠讓我的問題更清楚,在上面的代碼中可能發現的任何錯誤都是由於編輯失敗導致的。
爲了說明我在說什麼,我做了一個快速的jsfiddle示例,允許使用translate3d拖動div。當比例正常時(1)div在被點擊的位置被拖動。當div放大時(2)它不再從點擊點正確拖動。
將是很好,如果你可以用這個:) – Lipis 2013-03-18 14:29:57
準備的jsfiddle @Lipis我添加了一個例子的jsfiddle我 – Finglish 2013-03-19 23:34:20
喜歡這個問題...但它的複雜就像我怎樣才能知道我的獨角獸的速度時,它的一邊吃菠菜一邊飛行:D – 2013-03-20 07:47:24