我試圖完全捏縮放手勢完全符合谷歌地圖。我觀看了斯蒂芬伍茲的演講 - "Creating Responsive HTML5 Touch Interfaces」 - 關於這個問題,並使用了上述技巧。我們的想法是將目標元素的變換原點設置爲(0,0)並在變換點進行縮放。然後翻譯圖像以保持它在變換點處居中。捏與CSS3縮放
在我的測試代碼縮放工作正常。圖像在後續翻譯之間放大和縮小。問題是我沒有正確計算翻譯值。我正在使用jQuery和Hammer.js進行觸摸事件。如何在變換回調中調整我的計算,以便圖像保持居中在變換點上?
的CoffeeScript中(#test-resize
是div
與背景圖像)
image = $('#test-resize')
hammer = image.hammer ->
prevent_default: true
scale_treshold: 0
width = image.width()
height = image.height()
toX = 0
toY = 0
translateX = 0
translateY = 0
prevScale = 1
scale = 1
hammer.bind 'transformstart', (event) ->
toX = (event.touches[0].x + event.touches[0].x)/2
toY = (event.touches[1].y + event.touches[1].y)/2
hammer.bind 'transform', (event) ->
scale = prevScale * event.scale
shiftX = toX * ((image.width() * scale) - width)/(image.width() * scale)
shiftY = toY * ((image.height() * scale) - height)/(image.height() * scale)
width = image.width() * scale
height = image.height() * scale
translateX -= shiftX
translateY -= shiftY
css = 'translateX(' + @translateX + 'px) translateY(' + @translateY + 'px) scale(' + scale + ')'
image.css '-webkit-transform', css
image.css '-webkit-transform-origin', '0 0'
hammer.bind 'transformend',() ->
prevScale = scale
這就是我的貓! !! ?? –
第二個鏈接已損壞。 –
斯蒂芬伍茲真的有很好的一點:在用css轉換(不加載東西等)時,絕對不要在代碼中做其他事情。在我自己的項目中幫助了很多。 – Hardy