通过better-scroll这个插件实现微信好友滚动列表

安装better-scroll

npm i better-scroll

初始化better-scroll
  //better-scroll需要一个div,类名wrapper
  //wrapper下放滚动元素,content,只有wrapper下的第一个元素能够滚动,其他无效,所以其他元素内容都放在content中
 
使用前先引入better-scroll
  let wrapper =  document.querySelector(".wrapper");
  //初始化better-scroll,挂载到组件实例里,方便使用
  //注意:初始化better-scroll时最好在获取数据之后,this.$nextTick(() => {})中执行,否则可能出现无法滚动。 
  this.$scroll = new BScroll(".wrapper");
 
滚动与快速入口

实现一:点击快速入口,组件滚动到指定位置,如点击A,跳转到A的歌手中

首先,需要获取到一个数组  AZList = ["热门","A","B"......"Z"],可通过数据生成也可以写假数据

再获取每一个tab栏,例如 热门这一栏,距离窗口顶部的距离

获取方法:通过ref给每一个tab栏绑定,遍历this.$refs,创建一个数组存放数据,如clientData.push( this.$refs.offsetTop )  (这个用法不标准,自行查看如何再refs上获取offsetTop)

先根据数组生成快速入口。

点击快速入口时,获取该快速入口在数组中为索引值,如A,索引值为1

此时添加一个方法

scroll(index){  //接收一个index , 为 点击快速入口时 获取到的索引值

  //clientData存放的是每一个tab栏距离窗口的距离,比如说是热门距离窗口的距离

  this.$scroll是挂载到组件实例的对象,上面有提到,scrollTo是better-scroll提供的方法,可自行查阅,400是动画时间

  this.$scroll.scrollTo(0,-clientData[index],400)

}

到这就可以实现点击快速入口滚动

实现二:滑动快速入口与组件联动

@touchstart="touchStart"  //手指按下
@touchmove="touchMove"//手指滑动
@touchend = "touchEnd" //手指抬起
1、手指点击touchstart时,通过事件对象e获取到点击的元素
2、事件对象e中有一个属性为touches,touches里面有一个clientY,距离窗口顶部的距离
实现思路:
1、假设 热门 距离窗口顶部的距离为180
2、我们现在点击了快速入口的A,通过事件对象获取到了 A 距离窗口 顶部 的距离 x,那么 A 到 热门 的距离 就等于 length = x - 180
3、每一个快速入口之间的距离 为 20px
4、通过 length / 20 就可以获取到 我们滑动到了哪个位置
5、根据clientData 和 第四步获取到的索引值, 可以获取到滚动距离
5、通过scrollTo就可以实现滑动快速入口,组件也会跟着动的效果

欢迎交流,小白一枚!

better-scroll实现滚动的更多相关文章

  1. DOM盒模型和位置 client offset scroll 和滚动的关系

    DOM盒模型和位置 client offset scroll 和滚动的关系 概览 在dom里面有几个描述盒子位置信息的值, pading border margin width height clie ...

  2. taro scroll tabs 滚动标签 切换

    taro scroll tabs 滚动标签 切换 https://www.cnblogs.com/lml-lml/p/10954069.html https://developers.weixin.q ...

  3. scroll 区域滚动

    网页内都有快速滚动和回弹的效果: overflow: scroll; -webkit-overflow-scrolling: touch;   实际上,Safari用了原生控件来实现,对于有-webk ...

  4. window.scroll原生滚动

    window.scroll({ top: , behavior: 'smooth' }) js原生已经支持模拟滚动的效果啦~~~

  5. Elasticsearch---基于scroll技术滚动搜索大量数据

    如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询,一批一批的查,直到所有数据都查询完处理完 使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以 ...

  6. jQuery scroll(滚动)延迟加载

    延迟加载 $(window).scroll(function(){ var scrollHeight = $(document).height(); //文档高度 var scrollTop = $( ...

  7. Android listView scroll 恢复滚动位置

    相信大家尝试过许多方法恢复滚动位置,本人也找了许多方法,唯有这个方法好用,下面把代码贴出来 声明两个变量 private int mPosition; private int lvChildTop; ...

  8. WPF touch Scroll -触摸滚动

    借鉴地址:http://matthamilton.net/touchscrolling-for-scrollviewer 改造后支持上下和左右鼠标拖动滚动: using System; using S ...

  9. Scroll文字滚动js

    function ScrollImgLeft(){ var speed=50, doc=document, scroll_begin = doc.getElementById("scroll ...

  10. MUI开发APP,scroll组件,运用到区域滚动

    最近在开发APP的过程中,遇到一个问题,就是内容有一个固定的头部和底部.         头部就是我们常用的header了,底部的话,就放置一个button,用来提交页面数据或者进入下一个页面等,效果 ...

随机推荐

  1. Django开发之ORM批量操作

    版本 1 Python 3.8.2 2 Django 3.0.6 批量入库 场景: 前端页面通过 textarea 文本框提交一列多行数据到Django后台,后台通过ORM做入库操作 表名: Tabl ...

  2. Numpy random函数

    import numpy as np # 生成一个随机数组 np.random.randint(0,6,3) # array([1, 1, 3]) # 生成一个随机数组(二维数组) np.random ...

  3. Python time asctime()方法

    描述 Python time asctime() 函数接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07 ...

  4. luogu P5633 最小度限制生成树 wqs二分

    LINK:最小度限制生成树 还是WQS二分的模板题 不过相当于我WQS二分的复习题. 对于求出强制k个的答案 dp能做不过复杂度太高了. 世界上定义F(x)表示选出x个的答案 画成图像 其实形成了一个 ...

  5. 认识SpringData JPA

    简介 JPA全称Java Persistence API,中文名是Java持久层API.用来描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 名词解释 RDS:关系型数据库服务 Re ...

  6. Linux命令持续学习

    1 基础命令 1 jps 查看后台运行的java相关的程序  jvm调优所有 2 ps -ef | grep java 查询后台运行的程序(通过关键字) 3 cd - 回到上一级目录 4 vim之后输 ...

  7. three.js 着色器材质之变量(三)

    这篇郭先生在练习一下着色器变量,在度娘上面或者官网上经常看到类似水波一样的效果,这篇就试着做一个这样的效果,顺便巩固一下顶点着色器和片元着色器,毕竟多多练习才能更好地掌握.效果如下图,在线案例请点击博 ...

  8. 工作流选型专项,Camunda or flowable or?

    1. 名词解释 1.1. BPM Business Process Management,业务流程管理,“通过建模.自动化.管理和优化流程,打破跨部门跨系统业务过程依赖,提高业务效率和效果”. 1.2 ...

  9. 高级搜索树-红黑树(RBTree)代码实现

    代码实现 代码参考了<数据结构(c++语言版)>--清华大学邓俊辉 "RBTree.h" #pragma once //#include"pch.h" ...

  10. 2020-05-16:如何保证redis和mysql数据一致?

    福哥答案2020-05-16: