h5+vue页面下滑查看更多 页面触底+页面滑动

h5页面触底,不足一屏触发滑动 超过一屏触发触底效果

解决 页面大屏正好一屏,小屏超过一屏 页面下滑查看更多 的问题

在这里插入图片描述在这里插入图片描述

解决方法1 超过一屏监听滚动 触底触发 小于或等于一屏监听触摸 上滑触发

  data() {
    return {
      startY: 0,
      endY: 0,
      Fullscreen: true
    };
  },

添加触摸事件

	//给触摸区域添加触摸事件
  <div @touchstart="touchstart()" @touchend="touchend()"></div>
  //事件
      touchstart() {
      if (!this.Fullscreen) {
        return;  //判断 可视化的高度与溢出的距离 是否大于一屏  Fullscreen满屏
      }
      event.preventDefault(); //阻止默认事件(长按的时候出现复制)
      this.startY = event.changedTouches[0].pageY;
      console.log(this.startY);
    },
    touchend() {
      if (!this.Fullscreen) {
        return;
      }
      event.preventDefault();
      this.endY = event.changedTouches[0].pageY;
      if (this.startY - this.endY > 200) {
        console.log(this.endY);
        console.log(this.startY);
        //达到条件触发事件
        this.onscroll();
      }
    },

监听页面滚动

  mounted() {
    window.addEventListener("scroll", this.getScroll);
    
    let windowHeight =  document.documentElement.clientHeight || document.body.clientHeight; //变量windowHeight是 可视区的高度
    let scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight; //变量scrollHeight是 滚动条的总高度 /可视化的高度与溢出的距离(总高度)
    
    if (windowHeight < scrollHeight) {
      this.Fullscreen = false;//是否满屏
    }
  },
  destroyed() {
    window.removeEventListener("scroll", this.getScroll);
  },
   //监听滚动
    getScroll() {
      var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //变量scrollTop是滚动条滚动时,距离顶部的距离
      let windowHeight = document.documentElement.clientHeight || document.body.clientHeight; //变量windowHeight是 可视区的高度
      let scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight; //变量scrollHeight是 滚动条的总高度 /可视化的高度与溢出的距离(总高度)

      console.log(scrollTop, windowHeight, scrollHeight);
      //滚动条到底部的条件
      if (scrollTop + windowHeight >= scrollHeight) {
        //触发事件
      }
    }
### 解决 iOS H5 页面触底滑动效果 对于 iOS 设备上的 HTML5 应用,当页面到达底部或顶部时,默认情况下会触发一种称为“bounces”的回弹效果。这种效果虽然增加了用户体验的流畅度,但在某些场景下可能不符合设计预期,尤其是单页应用或多级嵌套滚动容器的情况下。 为了有效管理并禁用此功能,在 CSS 和 JavaScript 层面均需采取措施: #### 使用 CSS 控制溢出属性 通过设置 `html` 或者 `body` 的样式来防止整体文档超出视窗范围内的滚动行为: ```css html, body { overflow: hidden; } ``` 然而这种方法可能会干扰正常的页面布局以及内部可滚动区域的功能[^1]。 #### 利用 JavaScript 处理触摸事件 更灵活的方式是在 JavaScript 中监听 touch 事件,并针对特定条件下的移动操作进行拦截。例如可以在根组件(如 Vue.js 的 App.vue 文件)中添加如下代码片段以全局捕获 touchmove 事件: ```javascript mounted() { document.body.addEventListener('touchmove', function(e){ e.preventDefault(); // 阻止默认动作 },{passive:false}); // 设置 passive 选项为 false 来允许 preventDefault 调用生效 } ``` 需要注意的是,上述做法会影响到所有基于手指滑动的操作,因此如果项目中有其他依赖于自然滚动手势的地方,则应更加精细地调整逻辑,仅在必要条件下执行 `preventDefault()` 方法[^3]。 另外,考虑到性能优化方面的要求,建议采用被动侦听器(passive listeners),除非确实需要调用 `event.preventDefault()` 。这是因为主动侦听器会对浏览器渲染造成一定阻碍,影响网页响应速度[^2]。 综上所述,要解决 iOS 上 H5 页面触底滑动的问题,既可以通过简单的 CSS 规则快速实现基本控制,也可以借助 JS 实现更为复杂的交互逻辑定制化处理方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值