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


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 相关文章推荐
jscript之Open an Excel Spreadsheet
Jun 13 Javascript
jQuery的deferred对象使用详解
Aug 20 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
浅谈javascript函数式编程
Sep 06 Javascript
JS更改select内option属性的方法
Oct 14 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
May 19 Javascript
JavaScript函数参数的传递方式详解
Mar 06 Javascript
node通过npm写一个cli命令行工具
Oct 12 Javascript
bootstrap时间插件daterangepicker使用详解
Oct 19 Javascript
JS实现打砖块游戏
Feb 14 Javascript
详解JavaScript原型与原型链
Nov 16 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 curl伪造IP地址和header信息代码实例
2015/04/27 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
JS实现自动阅读单词(有道单词本添加功能)
2016/11/14 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
js的对象与函数详解
2019/01/21 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
记录Django开发心得
2014/07/16 Python
python 列表降维的实例讲解
2018/06/28 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
企业授权委托书范本
2014/04/02 职场文书
服务宗旨标语
2014/07/01 职场文书
旷课检讨书500字
2014/10/14 职场文书
公务员政审材料范文
2014/12/23 职场文书
离婚案件原告代理词
2015/05/23 职场文书
新年寄语2016
2015/08/17 职场文书