需求: 算法
好比在百度地圖中針對某一座標點 滾軸滾動進行 縮放。以前針對的那個點的 還保持在鼠標對應位置。 svg
svg中新座標算法 orm
transform的 translate 和 scale 屬性的設置 it
translate 是座標平移換算,scale是座標倍數換算 io
咱們只針對 x方向 座標 計算(y方向同理) 百度地圖
鼠標在svg當前座標 e.offsetX (svg要是position:absolute哦)設爲變量X form
當前平移 設爲 t1 , 當前 縮放比例 爲 s1 變量
則倍數 縮放後 比例爲 s2 百度
求縮放後如何 設置 平移座標 t2 以補全 縮放帶來的偏移 保證 鼠標指向的仍然是以前的位置 transform
鼠標執行的某個位置 的實際鼠標爲 (x-t)/s
得 (x-t1)/s1=(x-t2)/s2 (x爲鼠標位置 ,先後未發生變化)
t2=x-(x-t1)*(s2/s1) (s2/s1 爲本次縮放的倍數)
把平移座標設爲t2 就能保證先後一致了