移动端禁止滚动

Posted hai-cheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动端禁止滚动相关的知识,希望对你有一定的参考价值。

var startPos = 0,endPos = 0,isScrolling = 0;
document.addEventListener(‘touchstart‘,function(event){
var touch = event.targetTouches[0]; //touches数组对象获得屏幕上所有的touch,取第一个touch
startPos = {x:touch.pageX,y:touch.pageY,time:+new Date}; //取第一个touch的坐标值
isScrolling = 0; //这个参数判断是垂直滚动还是水平滚动
}, false);

//解绑事件 web前端开发
document.addEventListener(‘touchend‘,function(event){
document.removeEventListener(‘touchmove‘,this,false);
document.removeEventListener(‘touchend‘,this,false);
}, false);

document.addEventListener(‘touchmove‘,function(event){
//当屏幕有多个touch或者页面被缩放过,就不执行move操作
if(event.targetTouches.length > 1 || event.scale && event.scale !== 1) return;
var touch = event.targetTouches[0];
endPos = {x:touch.pageX - startPos.x,y:touch.pageY - startPos.y};
// alert(Math.abs(endPos.x)+"----"+Math.abs(endPos.y));
isScrolling = Math.abs(endPos.x) < Math.abs(endPos.y) ? 1:0; //isScrolling为1时,表示纵向滑动,0为横向滑动
if(isScrolling === 0){
// event.preventDefault(); //阻止触摸事件的默认行为,即阻止滚屏
}
if(Math.abs(endPos.x) > 5){
event.preventDefault(); //横向滑动禁止
}
}, false);

// 禁止页面滚动
// document.body.addEventListener(‘touchmove‘, function (event) {
// event.preventDefault();
// }, true);

 

以上是关于移动端禁止滚动的主要内容,如果未能解决你的问题,请参考以下文章

H5移动端禁止页面上下滚动

移动端在有弹出层时如何禁止底层的滚动

移动端在有弹出层时如何禁止底层的滚动 (实现表层滑动的时候,底层禁止滑动,表层隐藏的时候,底层依然可以滑动);

移动端禁止滚动

移动端遮罩层滚动时,禁止底部滑动

移动端遮罩层滚动时,禁止底部滑动