1. 禁止body滚动后,弹出层滚动overflow:auto失效;
var DivScroll = function( layerNode ){
//如果没有这个元素的话,那么将不再执行下去
if ( !document.querySelector( layerNode ) ) return ;
this.popupLayer = document.querySelector( layerNode ) ;
this.startX = 0 ;
this.startY = 0 ;
this.popupLayer.addEventListener('touchstart', function (e) {
this.startX = e.changedTouches[0].pageX;
this.startY = e.changedTouches[0].pageY;
}, false);
// 仿innerScroll方法
this.popupLayer.addEventListener('touchmove', function (e) {
e.stopPropagation();
var deltaX = e.changedTouches[0].pageX - this.startX;
var deltaY = e.changedTouches[0].pageY - this.startY;
// 只能纵向滚
if(Math.abs(deltaY) < Math.abs(deltaX)){
e.preventDefault();
return false;
}
if( this.offsetHeight + this.scrollTop >= this.scrollHeight){
if(deltaY < 0) {
e.preventDefault();
return false;
}
}
if(this.scrollTop === 0){
if(deltaY > 0) {
e.preventDefault();
return false;
}
}
// 会阻止原生滚动
// return false;
},false);
}
//调用
var divScroll = new DivScroll('.menuList');
2. 弹出层滚动,禁止body滚动:
$('html').css({"height":"100%","overflow":"hidden"});
$('body').css({"height":"100%","overflow":"hidden"});
弹出层关闭后:
$('html').css({"height":"auto","overflow":"auto"});
$('body').css({"height":"auto","overflow":"auto"});