zoukankan      html  css  js  c++  java
  • webApp禁止页面整体下拉,不影响页面内部scroll

    <section class="page-container"> 
      <div style=" 100%;min-height: 2000px;">内容滚动区域</div>
    </section>
    // 禁止页面滑动
          var overscroll = function (el) {
            el.addEventListener('touchstart', function () {
              let top = el.scrollTop
              let totalScroll = el.scrollHeight
              let 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('.page-container'))//允许滚动的区域
          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()
            }
          })

    禁止

    document.querySelector('body').addEventListener('touchmove', function(e) {
        e.preventDefault();
    })

    如果页面有部分区域必须需要滑动,需要用touchmove事件的话,那么可以把那部分的touchmove事件过滤掉

    比如我想要以下代码中的bottom类可以用touchmove事件

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>微信禁止下拉露黑底</title>
    </head>
    <body>
        <div class="top"></div>
        <div class="bottom"></div>
    </body>
    </html>
    document.querySelector('body').addEventListener('touchmove', function(e) {
        if (!document.querySelector('.bottom').contains(e.target)) {
            e.preventDefault();
        }
    })
  • 相关阅读:
    启动mysql时显示:/tmp/mysql.sock 不存在的解决方法
    python在使用MySQLdb模块时报Can't extract file(s) to egg cacheThe following error occurred while trying to extract file(s) to the Python eggcache的错误。
    文档发布测试
    我的日常
    CSS-基础优化策略
    Git-基本操作
    Git-配置SSH公钥
    Git-免密提交
    Wx-mpvue开发小程序
    Vue-移动端开发全家桶
  • 原文地址:https://www.cnblogs.com/ronle/p/10984561.html
Copyright © 2011-2022 走看看