一般禁止body滾動的做法就是設(shè)置overflow:hidden违寞。
但是很奇怪的發(fā)現(xiàn)在移動端瀏覽器和微信瀏覽器上這個不起作用圆存,然后我分析了我的寫法,就是在body上加了一個class去定義屬性店归,然后改成標(biāo)簽的定位,如body{overflow:hidden;}酪我,這個實(shí)現(xiàn)是可以的消痛,沒有滾動條。
再進(jìn)一步分析都哭,如果要用class去實(shí)現(xiàn)沒有滾動條秩伞,如下代碼設(shè)置:
.index_body {
position: fixed;
height: 100%;
overflow-y: hidden; /*為了兼容普通PC的瀏覽器*/
}
這個就是完全的禁止上下滑動,沒有滾動條欺矫,且在iOS的safari瀏覽器上完全不能上下滾纱新,但是卻發(fā)現(xiàn)微信瀏覽器上可以上下縮動(下面再解決)。
我最后發(fā)現(xiàn)穆趴,上面這種解決是普遍的瀏覽器做法脸爱,如果要更徹底一點(diǎn),就直接使用js代碼去控制touchmove的事件未妹,直接精致簿废,這個在微信和手機(jī)瀏覽器上完成可行。
代碼如下:
/*去掉手機(jī)滑動默認(rèn)行為*/
$('body').on('touchmove', function (event) {
event.preventDefault();
});
我還收集了一些設(shè)置隱藏滾動條的方法:
1络它、body加position:fixed;width:100%;height:100%
2族檬、給要滾動的元素添加一個父級,設(shè)定高度化戳,overflow:auto
3导梆、html,body{height:100%;overflow:hidden}
參考:http://www.cnblogs.com/lbcheng/p/6044303.html
經(jīng)過上面的設(shè)置,如果用戶在微信瀏覽器上不能滾動迂烁,但是跳出到了iOS的safari瀏覽器之后,會有很多變數(shù)递鹉,比如高度不夠盟步,這時滾動也會好一些,那么我這樣設(shè)置:
- 1躏结、如果在微信上却盘,默認(rèn)禁止?jié)L動,并且連默認(rèn)的上下縮滑都不能媳拴。
- 2黄橘、當(dāng)跳出到手機(jī)瀏覽器上完全可以滑動。
上面的思路實(shí)現(xiàn):
1屈溉、通過微信useragent來判斷塞关,如果是微信瀏覽器自動加入class去設(shè)置。
2子巾、非微信useragent就默認(rèn)不加class帆赢。
具體實(shí)現(xiàn):
微信上小压,禁止上下縮滑:
/*去掉手機(jī)滑動默認(rèn)行為*/
$('body').on('touchmove', function (event) {
event.preventDefault();
});
判斷微信瀏覽器:
/*微信瀏覽器特殊處理*/
if (window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger') {
$('body').addClass('index_body'); //添加禁止?jié)L動的樣式
}else{
$('body').removeClass('index_body'); //去除禁止?jié)L動的樣式}
},