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();
        }
    })
  • 相关阅读:
    Qt中实现启动画面(延时过程中要加上app.processEvents())
    Qt5中生成和使用静态库
    360云后台(使用HTTP Cache服务器)
    lucene 从2.4.0—3.6.0—4.3.1版本升级
    从C++到Qt(命令行编译,讲解原理)
    赵伟国的逻辑
    windows 7 系统进程服务详解
    QT 4.87 changes
    海量小文件存储
    最大连续子序列乘积
  • 原文地址:https://www.cnblogs.com/ronle/p/10984561.html
Copyright © 2011-2022 走看看