微信小程序的滑动事件是通过bindtouchmove实现的,通过比较滑动事件前后的坐标判断滑动方向,微信小程序通过三个事件共同作用实现了触摸滑动事件,即 bingtouchstart、bindtouchmove 和 bindtouchend 事件。
WXML:
<view class='btn' bindtouchstart='touchStart' bindtouchmove='touchMove' bindtouchend='touchEnd'>
OK
</view>
JS:
data: {
touchS : [0,0],
touchE : [0,0]
},
touchStart: function(e){
// consolelog(etouches[0]pageX)
let sx = etouches[0]pageX
let sy = etouches[0]pageY
thisdatatouchS = [sx,sy]
},
touchMove: function(e){
let sx = etouches[0]pageX;
let sy = etouches[0]pageY;
thisdatatouchE = [sx, sy]
},
touchEnd: function(e){
let start = thisdatatouchS
let end = thisdatatouchE
consolelog(start)
consolelog(end)
if(start[0] < end[0] - 50){
consolelog('右滑')
}else if(start[0] > end[0] + 50){
consolelog('左滑')
}else{
consolelog('静止')
}
},
在 touchstart 时,监听到触摸开始时的 (x, y)位置;在 touchMove 方法中持续监听触摸点的位置(x, y),并保存在 data 中;在 touchEnd 方法中对开始的触摸位置和结束的触摸位置进行判断,如果移动距离大于 50 则判定为发生触摸滑动事件。
在上面示例中,当 X 轴方向的移动超过 50 时即判定为左滑或右滑,相应的也可以通过判断 Y 轴方向的滑动长度,来判断上滑或是下滑,由此实现触摸滑动的功能。
更多信息联系我的微
组件说明:
可滚动视图区域。
组件用法:
纵向滚动用法
Tip:
使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height,否则无法滚动。
当滚动到顶部时会触发bindscrolltoupper事件(具体可留意GIF输出)
当滚动到底部时会触发bindscrolltolower事件(具体可留意GIF输出)
效果图:
wxml
<scroll-view scroll-y="true" style="height: 200px;" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-into-view="{{toView}}" scroll-top="{{scrollTop}}">
<view id="green" class="scroll-view-item bc_green"></view>
<view id="red" class="scroll-view-item bc_red"></view>
<view id="yellow" class="scroll-view-item bc_yellow"></view>
<view id="blue" class="scroll-view-item bc_blue"></view>
</scroll-view>
<view class="btn-area">
<button size="mini" bindtap="tap">click me to scroll into view </button>
<button size="mini" bindtap="tapMove">click me to scroll</button>
</view>
js
var order = ['red', 'yellow', 'blue', 'green', 'red']
Page({
data: {
toView: 'green',
scrollTop: 100,
scrollLeft: 0
},
//滚动条滚到顶部的时候触发
upper: function(e) {
consolelog(e)
},
//滚动条滚到底部的时候触发
lower: function(e) {
consolelog(e)
},
//滚动条滚动后触发
scroll: function(e) {
consolelog(e)
},
//点击按钮切换到下一个view
tap: function(e) {
for (var i = 0; i < orderlength; ++i) {
if (order[i] === thisdatatoView) {
thissetData({
toView: order[i + 1]
})
break
}
}
},
//通过设置滚动条位置实现画面滚动
tapMove: function(e) {
thissetData({
scrollTop: thisdatascrollTop + 10
})
}
})
css
scroll-view_H{
white-space: nowrap;
}
scroll-view-item{
height: 200px;
}
scroll-view-item_H{
display: inline-block;
width: 100%;
height: 200px;
}
横向滚动用法
Tip:
横向滚动无法使用scroll-into-view属性。
当滚动到最左边时会触发bindscrolltoupper事件(具体可留意GIF输出)
当滚动到最右边时会触发bindscrolltolower事件(具体可留意GIF输出)
效果图:
wxml
<scroll-view class="scroll-view_H" scroll-x="true" style="width: 100%" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-left="{{scrollLeft}}">
<view id="green" class="scroll-view-item_H bc_green"></view>
<view id="red" class="scroll-view-item_H bc_red"></view>
<view id="yellow" class="scroll-view-item_H bc_yellow"></view>
<view id="blue" class="scroll-view-item_H bc_blue"></view>
</scroll-view>
js
var order = ['red', 'yellow', 'blue', 'green', 'red']
Page({
data: {
toView: 'green',
scrollTop: 100,
scrollLeft: 0
},
//滚动条滚到顶部的时候触发
upper: function(e) {
consolelog(e)
},
//滚动条滚到底部的时候触发
lower: function(e) {
consolelog(e)
},
//滚动条滚动后触发
scroll: function(e) {
consolelog(e)
},
//点击按钮切换到下一个view
tap: function(e) {
for (var i = 0; i < orderlength; ++i) {
if (order[i] === thisdatatoView) {
thissetData({
toView: order[i + 1]
})
break
}
}
},
//通过设置滚动条位置实现画面滚动
tapMove: function(e) {
thissetData({
scrollLeft: thisdatascrollLeft + 10
})
}
})
wxss
scroll-view_H{
white-space: nowrap;
}
scroll-view-item{
height: 200px;
}
scroll-view-item_H{
display: inline-block;
width: 100%;
height: 200px;
}
主要属性:
属性类型默认值描述
scroll-xBooleanfalse允许横向滚动
scroll-yBooleanfalse允许纵向滚动
upper-thresholdNumber50距顶部/左边多远时(单位px),触发 scrolltoupper 事件
lower-thresholdNumber50距底部/右边多远时(单位px),触发 scrolltolower 事件
scroll-topNumber设置竖向滚动条位置
scroll-leftNumber设置横向滚动条位置
scroll-into-viewString值应为某子元素id,则滚动到该元素,元素顶部对齐滚动区域顶部
bindscrolltoupperEventHandle滚动到顶部/左边,会触发 scrolltoupper 事件
bindscrolltolowerEventHandle滚动到底部/右边,会触发 scrolltolower 事件
bindscrollEventHandle滚动时触发,eventdetail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
swiper
查询节点信息的对象。
wxcreateSelectorQuery
返回一个 SelectorQuery 对象实例。在自定义组件或包含自定义组件的页面中,应使用 thiscreateSelectorQuery() 来代替。
在当前页面下选择第一个匹配选择器 selector 的节点。返回一个 NodesRef 对象实例,可以用于获取节点信息。
在当前页面下选择匹配选择器 selector 的所有节点。
NodesRefboundingClientRect
添加节点的布局位置的查询请求。相对于显示区域,以像素为单位。
function callback
回调函数,在执行 SelectorQueryexec 方法后,节点信息会在 callback 中返回。
执行所有的请求。请求结果按请求次序构成数组,在callback的第一个参数中返回。
以上就是关于手机小程序滑动返回是什么事件全部的内容,包括:手机小程序滑动返回是什么事件、微信小程序之scroll-view可滚动视图区域、微信小程序(十二)实现首页左右上下滑动项目界面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)