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


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实现切换页面布局使用介绍
Oct 09 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
求数组最大最小值方法适用于任何数组
Aug 16 Javascript
基于js实现投票的实例代码
Aug 04 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
May 20 Javascript
JS实现禁止鼠标右键的功能
Oct 15 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
react实现一个优雅的图片占位模块组件详解
Oct 30 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
Aug 24 Javascript
vue组件之间的数据传递方法详解
Apr 19 Javascript
Vue中keep-alive组件作用详解
Feb 04 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
Nov 12 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
php 分页类 扩展代码
2009/06/11 PHP
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
python单例模式实例分析
2015/04/08 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
python MySQLdb使用教程详解
2018/03/20 Python
python实现雨滴下落到地面效果
2018/06/21 Python
Python常见数字运算操作实例小结
2019/03/22 Python
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
质检员的岗位职责
2013/11/15 职场文书
教师演讲稿大全
2014/05/16 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
世界气象日活动总结
2015/02/27 职场文书
第二次离婚起诉书
2015/05/18 职场文书
遗失证明范文
2015/06/19 职场文书
考研经验交流会策划书
2015/11/02 职场文书