webApp禁止页面整体下拉,不影响页面内部scroll
来源:互联网 发布:数控车床电脑编程软件 编辑:程序博客网 时间:2024/06/08 14:22
此类事件是手机touchmove默认事件行为,可以通过js代码隐藏事件:
$(‘body’).on(‘touchmove’, function (event) {event.preventDefault();});ordocument.addEventListener('touchmove', function(e){e.preventDefault()}, false);
但这样往往会把页面原生的scroll效果也一同去掉了,下面的代码可以完美解决这个问题:
var overscroll = function(el) { el.addEventListener('touchstart', function() { var top = el.scrollTop , totalScroll = el.scrollHeight , currentScroll = top + el.offsetHeight; //If we're at the top or the bottom of the containers //scroll, push up or down one pixel. // //this prevents the scroll from "passing through" to //the body. if(top === 0) { el.scrollTop = 1; } else if(currentScroll === totalScroll) { el.scrollTop = top - 1; } }); el.addEventListener('touchmove', function(evt) { //if the content is actually scrollable, i.e. the content is long enough //that scrolling can occur if(el.offsetHeight < el.scrollHeight) evt._isScroller = true; });}overscroll(document.querySelector('.scroll'));document.body.addEventListener('touchmove', function(evt) { //In this case, the default behavior is scrolling the body, which //would result in an overflow. Since we don't want that, we preventDefault. if(!evt._isScroller) { evt.preventDefault(); }});
下边是一个demo的展示,可以将其使用编译器打开并配置本地服务器使用手机打开查看效果:
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <style type="text/css"> * { margin: 0; padding: 0; } html, body { width: 100%; height: 100%; overflow: hidden; } body { display: flex; flex-direction: column; } header { width: 100%; height: 44px; background: black; } footer { width: 100%; height: 50px; background: black; } section { flex: 1; overflow: auto; } </style> </head> <body> <header>头</header> <section class="scroll"> <div style="width: 100%;min-height: 2000px;">内容滚动区域</div> </section> <footer>尾</footer> <script> var overscroll = function(el) { el.addEventListener('touchstart', function() { var top = el.scrollTop, totalScroll = el.scrollHeight, currentScroll = top + el.offsetHeight //If we're at the top or the bottom of the containers //scroll, push up or down one pixel. // //this prevents the scroll from "passing through" to //the body. if(top === 0) { el.scrollTop = 1 } else if(currentScroll === totalScroll) { el.scrollTop = top - 1 } }) el.addEventListener('touchmove', function(evt) { //if the content is actually scrollable, i.e. the content is long enough //that scrolling can occur if(el.offsetHeight < el.scrollHeight) evt._isScroller = true }) } overscroll(document.querySelector('.scroll'));//允许滚动的区域 document.body.addEventListener('touchmove', function(evt) { //In this case, the default behavior is scrolling the body, which //would result in an overflow. Since we don't want that, we preventDefault. if(!evt._isScroller) { evt.preventDefault() } }) </script> </body></html>
2 0
- webApp禁止页面整体下拉,不影响页面内部scroll
- 微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)
- 微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)
- 微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)
- 微信、手机页面禁止页面下拉
- 如何给webApp应用添加动态水印?并且不影响页面的交互事件
- 利用DragTopLayout实现上下两部分页面整体滑动,不影响下面部分页面的滚动效果
- javascript 禁止下拉页面 “橡皮筋“效果
- WebApp登陆页面设计
- webapp页面模板
- 不刷新页面改变下拉菜单内容
- 不刷新页面改变下拉菜单内容
- 不刷新页面改变下拉菜单内容
- 微信h5页面禁止下拉露出网页来源
- 微信浏览器禁止页面下拉查看网址
- 不刷新整体页面而动态刷新验证码.txt
- 页面质量整体评估
- 页面整体居中解决办法
- Linux运维笔记----sshd(远程访问控制服务)
- Android开发之使用ViewDragHelper实现侧边栏滑动的效果
- Linux基础命令之grep详解
- 关于map reduce的一点思考
- 生鲜o2o配送开源系统,包括Android源码+SSH后台管理系统
- webApp禁止页面整体下拉,不影响页面内部scroll
- Fragment中关于Simpleadapter的 无指针问题 nullpoint 以及runnable问题
- eclipse环境修改包名
- BZOJ1687: [Usaco2005 Open]Navigating the City 城市交通 Spfa
- N卡双显卡笔记本升级或安装win10开机后登陆界面黑屏
- Linux进阶命令
- React Native 中组件的生命周期
- 使用git(一)git简介及基本工作流程
- leetcode之位运算取得数组中只出现一次的一个数