有没有办法禁用右侧水平滚动,但允许左侧水平滚动?

问题描述:

有没有办法禁用右侧水平滚动,但允许左侧水平滚动?有没有办法禁用右侧水平滚动,但允许左侧水平滚动?

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',以确定它是否是一个左或右滚动的位置。 –

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

工作示例 –