为什么捐赠
API 浏览器
联系站长
触摸平移指令

Quasar 提供了功能齐全的 Vue 指令,可以完全取代像 Hammerjs 这样的库:v-touch-panv-touch-swipev-touch-hold,甚至 v-touch-repeat

这些指令不仅可以处理鼠标事件,还可以处理触摸事件,所以您可以用它们在您的应用中完成一些很酷的功能。

下面我们将讲述 v-touch-pan 指令。

TouchPan API

正在加载 TouchPan API...

用法

在下面的示例区域中,点击后往任意方向平移,然后查看页面的变化。在触摸设备上,上下平移时,页面滚动会被禁用。

TIP

如果您的内容包含图片,您可能需要给它们添加 draggable="false" 属性,否则浏览器的原生事件可能会产生副作用。

任意方向



平移可以同时支持鼠标和触摸事件。您也可以指定平移的方向,例如只捕获水平方向的平移。

注意,在触摸设备上,滚动不会被自动阻止,因为我们只是水平平移。

水平方向



下面的示例只捕获垂直方向的平移。默认会禁用页面滚动,但您也可以选择不禁用。

垂直方向



下面的示例演示如何使用 updownleftright 这四个修饰符来捕获自定义方向的平移。

页面滚动会被自动禁用,但您也可以选择不禁用。

自定义方向



处理鼠标事件

当您想处理鼠标事件时,使用 mouse 修饰符:

<!--
  指令也会被鼠标操作触发
-->
<div v-touch-pan.mouse="userHasPanned">...</div>

禁用页面滚动(在触摸设备上)

默认情况下,这个指令不会阻止页面滚动。如果您需要阻止页面滚动,请使用 prevent 修饰符:

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

抑制 TouchPan

您可以通过阻止内部元素的 touchstart/mousedown 事件冒泡来抑制 TouchPan 事件:

<div v-touch-pan.mouse="userHasPanned">
  <!-- ...content -->
  <div @touchstart.stop @mousedown.stop>
    <!--
      TouchPan 事件不会应用到这里,因为我们
      在 touchstart 和 mousedown 事件上
      调用了 stopPropagation()
    -->
  </div>
  <!-- ...content -->
</div>

然而,如果您使用 capturemouseCapture 修饰符,事件会先到达 TouchPan 指令,然后才是内部元素,所以 TouchPan 事件仍然会被触发。

FAB 示例

下面是一个使用 QFab 的示例,您可以拖拽它移出屏幕。

可拖拽



注意热更新相关

由于性能原因,不是所有的修饰符都是响应式的,有些需要刷新页面才能更新。请在 API 卡片中查看哪些修饰符不具备响应式特性。