91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue觸控組件的使用方法

發布時間:2020-06-15 14:07:58 來源:億速云 閱讀:328 作者:鴿子 欄目:web開發

前言

最近需要使用手指捏合擴大的手勢操作,找了幾個組件,要么對 Vue 適配不好,要么量級太大,決定自己手寫手勢操作。

思路

直接在 DOM 上綁定 touchstarttouchmovetouchend 不僅要綁定這幾個事件,而且用在其他項目還不好復用。所以用 Vue 自定義指令比較合適,指令還可以封裝成插件,再使用 npm 托管,這樣隨時隨地都可以使用了。

Vue 自定義指令

Vue 官網就有 自定義指令 的教程,摘取我們需要的關鍵代碼。

Vue.directive('pinch', {  // 只調用一次,指令第一次綁定到元素時調用
  bind (el, binding)  {    // el:指令所綁定的元素,可以用來直接操作 DOM
    // binding.value():運行添加到指令的回調方法

  }
})復制代碼

多點觸控

實現捏合手勢,必然是多根手指操作,因此使用 touch 的多點觸控,就可以拿到多個觸控點的位置了。再通過判斷兩點 touchstarttouchend 前的距離偏差,就可以判斷出是捏合手勢,還是放大手勢了。關鍵代碼如下:

let touchFlag = false;let touchInitSpacing = 0;let touchNowSpacing = 0;

el.addEventListener('touchstart',(e)=>{    if(e.touches.length>1){
        touchFlag = true;
        touchInitSpacing = Math.sqrt((e.touches[0].clientX-e.touches[1].clientX)**2 +(e.touches[1].clientY-e.touches[1].clientY)**2);
    }else{
        touchFlag = false;
    }
});

                
el.addEventListener('touchmove',(e)=>{    if(e.touches.length>1&&touchFlag){
        touchNowSpacing = Math.sqrt((e.touches[0].clientX-e.touches[1].clientX)**2 +(e.touches[1].clientY-e.touches[1].clientY)**2);
    }
});

el.addEventListener('touchend',()=>{    if(touchFlag){
        touchFlag = false;        if(touchInitSpacing-touchNowSpacing>0){
            binding.value('pinchin');
        }else{
            binding.value('pinchout');
        }
    }
});復制代碼

使用指令

手勢邏輯寫入自定義指令,就可以直接使用了。

<template>
    <p class="pinch" v-pinch="pinchCtrl"></p></template>復制代碼
new Vue({  methods: {      pinchCtrl: function (e) {        
          if(e==='pinchin'){              console.log('捏合')
          }          if(e==='pinchout'){              console.log('擴大');
          }
      }
  }
})復制代碼

總結

使用 Vue 自定義指令完成手勢操作并不復雜,同時將該邏輯封裝成組件量級很輕。

組件源碼

點此 查看完整源碼。

使用該組件

如果該組件對你有所幫助,可以通過 npm 的方式進行安裝:

npm i vue-pinch --save復制代碼

更多組件

create-picture:該組件提供了 canvas 的圖片繪制與文本繪制功能,使用同步的語法完成異步繪制,簡化原生 canvas 繪制語法。

以上就是Vue 手勢組件教程的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长岭县| 池州市| 龙泉市| 航空| 新疆| 堆龙德庆县| 徐州市| 康定县| 拉萨市| 尼勒克县| 栾城县| 策勒县| 仙桃市| 密云县| 会昌县| 白河县| 曲周县| 青岛市| 永平县| 岳普湖县| 江阴市| 凤台县| 永修县| 鄢陵县| 新津县| 彭州市| 阳春市| 淮北市| 成安县| 宜兰县| 蓝田县| 福安市| 阿城市| 迁安市| 夏津县| 保定市| 浦北县| 闻喜县| 犍为县| 南投市| 临安市|