微信小程序之判断页面滚动方向的示例代码


Posted in Javascript onAugust 30, 2018

微信小程序中如果判断页面滚动方向?

解决方案

1.用到微信小程序API

获取页面实际高度 nodesRef.boundingClientRect([callback])

监听用户滑动页面事件onPageScroll。

2.获取页面实际高度

<!--WXML-->
<view id="box">
  <view class="list" wx:for="{{List}}" wx:key="List{{index}}">
    <image mode='aspectFill' class='list_img' src="{{item.imgUrl}}" ></image>
  </view>
</view>
/* JS */
 // 封装函数获取ID为box的元素实际高度 
 getScrollHeight: function() {
  wx.createSelectorQuery().select('#box').boundingClientRect((rect) => {
   this.setData({
    scrollHeight: rect.height
   })
   console.log(this.data.scrollHeight)
  }).exec()
 },
 // 假设数据请求
 getDataList: function() {
  wx.request({
   url: 'test.php', //仅为示例,并非真实的接口地址
   success: function(res) {
   // 如果该元素下面的数据是动态获取的,此方法在wx.request请求成功的回调函数中调用
    this.getScrollHeight()
   }
  })
 },

3.监听用户滑动页面事件

//监听用户滑动页面事件
 onPageScroll: function(e) {
  
  if (e.scrollTop <= 0) {
   // 滚动到最顶部
   e.scrollTop = 0;
  } else if (e.scrollTop > this.data.scrollHeight) {
   // 滚动到最底部
   e.scrollTop = this.data.scrollHeight;
  }
  if (e.scrollTop > this.data.scrollTop || e.scrollTop >= this.data.scrollHeight) {
   //向下滚动 
   console.log('向下 ', this.data.scrollHeight)
  } else {
   //向上滚动 
   console.log('向上滚动 ', this.data.scrollHeight)
  }
  //给scrollTop重新赋值 
  this.setData({
   scrollTop: e.scrollTop
  })
 },

PS:微信小程序滚动到某个位置改变效果

<scroll-view>
<view>Some of the words<view>
<view bindscroll="scroll" class="{{variable>200 ? 'class1' : 'class2'}}"</view>
</scroll-view>
//JS文件
 //滚动监听
 scroll: function (e) {
 this.setData({
  scrollTop:e.detail.scrollTop
 })
 }

其中,variable为全局变量,class1、class2即为相应的css

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js切换div css注意的细节
Dec 10 Javascript
对于Form表单reset方法的新认识
Mar 05 Javascript
原生javascript实现的分页插件pagenav
Aug 28 Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
Sep 08 Javascript
Angular2自定义分页组件
Apr 19 Javascript
关于Promise 异步编程的实例讲解
Sep 01 Javascript
优雅的在React项目中使用Redux的方法
Nov 10 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
May 20 Javascript
vue.config.js中配置Vue的路径别名的方法
Feb 11 Javascript
Vue自定义全局弹窗组件操作
Aug 11 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 #Javascript
在Vue methods中调用filters里的过滤器实例
Aug 30 #Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 #Javascript
对vue中methods互相调用的方法详解
Aug 30 #Javascript
原生JS+HTML5实现的可调节写字板功能示例
Aug 30 #Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
Aug 30 #Javascript
解决jQuery使用append添加的元素事件无效的问题
Aug 30 #jQuery
You might like
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
对xmlHttp对象的理解
2011/01/17 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
vue实现购物车小案例
2019/09/27 Javascript
vue实现文字加密功能
2019/09/27 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
postman和python mock测试过程图解
2020/02/22 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
环保项目建议书
2014/08/26 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
实习单位证明范例
2014/11/17 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记