移動(dòng)端瀏覽器和微信瀏覽器上禁止body的滾動(dòng)條

一般禁止body滾動(dòng)的做法就是設(shè)置overflow:hidden。

但是很奇怪的發(fā)現(xiàn)在移動(dòng)端瀏覽器和微信瀏覽器上這個(gè)不起作用,然后我分析了我的寫(xiě)法,就是在body上加了一個(gè)class去定義屬性,然后改成標(biāo)簽的定位,如body{overflow:hidden;},這個(gè)實(shí)現(xiàn)是可以的,沒(méi)有滾動(dòng)條。

再進(jìn)一步分析,如果要用class去實(shí)現(xiàn)沒(méi)有滾動(dòng)條,如下代碼設(shè)置:

.index_body {
    position: fixed;
    height: 100%;
    overflow-y: hidden;  /*為了兼容普通PC的瀏覽器*/
}

這個(gè)就是完全的禁止上下滑動(dòng),沒(méi)有滾動(dòng)條,且在iOS的safari瀏覽器上完全不能上下滾,但是卻發(fā)現(xiàn)微信瀏覽器上可以上下縮動(dòng)(下面再解決)。


我最后發(fā)現(xiàn),上面這種解決是普遍的瀏覽器做法,如果要更徹底一點(diǎn),就直接使用js代碼去控制touchmove的事件,直接精致,這個(gè)在微信和手機(jī)瀏覽器上完成可行。

代碼如下:

/*去掉手機(jī)滑動(dòng)默認(rèn)行為*/
$('body').on('touchmove', function (event) {
    event.preventDefault();
});

我還收集了一些設(shè)置隱藏滾動(dòng)條的方法:

1、body加position:fixed;width:100%;height:100%

2、給要滾動(dòng)的元素添加一個(gè)父級(jí),設(shè)定高度,overflow:auto

3、html,body{height:100%;overflow:hidden}

參考:http://www.cnblogs.com/lbcheng/p/6044303.html

經(jīng)過(guò)上面的設(shè)置,如果用戶在微信瀏覽器上不能滾動(dòng),但是跳出到了iOS的safari瀏覽器之后,會(huì)有很多變數(shù),比如高度不夠,這時(shí)滾動(dòng)也會(huì)好一些,那么我這樣設(shè)置:

  • 1、如果在微信上,默認(rèn)禁止?jié)L動(dòng),并且連默認(rèn)的上下縮滑都不能。
  • 2、當(dāng)跳出到手機(jī)瀏覽器上完全可以滑動(dòng)。

上面的思路實(shí)現(xiàn):

1、通過(guò)微信useragent來(lái)判斷,如果是微信瀏覽器自動(dòng)加入class去設(shè)置。
2、非微信useragent就默認(rèn)不加class。

具體實(shí)現(xiàn):

微信上,禁止上下縮滑:
/*去掉手機(jī)滑動(dòng)默認(rèn)行為*/
$('body').on('touchmove', function (event) {
   event.preventDefault();
});
判斷微信瀏覽器:
/*微信瀏覽器特殊處理*/
if (window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger') {
    $('body').addClass('index_body'); //添加禁止?jié)L動(dòng)的樣式
}else{
    $('body').removeClass('index_body'); //去除禁止?jié)L動(dòng)的樣式}
},
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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