關(guān)于 ios系統(tǒng)微信瀏覽器,在使用-webkit-overflow-scrolling: touch;滑動(dòng)慣性屬性時(shí),引發(fā)的瀏覽器底部的黑色背景會(huì)遮蓋固定標(biāo)簽的問題

最近在做一個(gè)線上商城的項(xiàng)目,該項(xiàng)目主要是和微信綁定的,即僅限制在微信瀏覽器打開

開始并沒有找到確定的方案,修改了兩天的這個(gè)問題,網(wǎng)上所提出的方案都試了一遍,并沒有找到合適的解決方法。

(1)采取禁止微信瀏覽器上滑漏出黑底的方法,這個(gè)方法是阻止瀏覽器的事件冒泡,但是并不理想,因?yàn)樵谧柚够瑒?dòng)時(shí)候,再次啟動(dòng)滑動(dòng)時(shí)會(huì)產(chǎn)生卡頓現(xiàn)象,就是在第一次啟動(dòng)的時(shí)候,頁面并不會(huì)發(fā)生滑動(dòng)操作,在第二次滑動(dòng)時(shí)才會(huì)觸發(fā)滑動(dòng)操作。(本人并不建議采用該方法)

//返回角度

function GetSlideAngle(dx, dy) {

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

}

//根據(jù)起點(diǎn)和終點(diǎn)返回方向 1:向上,2:向下,3:向左,4:向右,0:未滑動(dòng)

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

var dy = startY - endY;

var dx = endX - startX;

var result = 0;

//如果滑動(dòng)距離太短

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;

}

//滑動(dòng)處理

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 //內(nèi)容高度

, scrollTop =$(this).scrollTop(); //滾動(dòng)高度

var aTop = contentH - viewH - scrollTop;

// 滾動(dòng)到底部時(shí)禁止瀏覽器滾動(dòng)

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

if(aTop <= 80) {

//當(dāng)頁面滾動(dòng)到底部時(shí)禁止瀏覽器拖拽

e.preventDefault();

}

});

})

}

(2)第二種方案,因?yàn)槲业捻?xiàng)目是基于angular+ionic 框架開發(fā)的,這個(gè)框架本身是有滑動(dòng)慣性的方法(ion-content)但是該方法在加載分頁的時(shí)候會(huì)導(dǎo)致新加載出來的內(nèi)容,不能及時(shí)的滑動(dòng)頁面加載出來。所以此時(shí)就用到了 -webkit-overflow-scrolling:touch;屬性。

我在做項(xiàng)目時(shí)主要分了兩種情況

1.底部有導(dǎo)航 無分頁

這種情況下就采取 (ion-content)方法

2.有分頁 無底部導(dǎo)航

用適配ios系統(tǒng)的滑動(dòng)慣性方法:

-webkit-overflow-scrolling:touch;

3.底部既有導(dǎo)航又有分頁

這個(gè)只能使用overflow:auto;了 ,暫時(shí)還未找到更合適的解決方案(有大神解決好的,可以在下面留言告訴我哦,一起分享技術(shù)~)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容