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


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 相关文章推荐
jquery 上下滚动广告
Jun 17 Javascript
jquery 模板的应用示例
Nov 12 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
Jan 27 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
Mar 28 Javascript
JS document文档的简单操作完整示例
Jan 13 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
Apr 15 Javascript
jQuery实现的分页插件完整示例
May 26 jQuery
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
Aug 10 Javascript
如何利用JS将手机号中间四位变成*号
Sep 29 Javascript
解决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
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
Python异常的检测和处理方法
2018/10/26 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
简历的个人自我评价范文
2014/01/03 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
城南旧事电影观后感
2015/06/16 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
六五普法心得体会2016
2016/01/21 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫
vue 给数组添加新对象并赋值
2022/04/20 Vue.js