有没有办法禁用右侧水平滚动,但允许左侧水平滚动?
问题描述:
有没有办法禁用右侧水平滚动,但允许左侧水平滚动?有没有办法禁用右侧水平滚动,但允许左侧水平滚动?
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
事件。
答
touchmove返回德勤的列表
- touchmove事件对象具有触摸列表
- 获得第一触摸,以及防止默认在所有情况下。
- 正在移动比较新x值与旧x值
- 如果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
工作示例 –
可以对比已保存在'touches',以确定它是否是一个左或右滚动的位置。 –