2017-03-17 60 views
0

有沒有辦法禁用右側水平滾動,但允許左側水平滾動?有沒有辦法禁用右側水平滾動,但允許左側水平滾動?

let touches = [] 
window.addEventListener('touchmove', event => { 
    event.preventDefault() 
}, false) 

window.addEventListener('touchstart', event => { 
    touches[0] = event.touches[0].pageX 
}, false) 

window.addEventListener('touchend', event => { 
    touches[1] = event.changedTouches[0].pageX 
}, false) 

看來你將不得不preventDefault()touchmove事件。

+0

可以對比已保存在'touches',以確定它是否是一個左或右滾動的位置。 –

回答

1

touchmove返回德勤的列表

  1. touchmove事件對象具有觸摸列表
  2. 獲得第一觸摸,以及防止默認在所有情況下。
  3. 正在移動比較新x值與舊x值
  4. 如果nx - ox> 0,則手動移動。

例子:http://codepen.io/anon/pen/LWQJvx

var old_x = null; 

document.addEventListener('touchstart', function(e) { 
    old_x = e.targetTouches[0].clientX; 
}, false); 

document.addEventListener('touchcancel', function(e) { 
    old_x = e.targetTouches[0].clientX; 
}, false); 


document.addEventListener('touchmove', function(e) { 
    var touch = e.touches[0]; 
    if (touch.clientX - old_x < 0) { 
    document.body.scrollLeft += old_x - touch.clientX; 
    } 
    old_x = touch.clientX; 
    e.preventDefault(); 
    return false; 
}, { passive: false }); 
+0

我只能在'touchend'上實現這個。你能提供一個例子嗎? –

+0

工作示例 –