博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动端浏览器和微信浏览器上禁止body的滚动条
阅读量:5019 次
发布时间:2019-06-12

本文共 1296 字,大约阅读时间需要 4 分钟。

一般禁止body滚动的做法就是设置overflow:hidden。

但是很奇怪的发现在移动端浏览器和微信浏览器上这个不起作用,然后我分析了我的写法,就是在body上加了一个class去定义属性,然后改成标签的定位,如body{overflow:hidden;},这个实现是可以的,没有滚动条。

再进一步分析,如果要用class去实现没有滚动条,如下代码设置:

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

这个就是完全的禁止上下滑动,没有滚动条,且在iOS的safari浏览器上完全不能上下滚,但是确发现微信浏览器上可以上下缩动(下面再解决)。

我最后发现,上面这种解决是普遍的浏览器做法,如果要更彻底一点,就直接使用js代码去控制touchmove的事件,直接精致,这个在微信和手机浏览器上完成可行。

代码如下:

/*去掉手机滑动默认行为*/$('body').on('touchmove', function (event) {    event.preventDefault();});

我还收集了一些设置隐藏滚动条的方法:

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

2、给要滚动的元素添加一个父级,设定高度,overflow:auto。

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

参考:

 

经过上面的设置,如果用户在微信浏览器上不能滚动,但是跳出到了iOS的safari浏览器之后,会有很多变数,比如高度不够,这时滚动也会好一些,那么我这样设置:

1、如果在微信上,默认禁止滚动,并且连默认的上下缩滑都不能。

2、当跳出到手机浏览器上完全可以滑动。

上面的思路实现:

1、通过微信useragent来判断,如果是微信浏览器自动加入class去设置。

2、非微信useragent就默认不加class。

 

具体实现:

微信上,禁止上下缩滑:

/*去掉手机滑动默认行为*/$('body').on('touchmove', function (event) {    event.preventDefault();});

判断微信浏览器:

/*微信浏览器特殊处理*/if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){    $('body').addClass('index_body');//添加禁止滚动的样式}else{    $('body').removeClass('index_body');//去除禁止滚动的样式}

 

总结:通过js判断固然是好,但是会造成一些乱七八糟的问题,所以优先还是考虑css去控制。

 

转载于:https://www.cnblogs.com/EasonJim/p/6203296.html

你可能感兴趣的文章
AJAX
查看>>
python字典
查看>>
python 中如何判断list中是否包含某个元素
查看>>
xml 模块
查看>>
14.7.1 重新调整InnoDB系统表空间的大小
查看>>
存储过程
查看>>
Fiddler4抓包工具使用教程一
查看>>
记一次注解处理器的开发过程
查看>>
初学 Python 者自学 Anaconda 的正确姿势是什么?
查看>>
在Linux或者Unix下打开,每一行都会出多出^M这样的字符
查看>>
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>