czh的踩坑笔记 - 微信小程序 - 拖拽操作demo

czh的踩坑笔记 - 微信小程序 - 拖拽操作demo

拖拽功能简介

一般称拖拽是鼠标(手指)单点点击后执行移动(滑动)操作,程序主动计算滑动区域和位置,页面及时响应操作的一个功能。
重点一 - 需要动画响应及时
重点二 - 需要页面展示
谁还不知道啊

源码自提

https://github.com/czhmisaka/wxDemo_drag.git

源码讲解

  1. 使用了wxs,按照官方解释,应该能为手机用户提供更好的性能。(ios端可以有2~20倍提升,安卓端无差异)
  2. 控制触摸穿透,避免组件在操作过程中对外的影响力,这边用的是catch:touchmove绑定中的一个特性,即参数(isMoving)中为空字符串时,catch事件会失效。
  3. 动画效果模拟用的时 transform,这个主要时为了避免修改dom树的排序。
touchEnd事件返回移动距离
元素捕捉longtap事件
修改isMoving状态
touch_move事件转为可响应状态
页面响应动画
记录触摸修改距离
回调函数通知父级页面提供修改位置的依据

wxs文件源码


var moveY = 0,
    y = 0;
var lock = false

// 开始移动
function touch_start(e, ownerInstance) {
    moveY = e.changedTouches[0].clientY
    ownerInstance.callMethod('changeMovingStatus', true)
    lock = true
}

// 移动中
function touch_move(e) {
    if (!lock) return
    y = e.changedTouches[0].clientY - moveY
    e.instance.setStyle({
        transform: 'translateY(' + y + 'px)',
        'z-index': 100
    })
}

// 移动位置结束
function touch_end(e, ownerInstance) {
    lock = false
    e.instance.setStyle({
        'z-index': 1
    })
    ownerInstance.callMethod('touchEnd', y)
}


module.exports = {
    touch_start: touch_start,
    touch_move: touch_move,
    touch_end: touch_end
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值