需求:
1,實現表格區域的縮放,而不是整個頁面。整個頁面包含toolbar + table。 其中只縮放table區域
2,已用戶操作處進行縮放,而不是固定的某個點,例如中心點,或左上角,筆記縮放時,數據跳動
實現的基本原理:
利用transform-origin,來確定進行縮放的固定點,也就是用戶進行縮放的點, 同時利用transform:scale(value)來實現縮放
踩過的坑:
1,如果計算用戶實際操作時,所選取的進行縮放的固定點:
讀取用戶兩個手指的touch點,之後通過手指間的計算中心點,作爲縮放的固定點,公式如下:
scalePointX = (touch1.X + touch2.X) / 2 - targetTable.X;
scalePointY = (touch1.Y + touch2.Y) / 2 -targetTable.Y;
2, 當scale不爲零時,修改transform-origin,會導致按照新的固定點,從新scale,這就會導致表格移動
爲了避免用戶對於表格移動的感知,需要在設置完transform-origin之後,將表格移動回到之前的數據的位置。
這裏的坑最深,因爲scale的加入,導致座標系和實際的位置,產生了差異,舉個例子,table在scale之前,座標是(0,0),之後以(0,0)作爲固定點,放大。這個時候,看到是原來的左上角,因爲放大,而像左上方放生了移動,那麼這個時候,座標系到底放生了什麼變化? 這裏我們利用JQuery可以發現:
1)座標系沒有發生變化,也就是css('left')和css('top')保持不變
2)但 JQuery.position()卻發生了變化,left和top變成了負值
也就是說,利用JQuery裏css和position屬性,在scale時的不同表現,我們可以利用position在修改transform-origin前後的變化,計算出表格在視覺上發生的移動,之後通過這個值,反向設置css裏的left和top值,實現把表格移動回到原來視圖位置,使得用戶感知不到因爲transform-origin的變化,而導致的表格移動。
moveOnX = originalPosition.left - currentPosition.left;
moveOnY = originalPosition.top - currentPosition.top;
targetTable.css('left', <originalX> + moveOnX);
targetTable.css('top', <originalY> + moveOnY);
JAVAScript:mobile端,基於transform-origin和tranform(scale),實現表格縮放
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
uendjdjneudheb
ciedesi240
2022-08-24 22:40:22
euirwneirhisudhf
ciedesi240
2022-08-22 10:08:04
又插嘴臺灣問題!美軍高官聲稱會為臺海沖突做準備
SteveSapp9
2022-07-11 17:47:52
枸杞子是否能治療陽痿?有科學依據嗎
SteveSapp9
2022-07-08 10:16:40
怎樣提高性趣?達人教您如何提高夫妻性趣!
SteveSapp9
2022-06-28 15:08:53
可以從super體育找到什麼?
yemof57057
2022-06-26 02:05:45
大家會花錢課金嗎?以前每月花上萬塊 現在只玩這兩種
yemof57057
2022-06-25 01:14:55
對跳脫舒適圈的看法
yemof57057
2022-06-24 01:36:08
想學會看比賽可以怎麼做?
yemof57057
2022-06-22 01:55:05
Are We Ready For Virtual Reality And Its Impact On Our Future?
ciedesi240
2022-06-21 10:16:22
大戶的娛樂遊戲選擇
yemof57057
2022-06-21 01:20:21
which of the Elden Ring items will be the best fit for you
Clagreed90u76q
2022-06-19 00:31:45
sfggrfgrgrfxgf
jonecarlosonline
2022-06-18 19:12:27
Have Bitcoin Potential to Replace Gold?
ciedesi240
2022-06-18 14:24:27
fgfdgdrfgrdgs
jonecarlosonline
2022-06-18 03:29:49
24小時熱門文章