ios 下防止整个网页滑动(阻尼回弹 . 瞒天过海,…
2018-10-14 10:49:49来源:博客园 阅读 ()
下面是一个手机APP页面,分成上中下三部分,最上面和最下面是固定的,中间可以滚动。这是常见的APP布局方式。
<style>
.box{
overflow: auto;
-webkit-overflow-scrolling: touch; /*使得div内的超出滑动具有惯性,阻尼回弹等特性,否则滑动很生涩*/
}
</style>
</head>
<body class="box" >
<div id="top" class="scroll1" style="height:50px;"></div>
<div class="scroll" style="height:calc( 100% - 100px);width:100%;overflow:auto;">
<div style="height:500px;width:100%;">
</div>
<div style="height:500px;margin-top:200px; ">
</div>
<div style="height:500px;margin-top:200px; ">
</div>
<div style="height:500px;margin-top:200px; ">
</div>
</div>
<div id="bottom" class="scroll1" style="height:50px;"></div>
运行效果如下,顶部和底部固定区域都是黄色,中间的滚动div包含了红灰相间的色块。
在ios测试时发现基本正常,可是有以下几个问题:
1.当滚动到底部(稍停几秒),再上拉的时候,整个网页就会上滑,松手后阻尼回弹。
2.当滚动到顶部(稍微停几秒),再下拉时,整个网页就下滑,松手后阻尼回弹。
3.上在顶部或底部上下滑动时,整个页面会上下滑动。松手后立即滑动中间区域,也是上下滑动(停留秒后再滑,则正常滑动中间区域)
问题1,2其实是一个问题,解决原理如下:
当滚动区滚到顶部时,手再触屏时,把把div的滚动位置向下调一点点,这样系统就会以为还没有滚到头,就会继续滑动,然后是div内的阻尼滑动,整个网页不会滑动。滚动到底部时,再触屏时,同理向上调一点。这一招欺骗手法瞒天过海把IOS骗过去了。代码如下:
var overscroll = function(el) { el.addEventListener('touchstart', function() { var top = el.scrollTop ,totalScroll = el.scrollHeight ,currentScroll = top + el.offsetHeight; if(top === 0) { el.scrollTop = 1; }else if(currentScroll === totalScroll) { el.scrollTop = top - 1; } }); } overscroll(document.querySelector('.scroll'));
问题3,更简单,直接忽略滚动事件即可:
document.all.bottom.addEventListener('touchmove', function(evt) { evt.preventDefault(); }); document.all.top.addEventListener('touchmove', function(evt) { evt.preventDefault(); });
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- js防止表单重复提交实现代码 2020-03-29
- js判断客户端是iOS还是Android等移动终端的方法 2020-02-25
- 三、VUE项目BaseCms系列文章:axios 的封装 2019-08-14
- ztree在onCheck()方法中防止因触发联动关系导致页面多次渲染 2019-08-14
- [Vue 牛刀小试]:第十五章 - 传统开发模式下的 axios 使用入 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash