我有一個藍色的#square
在我的我的iOS設備上的視口垂直和水平居中......手勢和觸摸事件 - 平穩調整方形
<div id="square"></div>
#square {
width:100px;
height:100px;
background:blue;
margin:0 auto;
}
我想最低和最高值時,內調整其大小在我的手機上做捏/縮放手勢。
現在,這是我用它的所有javascript。
$(document).ready(function() {
var dom = document.body,
_width = parseInt($('#square').css('width')),
vel = 3,
min = _width,
max = 300,
scale;
dom.addEventListener("gesturechange", gestureChange, false);
function gestureChange(e) {
e.preventDefault();
scale = e.scale;
_width = Math.round(_width*(scale/vel));
if (_width <= max && _width >= min)
$('#square').css({
'width' : _width + 'px',
'height' : _width + 'px'
});
if (_width > max) _width = max;
if (_width < min) _width = min;
}
});
但是,整個重新體驗感覺有點波濤洶涌,並沒有真正順利地響應我的手指。它確實有效,但並不像我想要的那樣順利。
首先。我並沒有真正瞭解javascript「touch」-event和javascript「gesture」-event之間的區別。我需要更多的eventListeners嗎?像gestureStart
和gestureEnd
這個工作?
我現在遇到的問題是,當我放大#square
跳到它的最大值(300)非常快,但我不能完全用我的手指控制它的大小。而且,當調整大小時,我還會遇到縮小手勢時再次縮小大小的問題。
我把我當前的代碼放在jsfiddle上,所以你可能可以自己測試它。 http://jsfiddle.net/Ec3az/
也許有人可以幫助我,因爲我很樂意完成這件作品。在智能手機上放大和縮小時,總體結果應該只是真正平滑的體驗和實際控制廣場的大小。
謝謝你提前
編輯:btw。我喜歡只使用標準的觸摸事件,而不是使用額外的庫。
在iOS上,一些「觸摸」事件(更復雜的[雙指])也會產生「手勢」事件。您可以將(通用)觸摸事件視爲更「原始」,並將其他(不太普遍支持的)手勢事件視爲更「熟」。如果它們存在,「手勢」事件可能更加方便。但是,由於必要的延遲(一觸即開的滾動,還是即將成爲雙指捏的開始?),他們往往不會很快被解僱Javascript(儘管額外的時間只有毫秒和對人來說通常很難看到)。 –