欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码

程序员文章站 2022-04-18 11:15:55
这篇文章主要介绍了HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 20-04-10...

h5手指下滑弹出负一屏, 阻止移动端浏览器内置下拉刷新功能,具体实例代码如下所示:

<template>
  <div class="outer-scroll">
    <div class="loading top-box">
        默认隐藏,负一屏,手指下滑即可弹出显示,上滑隐藏
    </div>

    <div class="scroll-box">
        <h1>正式内容</h1>
    </div>
  </div>
</template>
<script>
import $ from 'jquery';
export default {
  name: 'about',
  data() {
      return {

      }
  },
  methods: {
    homescroll() {
      let scroll = document.queryselector('.scroll-box');
      let outer_scroll = document.queryselector('.outer-scroll');
      let topbox = document.queryselector('.top-box');
      let topboxheight;
      let touchstart;
      let touchdis;
      // 注意如果绑定触摸时的事件则会在下拉时从手指的下拉位置开始下拉 该事件在手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
      scroll.ontouchstart = function (event) {
        touchstart = 0;
        touchdis = 0;
        // 说明:由于手指头是多点触摸到屏幕上的我们所以e.originalevent.targettouches的
        // 意思是一个手指触碰点集合我们只需要获取第一个点就可以了所以
        touchstart = event.targettouches[0].pagey;
        console.log(touchstart);
      };
      // 当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventdefault()事件可以阻止滚动。
      scroll.ontouchmove = (event) => {
        // 从顶部向下拖拽
        let touchpos = event.targettouches[0].pagey;
        touchdis = touchpos - touchstart;
        if (!topboxheight) {
          topboxheight = topbox.offsetheight;
        }
        console.log(topboxheight);
        if (document.documentelement.scrolltop == 0 && touchdis >= 100) {
          topbox.style.display = 'block';
          $(scroll).stop().animate({ top: topboxheight }, 'fast');
        } else if (topbox.style.display == 'block' && touchdis < -10) {
          console.log(touchdis);
          $(scroll).stop().animate({ top: '0' }, 'fast');
          settimeout(() => { topbox.style.display = 'none'; this.$forceupdate(); }, 100);
          event.preventdefault();
        }
      };
    }
  },
  mounted() {
    document.addeventlistener('touchmove', e => {
      e.preventdefault();
    })
    this.homescroll();
  }
}
</script>

<style scoped>

.scroll-box {
  width: 100%;
  position: absolute;
  top: 0;
  background-color: #fff;
}
.loading {
  background: gray;
  width: 100vw;
  height: 40vh;
  display: none;
  overflow: hidden;
  font-size: 40px;
}
.scroll-box {
  background: #ccc;
  height: 60vh;
  color: #fff;
}
</style>

在pc上用鼠标下拉可以弹出负一屏,但是在移动端手指下拉会变为刷新,无法弹出负一屏,解决办法

<!-- 给 body 加样式 overflow:hidden -->
<body style="overflow:hidden">

    <!-- todo: -->

</body>

实际操作效果如下:

HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码

总结

到此这篇关于html5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码的文章就介绍到这了,更多相关html5手指下滑弹出内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!