// 先看使用TScroll.vue的几个demo
1.https://sorrowx.github.io/TScroll/#/
2. https://sorrowx.github.io/TScroll/#/simple-tscroll
3. https://sorrowx.github.io/TScroll/#/xunlei-live
4. https://sorrowx.github.io/TScroll/#/youliao
5. https://sorrowx.github.io/TScroll/#/my-video/1

github文档地址:https://github.com/SorrowX/TScroll

其实任意列表都可以使用该组件滚动,如果感兴趣的话就往下看看吧。

TScroll

TScroll.vue 一个Vue组件(TouchScroll)

  1. 1. 用来解决移动端列表的滚动
  2. 2. 使用姿势较为统一
  3. 3. 列表数据始终保持5屏左右的列表数据,所以当你滚动1w以上(其实随便多少条数据)的数据,父容器中的数据始终都是小于5屏左右的数据
  4. 4. 基于alloytouch.jstransform.js编写的一个Vue基础组件

TScroll.vue 使用姿势

  1. <t-scroll
  2. :pullUpData="pullUpData"
  3. :pullDownData="pullDownData"
  4. :renderDataList.sync="renderDataList"
  5. v-bind="tScrollOptions"
  6. ref="tScrollComp"
  7. @pullUpLoading="loadMore"
  8. @pullDownLoading="pullDownLoading"
  9. @pullDownEnd="pullDownEnd"
  10. @change="change"
  11. >
  12. <template>
  13. <div ref="tscroll-pull-down" class="pulldown">释放加载</div>
  14. <ul ref="tscroll-list-container">
  15. <li
  16. :key="item.data.num"
  17. v-for="(item, index) in renderDataList"
  18. >row {{JSON.stringify(item.data.num)}}</li>
  19. </ul>
  20. <div ref="tscroll-pull-up" class="loading">loading</div>
  21. </template>
  22. </t-scroll>

TScroll.vue props详细解释

  1. data() {
  2. return {
  3. simpleScroll: '' // 如果有该属性(以下属性可以全部忽略了, 目前只支持'translateX'和'translateY'),则认为是个简单的滚动,不含上拉下拉加载数据功能
  4. pullUpData: [], // 每次从服务器上拉获取的新数据
  5. pullDownData: [], // 每次从服务器下拉获取的新数据
  6. renderDataList: [], // 用于渲染列表的数据
  7. tScrollOptions: {
  8. scrollBarOption: { // 控制滚动条相关属性
  9. show: true, // 是否开启滚动条
  10. fade: false // true 表示当滚动停止的时候滚动条是否需要渐隐
  11. },
  12. scrollOption: {
  13. excrMin: 45 + 48, // 多余的高度(滚动容器如果和屏幕高度一样,则该值为0,如果页面如果有头部和底部,需要减掉头部和底部的高度,则该值为头部的高度+底部的高度)
  14. maxSpeed: 2, // 滚动最大速度
  15. sensitivity: 1, // 滚动的灵敏度
  16. pullDownDistance: 60, // 下拉距离(超过指定距离才触发下拉事件)
  17. preventDefault: false // 是否阻止默认事件
  18. }
  19. }
  20. }
  21. }

TScroll.vue 事件详细解释

  1. pullUpLoading 事件 暂无参数:
  2. 用户从下往上拉 滚动列表时,加载完当前服务器给的数据且出现加载dom时会触发该事件
  3.  
  4. pullDownLoading 事件 暂无参数:
  5. 用户从上往下拉 滚动列表时,当往下拉的距离大于pullDownDistance属性时,会触发该事件(注意: 该事件会多次触发)
  6.  
  7. pullDownEnd 事件 暂无参数:
  8. 用户从上往下拉 释放列表时, 会触发该事件。列表会自动回弹到pullDownDistance高度,等下拉有新的数据时,会自动回弹到顶部
  9.  
  10. change 事件 参数(v 表示当前滚动的transformY值):
  11. 当用户滚动列表时, 会不断的触发该事件
  12.  
  13. touchStart 事件 参数(evt, property):
  14. 当用户触发列表容器时, 会触发该事件
  15.  
  16. touchMove 事件 参数(evt, property):
  17. 当用户在列表容器上滑动时, 会触发该事件
  18.  
  19. touchEnd 事件 参数(evt, current):
  20. 当用户在列表容器手指放开时, 会触发该事件
  21.  
  22. touchCancel 事件 参数(evt):
  23. touch事件取消时, 会触发该事件
  24.  
  25. animationEnd 事件 参数(current):
  26. 当用户在列表容器手指放开时且动画滚动结束时, 会触发该事件

TScroll.vue 实例一些有用的方法

  1. scrollTo 方法: 滚动到指定的dom
  2. 参数(i, ms)
  3. i: 如果指定Number类型的话, 会在指定ms毫秒内滚动到列表的第几个dom元素
  4. 如果指定String类型的话(只支持'top', 'bottom'), 会在指定ms毫秒内滚动到列表的顶部或者底部
  5. 如果指定HTMLLIElement类型的话, 会在指定ms毫秒内滚动到列表中该dom的位置
  6. ms: Number 毫秒
  7. 返回值: undefined
  8.  
  9. getAllData 方法: 获取所有的数据,就是从服务器每次请求的数据都push到该数组,
  10. 数组中的元素为对象,对象属性如下{ data: 就是服务器给的数据, dom: dom元素, translateY: css属性, removed: dom是否被移除了 }
  11. 无参数
  12. 返回值: Array(对象数组或者空数组)
  13.  
  14. getListActualDom 方法: 获取列表容器中实际的dom元素(因为父容器始终会保持小于5屏左右的数据)
  15. 无参数
  16. 返回值: Array(dom数组或者空数组)
  17.  
  18. clearListContainerDom 方法: 清空当前列表容器所有的孩子
  19. 参数(cb)
  20. cb: Function 清空后的回掉(因为vue更新dom基本放到本次事件循环的末尾执行,所以提供个回掉)
  21. 返回值: undefined

TScroll.vue 更新日志

  1. 417日:
  2. 1.修复 少传excrMin参数,滑动列表时,内容会被清空的的bug (大部分参数都是可选的,所以没传了话,应该有默认值)
  3. 2.修复 下拉时滚动条高度不跟着变化的bug
  4. 3.修复 simpleScroll属性就是简单滚动的情况下,列表最后一个dom被隐藏的bug
  5.  
  6. 56日:
  7. 1.excrMin属性支持rem单位,可以为Number|String类型,number类型则为px单位
  8. eg: excrMin: 44 excrMin: '44px' 效果一样; excrMin: '1.5rem'的话会根据当前的htmlfontSize
  9. 计算出px
  10. 57日:
  11. 1.TScroll组件实例新增clearListContainerDom方法,用于清空当前列表容器所有的孩子,其他状态相应的置为初始状态
  12. 2. demo详见 '视频'中的sv.vue组件使用姿势
  13.  
  14. 514日:
  15. 1. 新增TScrollX.vue组件(主要是TScroll.vue组件的增强版)
  16. 2. 增强simpleScroll属性的功能,以前只支持垂直滚动,不支持水平滚动
  17. 3. 水平滚动只是简单的滚动,不含'像右滑动'或者'像左滑动'超过多少距离触发加载数据事件,事实上安卓和ios客户端也很少有这样的功能
  18. 4. 水平滚动只是简单的左右滚动,同时scrollTo api同样可以用
  19. 5. 该属性主要用于导航,等水平滚动功能使用。demo详见 '我的视频'中的video-header.vue组件使用姿势
  20. 6. 注: TScroll.vue 组件不含水平滚动

demo

  1. 效果详见 https://sorrowx.github.io/TScroll/#/
  2.  
  3. 410日:
  4. 新增首页和SimpleTscroll页面
  5. 416日:
  6. 新增迅雷直播首页
  7. 427日:
  8. 新增有料视频列表页和视频播放页(其视频接口已关闭,demo为同一个视频)
  9. 56日:
  10. 新增视频单页,和视频播放页(该demo主要用于自己本地视频播放娱乐的)
  11. 513日:
  12. 今天下午无聊重构了视频单页,改为"我的视频"
  13. 该单页比'视频'单页多了左右滑动时切换到新的tag功能,容器内容数据没有清空,而是一个tag导航对应一个tscroll容器,
  14. 分离了头部和视频内容组件,代码清晰多了

移动端无限滚动 TScroll.vue组件的更多相关文章

  1. 移动端自定义输入框的vue组件 ----input

    <style scoped lang="less"> .keyboard { font-family: -apple-system, BlinkMacSystemFon ...

  2. 移动端自定义键盘的vue组件 ----keyboard

    <style scoped lang="less"> .keyboard { /* height: 250px; */ width: 100%; position: f ...

  3. 【转】超酷的 mip-infinitescroll 无限滚动(无限下拉)

    写在前面 无限滚动技术(又叫做无限下拉技术)被广泛应用于新闻类,图片预览类网站.对用户来讲,使用无限滚动的页面有源源不断的信息可以预览,增加用户在页面的停留时长.技术上原理也很简单,在页面加载时加载一 ...

  4. 基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多

    通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无 ...

  5. 一个 VUE 组件:实现子元素 scroll 父元素容器不跟随滚动(兼容PC、移动端)

    介绍 我们经常遇到一种情况.当滑动滚动条区域时,子元素滚动条到底部或顶部时就会触发父级滚动条,父级滚动条同理会继续向上触发,直至body容器.这是浏览器默认的滚动行为. 但是很多情况,我们想要子元素滚 ...

  6. Vue组件封装之无限滚动列表

    无限滚动列表:分为单步滚动和循环滚动两种方式 <template> <div class="box" :style="{width:widthX,hei ...

  7. vue 无限滚动问题

    如今web开发中,无限加载是必需的一项功能,尤其是在移动端开发中,一个列表往往默认只加载10条,想看更多只能逐渐往下翻页.那么今天就看看如何在Vue-Cli中实现这个功能. 当前找到两个插件 1 el ...

  8. 一个超详细vue无限滚动vue-infinite-scroll插件的配置及使用详解

    开发中总会遇到这种下拉加载的设计方案,Vue实现下拉加载最佳方案自然是使用vue-infinite-scroll来实现.接下来我们一起看下它的配置及使用方式. 首先我们先了解下他的配置参数: v-in ...

  9. webAPP如何实现移动端拍照上传(Vue组件示例)?

    摘要:使用HTML5编写移动Web应用,主要是为了尝试一下“一套代码多处运行”,一个webapp几乎可以不加修改的运行在PC/Android/iOS等上面运行.但是写到现在觉得虽然这种方式弊大于利,不 ...

随机推荐

  1. ldap配置系列二:jenkins集成ldap

    ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...

  2. JDK源码分析(5)之 HashMap 相关

    HashMap作为我们最常用的数据类型,当然有必要了解一下他内部是实现细节.相比于 JDK7 在JDK8 中引入了红黑树以及hash计算等方面的优化,使得 JDK8 中的HashMap效率要高于以往的 ...

  3. 小程序开发笔记【一】,查询用户参与活动列表 left join on的用法

    今天在做一个用户活动查询功能的时候,查询参与的活动.正常,使用egg-mysql查询数据一般会这么写 result = await this.app.mysql.select('tb_activity ...

  4. [java]final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...

  5. 第22章 使用外部身份提供商登录 - Identity Server 4 中文文档(v1.0.0)

    ASP.NET Core有一种灵活的方式来处理外部身份验证.这涉及几个步骤. 注意 如果您使用的是ASP.NET Identity,则会隐藏许多基础技术细节.建议您还阅读Microsoft 文档并执行 ...

  6. IOC的理解,整合AOP,解耦对Service层和Dal层的依赖

    DIP依赖倒置原则:系统架构时,高层模块不应该依赖于低层模块,二者通过抽象来依赖依赖抽象,而不是细节 贯彻依赖倒置原则,左边能抽象,右边实例化的时候不能直接用抽象,所以需要借助一个第三方 高层本来是依 ...

  7. Elasticsearch系列(4):基本搜索

    空搜索 搜索API的最基础的形式是没有指定任何查询的空搜索 ,它简单地返回集群中所有索引下的所有文档,如下命令: GET /_search 返回如下结果: 查询结果解释: 1,hits 返回结果中最重 ...

  8. java泛型-泛型类,泛型接口,常用形式

    泛型简单使用: package com.etc; import java.util.ArrayList; import java.util.List; /* 泛型就相当于<>一个标签,泛化 ...

  9. 驰骋工作流引擎JFlow与activiti的对比 -总结

    共同点: 1. 嵌入式的工作流引擎,降低集群复杂性. 2. 严格而灵活的流程版本控制 3. 支持多种数据库 4. 支持多种流程设计模式 5. 成熟度高的开源工作流,具有可靠的稳定性和性能. 区别: 1 ...

  10. 如何使用apache的ab压力测试小工具传参数

    前言: windows下安装的phpstudy软件里集成的apache带了ab工具,所以可以不用单独下载.其他的操作系统下的安装或部署这里就不介绍了! 一. 使用windows的cmd进入apache ...