您的位置: 翼速应用 > 业内知识 > web前端 > 正文

VUE教程:教你在VUE2中实现阻尼下拉加载功能

本文是关于vue的相关知识教程分享,旨在教会大家在VUE2中如何实现阻尼下拉加载功能,详细内容请看本文。


VUE教程:教你在VUE2中实现阻尼下拉加载功能


VUE教程:教你在VUE2中实现阻尼下拉加载功能


在vue中,需要绑定触发的事件:


<div
  id="testchatBox"
  class="chatWrap"
  :style="{paddingTop: chatScroollTop + 'px'}"
  @touchstart="touchStart"
  @touchmove="touchMove"
  @touchend="touchEnd">
</div>


代码片段使用到了三个回调函数:


●  touchstart: 手指触摸到屏幕的那一刻的时候;


●  touchmove: 手指在屏幕上移动的时候;


●  touchend: 手指离开屏幕的时候。


从paddingTop可以看出,我们是通过控制这个容器距离的顶部的padding来实现下拉的效果。所以说我们的重调就是通过上面的三个回调函数来确定chatScroollTop的值。


通过chatScroollTop 这个命名就可以知道,我们这个下拉刷新是用在聊天框容器当中。


我们需要使用这些变量:


data() {
  return {
    chatScroollTop: 0, // 容器距离顶部的距离 
    isMove: false, // 是否处于touchmove状态
    startY: 0, // 当前手指在屏幕中的y轴值
    pageScrollTop: 0, // 滚动条当前的纵坐标
     
  }
}


三个回调函数对应三个阶段,而我们核心代码也分为三个部分:


第一部分:初始化当前容器的到顶部的距离,以及初始化当前是否处于滑动的状态,并获取当前滚动条的纵坐标。


touchStart(e) {
  // e代表该事件对象,e.targetTouches[0].pageY可以拿到手指按下的 y轴点
  this.startY = e.targetTouches[0].pageY
  // 开启下拉刷新状态
  this.isMove = false
  this.pageScrollTop = document.documentElement && document.documentElement.scrollTop
}


第二部分:根据当前手指当前距离触摸屏幕时刻的纵坐标差来确定容器和顶部的距离。但是由于不能一直的滑动,所以给了一个0 -> 80的氛围。为了让滑动更加的有趣,添加了一个step步进值来调整滑动的距离比例,所谓的距离比例就是手指距离一开始的距离越远,那么容量跟着滑动的距离就越短。实现一个类似阻尼的效果。


touchMove(e) {
  // 这个 touchMove,只要页面在动都会发生的,所以 touching就起作用了
  // 获取移动的距离
  let diff = e.targetTouches[0].pageY - this.startY
  let step = 60
  if (diff > 0 && diff < 80 && this.pageScrollTop === 0) {
     step++ // 越来越大
     this.chatScroollTop += (diff / (step * 0.1)) // 越向下给人的阻力感越大
     this.isMove = true
  }
}


第三部分:手指松开之后,给一个距离顶部的距离是为了添加加载滚动条。


touchEnd() {
  if(this.isMove) {
    this.chatScroollTop = 40
    this.downCallback() // api拉取数据
  }
}
async downCallback() {
  try {
     // 拿数据 
  } catch() {} 
  finall{
    this.chatScrollTop = 0
  }
}


关于在VUE2中实现带有阻尼下拉加载功能的详细解析就到这里,翼速应用平台内有更多相关资讯,欢迎查阅!


我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题