微信小程序左右滑动切换页面示例代码--转载
微信小程序——左右滑动切换页面事件
微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend。
这三个事件最重要的属性是pageX和pageY,表示X,Y坐标。
touchstart在触摸开始时触发事件;
touchend在触摸结束时触发事件;
touchmove触摸的过程中不断激发这个事件;
这三个事件都有一个timeStamp的属性,查看timeStamp属性,可以看到顺序是touchstart => touchmove=> touchmove => ··· =>touchmove =>touchend。
第一步:在wxml文件中绑定事件(需要左右滑动的界面)
|
1
2
3
|
<view class="container" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd"> // do something</view> |
第二步:在js文件中处理左右滑动逻辑
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
var touchDot = 0;//触摸时的原点var time = 0;// 时间记录,用于滑动时且时间小于1s则执行左右滑动var interval = "";// 记录/清理 时间记录var nth = 0;// 设置活动菜单的indexvar nthMax = 5;//活动菜单的最大个数var tmpFlag = true;// 判断左右华东超出菜单最大值时不再执行滑动事件// 触摸开始事件touchStart:function(e){ touchDot = e.touches[0].pageX; // 获取触摸时的原点 // 使用js计时器记录时间 interval = setInterval(function(){ time++; },100); },// 触摸移动事件touchMove:function(e){ var touchMove = e.touches[0].pageX; console.log("touchMove:"+touchMove+" touchDot:"+touchDot+" diff:"+(touchMove - touchDot)); // 向左滑动 if(touchMove - touchDot <= -40 && time < 10){ if(tmpFlag && nth < nthMax){ //每次移动中且滑动时不超过最大值 只执行一次 var tmp = this.data.menu.map(function (arr, index) { tmpFlag = false; if(arr.active){ // 当前的状态更改 nth = index; ++nth; arr.active = nth > nthMax ? true : false; } if(nth == index){ // 下一个的状态更改 arr.active = true; name = arr.value; } return arr; }) this.getNews(name); // 获取新闻列表 this.setData({menu : tmp}); // 更新菜单 } } // 向右滑动 if(touchMove - touchDot >= 40 && time < 10){ if(tmpFlag && nth > 0){ nth = --nth < 0 ? 0 : nth; var tmp = this.data.menu.map(function (arr, index) { tmpFlag = false; arr.active = false; // 上一个的状态更改 if(nth == index){ arr.active = true; name = arr.value; } return arr; }) this.getNews(name); // 获取新闻列表 this.setData({menu : tmp}); // 更新菜单 } } // touchDot = touchMove; //每移动一次把上一次的点作为原点(好像没啥用)}, // 触摸结束事件touchEnd:function(e){ clearInterval(interval); // 清除setInterval time = 0; tmpFlag = true; // 回复滑动事件 |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://www.jb51.net/article/107020.htm
微信小程序左右滑动切换页面示例代码--转载的更多相关文章
- 微信小程序左右滑动切换图片酷炫效果
开门见山,先上效果吧!感觉可以的用的上的再往下看. 心动吗?那就继续往下看! 先上页面结构吧,也就是wxml文件,其实可以理解成微信自己封装过的html,这个不多说了,不懂也没必要往下看了. < ...
- 微信小程序左右滑动切换图片酷炫效果(附效果)
开门见山,先上效果吧!感觉可以的用的上的再往下看. 心动吗?那就继续往下看! 先上页面结构吧,也就是wxml文件,其实可以理解成微信自己封装过的html,这个不多说了,不懂也没必要往下看了. < ...
- 微信小程序 - 自定义switch切换(示例)
点击下载:switch示例 ,适用于表单,官方switch 说明 .
- 微信小程序Tab选项卡切换大集合
代码地址如下:http://www.demodashi.com/demo/14028.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序缓存滑动距离,当页面浏览到一定位置,滑动其他页面后返回该页面记录之前的滑动距离
15.微信小程序缓存滑动距离 我们在浏览页面的时候,然后左滑或者右滑到新的页面,等返回此页面,我们希望可以记录上次滑动的距离 虽然这个实现起来并不难,但是会遇到一些坑,因为scroll-view的组件 ...
- 微信小程序写tab切换
微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...
- 微信小程序开发--路由切换,页面重定向
这段时间开发了一个微信小程序,虽然小程序的导航API 官方文档写得很详细,但是在具体开发过程中还是会遇到很多不明白,或者一时转不过弯的地方. 1.页面切换传参,参数读取 1.1 wx.navigat ...
- 微信小程序开发过程中tabbar页面显示的相关问题及解决办法!
在微信小程序的开发过程中如果有使用过tabbar的同学,我相信一定会遇到一些困扰.为什么有些时候代码中明明已经在app.json里面增加了tabbar,可以页面中就是不显示呢?可不可以有些页面显示ta ...
- 微信小程序(3)--页面跳转和提示框
微信小程序页面跳转方法: 1.<navigator url="../test/test"><button>点我可以切换可以返回</button> ...
随机推荐
- centos7mini版安装pyenv,ipython和jupyter环境.2090513
第一节: 搭建centos7下pyenv,ipython,jupyter环境 pyenv:是一个python多版本管理器,在这个里面可以安装多个版本共存,然后可以安装需求选择版本. ipython:就 ...
- Oracle行转列/列转行
1.oracle的pivot函数 原表 使用pivot函数: with temp as(select '四川省' nation ,'成都市' city,'第一' ranking from dual u ...
- 6.3.3 使用 shelve 模块操作二进制文件
Python标准库shelve也提供了二进制文件操作的功能,可以像字典赋值一样来写入二进制文件,也可以像字典一样读取二进制文件,有点类似于NoSQL数据库MongoDB. import shelve ...
- 如何在Tomcat (6/7/8.0) 安装SSL证书
第一步:进入Tomcat安装目录,把证书的jks格式文件放在tomcat安装目录的conf目录下即可. conf/ssl/371cloud.cn.jks 第二步: 打开tomcat配置文件 conf/ ...
- 清北学堂模拟赛d2t5 吃东西(eat)
题目描述一个神秘的村庄里有4家美食店.这四家店分别有A,B,C,D种不同的美食.LYK想在每一家店都吃其中一种美食.每种美食需要吃的时间可能是不一样的.现在给定第1家店A种不同的美食所需要吃的时间a1 ...
- [Cogs14] [网络流24题#1] 飞行员分配方案 [网络流,最大流,二分图匹配]
经典二分图匹配,可以用匈牙利算法,也可以用最大流 代码如下(Dinic): #include <iostream> #include <cstdio> #include < ...
- 【ACM】hdu_zs3_1006_AB_201308101123
A/B Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission ...
- Android --------- 自己定义VIew
package com.example.coustomviewdemo; import android.R.interpolator; import android.content.Context; ...
- spring主要产品
Spring Framework * Spring Web Flow * Spring Web Services * Spring Security (Acegi Security) ...
- JArray获取元素值
MXS&Vincene ─╄OvЁ &0000003 ─╄OvЁ MXS&Vincene MXS&Vincene ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...