為何捐款
API 瀏覽器
觸控平移指令

Quasar 提供全功能 Vue 指令,可以完全取代像 Hammerjs 這樣的函式庫:v-touch-panv-touch-swipev-touch-hold 甚至是 v-touch-repeat

這些指令也適用於滑鼠事件,而不僅僅是觸控事件,因此您也可以在桌面上為您的 App 建立很棒的功能。

我們將在下面幾行描述 v-touch-pan

載入 TouchPan API...

用法

在下方區域用滑鼠點擊並朝某個方向平移,即可查看實際效果。頁面滾動已停用,但如果您願意,可以選擇退出。

提示

如果您的內容也有圖片,您可能需要為它們添加 draggable="false",否則瀏覽器的原生行為可能會產生負面干擾。

所有方向



平移適用於滑鼠或原生觸控操作。您也可以僅捕獲特定方向(任何方向)的平移,如下所示。

僅捕獲水平平移的範例。請注意,在支援觸控的裝置上,滾動不會自動被封鎖,因為我們僅捕獲水平方向。

水平方向



僅捕獲垂直平移的範例。頁面滾動已停用,但如果您願意,可以選擇退出。

垂直方向



捕獲自訂方向平移的範例。為此,請使用修飾符:updownleftright。頁面滾動已停用,但如果您願意,可以選擇退出。

自訂方向



處理滑鼠事件

當您也想處理滑鼠事件時,請使用 mouse 修飾符

<!--
  directive will also be triggered by mouse actions
-->
<div v-touch-pan.mouse="userHasPanned">...</div>

阻止滾動(在支援觸控的裝置上)

預設情況下,指令不會阻止頁面滾動。如果您想阻止滾動,請使用 prevent 修飾符。

<div v-touch-pan.prevent="userHasPanned">...</div>

抑制 TouchPan

當您想抑制 TouchPan 時,可以透過停止從內部內容傳播 touchstart / mousedown 事件來實現

<div v-touch-pan.mouse="userHasHold">
  <!-- ...content -->
  <div @touchstart.stop @mousedown.stop>
    <!--
      TouchPan will not apply here because
      we are calling stopPropagation() on touchstart
      and mousedown events
    -->
  </div>
  <!-- ...content -->
</div>

但是,如果您使用 capturemouseCapture 修飾符,則事件將首先到達 TouchPan 指令,然後到達內部內容,因此 TouchPan 仍會觸發。

FAB 範例

下面是一個在 QFab 上使用 TouchPan 的精美範例。您可以將其拖曳到螢幕上。

可拖曳



關於 HMR 的注意事項

由於效能原因,並非所有修飾符都是反應式的。有些需要視窗/頁面/元件重新整理才能更新。請查看 API 卡,了解未標記為反應式的修飾符。