vue在移动端使用alloyfinger手势库操作图片拖拽、缩放

最近开发一个活动需要在手机上给上传的头像加上边框、装饰,需要拖拽、手势缩放边框下的头像图片,因为是vue项目,开始尝试了vue-drag-resize这个组件,对图片拖拽支持很完美,但是无法手势缩放,果断放弃,最后选用了腾讯的AlloyTeam团队的开源的手势库AlloyFinger,闲话少说直接上代码

 

1、下载

npm install alloyfinger

  

2、main.js全局配置

import AlloyFinger from 'alloyfinger'
import AlloyFingerPlugin from 'alloyfinger/vue/alloy_finger_vue'

Vue.use(AlloyFingerPlugin,{
  AlloyFinger
})

  

3、组件内使用

<div v-finger:pinch="pinchHandler"
     v-finger:press-move="pressMoveHandler"
     v-finger:multipoint-start="multipointStartHandler"
     v-finger:rotate="rotateHandler"
     v-finger:tap="tapHandler"
     v-finger:multipoint-end="multipointEndHandler"
     v-finger:double-tap="doubleTapHandler"
     v-finger:long-tap="longTapHandler"
     v-finger:swipe="swipeHandler"
     v-finger:single-tap="singleTapHandler">

//滑动的有效区域
</div>

  

        pointStartHandler() {
            //手指触摸屏幕触发
        },
        multipointStartHandler() {
            //一个手指以上触摸屏幕触发
        },
        rotateHandler(evt) {
            //evt.angle代表两个手指旋转的角度
            console.log(evt.angle);
        },
        pinchHandler(evt) {
            //evt.scale代表两个手指缩放的比例
            console.log(evt.scale);
        },
        multipointEndHandler() {
            //当手指离开,屏幕只剩一个手指或零个手指触发
        },
        pressMoveHandler(evt) {
            //evt.deltaX和evtdeltaY代表在屏幕上移动的距离
            console.log(evt.deltaX);
            console.log(evt.deltaY);
        },
        tapHandler(evt) {
            //点按触发
        },
        doubleTapHandler(evt) {
            //双击屏幕触发
        },
        longTapHandler(evt) {
            //长按屏幕750ms触发
        },
        swipeHandler(evt) {
            //evt.direction代表滑动的方向
            console.log("swipe" + evt.direction);
        },
        singleTapHandler(evt) {
            //单击
        }    

  

ps:拖动对于移动端兼容不是太理想,正在优化中~

posted @ 2020-09-24 15:06  一生无过  阅读(5655)  评论(0编辑  收藏  举报