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


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 相关文章推荐
javascript setTimeout()传递函数参数(包括传递对象参数)
Apr 07 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
May 28 Javascript
如何判断元素是否为HTMLElement元素
Dec 06 Javascript
JavaScript插件化开发教程 (四)
Jan 27 Javascript
JavaScript实现广告弹窗效果
Aug 09 Javascript
遍历json 对象的属性并且动态添加属性的实现
Dec 02 Javascript
如何提高javascript加载速度
Dec 26 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
Feb 08 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
JS实现的字符串数组去重功能小结
Jun 17 Javascript
vue-element-admin 菜单标签失效的解决方式
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 $_ENV为空的原因分析
2009/06/01 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
PHP类的封装与继承详解
2015/09/29 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
详解javascript void(0)
2020/07/13 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
JS设计模式之责任链模式实例详解
2018/02/03 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
对python字典过滤条件的实例详解
2019/01/22 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
自荐书范文
2013/12/08 职场文书
授权委托书格式模板
2014/04/03 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
母亲节主题班会
2015/08/14 职场文书