最近開發一個活動需要在手機上給上傳的頭像加上邊框、裝飾,需要拖拽、手勢縮放邊框下的頭像圖片,因為是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:拖動對於移動端兼容不是太理想,正在優化中~
