关于 ios系统微信浏览器,在使用-webkit-overflow-scrolling: touch;滑动惯性属性时,引发的浏览器底部的黑色背景会遮盖固定标签的问题

最近在做一个线上商城的项目,该项目主要是和微信绑定的,即仅限制在微信浏览器打开

开始并没有找到确定的方案,修改了两天的这个问题,网上所提出的方案都试了一遍,并没有找到合适的解决方法。

(1)采取禁止微信浏览器上滑漏出黑底的方法,这个方法是阻止浏览器的事件冒泡,但是并不理想,因为在阻止滑动时候,再次启动滑动时会产生卡顿现象,就是在第一次启动的时候,页面并不会发生滑动操作,在第二次滑动时才会触发滑动操作。(本人并不建议采用该方法)

//返回角度

function GetSlideAngle(dx, dy) {

return Math.atan2(dy, dx) * 180 / Math.PI;

}

//根据起点和终点返回方向 1:向上,2:向下,3:向左,4:向右,0:未滑动

function GetSlideDirection(startX, startY, endX, endY) {

var dy = startY - endY;

var dx = endX - startX;

var result = 0;

//如果滑动距离太短

if(Math.abs(dx) < 2 && Math.abs(dy) < 2) {

return result;

}

var angle = GetSlideAngle(dx, dy);

if (angle >= 45 && angle < 135) {

//向上

contentScro();

result = 1;

}else if (angle >= -135 && angle < -45) {

// 向下

result = 2;

$('body').unbind('touchmove');

}

return result;

}

//滑动处理

var startX, startY;

document.addEventListener('touchstart',function (ev) {

startX = ev.touches[0].pageX;

startY = ev.touches[0].pageY;

}, false);

document.addEventListener('touchmove',function (ev) {

var endX, endY;

endX = ev.changedTouches[0].pageX;

endY = ev.changedTouches[0].pageY;

GetSlideDirection(startX, startY, endX, endY);

}, false);

function contentScro(){

$('.content').scroll(function(){

var $this =$(this)

, viewH = $(this).height()  //视图的可见高度

, contentH = $(this).get(0).scrollHeight //内容高度

, scrollTop =$(this).scrollTop(); //滚动高度

var aTop = contentH - viewH - scrollTop;

// 滚动到底部时禁止浏览器滚动

$('body').bind('touchmove', function (e) {

if(aTop <= 80) {

//当页面滚动到底部时禁止浏览器拖拽

e.preventDefault();

}

});

})

}

(2)第二种方案,因为我的项目是基于angular+ionic 框架开发的,这个框架本身是有滑动惯性的方法(ion-content)但是该方法在加载分页的时候会导致新加载出来的内容,不能及时的滑动页面加载出来。所以此时就用到了 -webkit-overflow-scrolling:touch;属性。

我在做项目时主要分了两种情况

1.底部有导航 无分页

这种情况下就采取 (ion-content)方法

2.有分页 无底部导航

用适配ios系统的滑动惯性方法:

-webkit-overflow-scrolling:touch;

3.底部既有导航又有分页

这个只能使用overflow:auto;了 ,暂时还未找到更合适的解决方案(有大神解决好的,可以在下面留言告诉我哦,一起分享技术~)

你可能感兴趣的:(关于 ios系统微信浏览器,在使用-webkit-overflow-scrolling: touch;滑动惯性属性时,引发的浏览器底部的黑色背景会遮盖固定标签的问题)