Vue 挪动端的长按与触摸事件

博客阐明

文章所波及的材料来自互联网整顿和集体总结,意在于集体学习和教训汇总,如有什么中央侵权,请分割自己删除,谢谢!

阐明

在手机端的需要难免会遇到与手势相干的,比方div的长按和单击事件,长按可能是分享或者删除等操作,个别的模式是通过弹窗来展示。

实现

其实次要是利用dom的触摸事件,touchstart,touchmove,touchend

代码

<template>  <div>    <div class="btn-long" @touchstart="handlerTouchstart" @touchmove="handlerTouchmove" @touchend="handlerTouchend">长按我</div>    <div v-if="clickShow">单击</div>    <div v-if="longClickShow">双击</div>  </div></template><script>export default {  name: 'LongTouch',  data () {    return {      // 定时器      loop: 0,      clickShow: false,      longClickShow: false    }  },  methods: {    handlerTouchstart () {      this.loop = setTimeout(() => {        this.loop = 0        // 执行长按要执行的内容        this.clickShow = false        this.longClickShow = true      }, 500) // 定时的工夫      return false    },    handlerTouchmove () {      // 革除定时器      clearTimeout(this.loop)      this.loop = 0    },    handlerTouchend () {      // 革除定时器      clearTimeout(this.loop)      if (this.loop !== 0) {        // 单击操作        this.clickShow = true        this.longClickShow = false      }    }  }}</script><style scoped>.btn-long {  width: 200px;  height: 30px;  background-color: red;}</style>

演示

发现在长按时,会呈现选中文字的成果,这比拟影响体验。

优化体验

在css中退出款式,这样就不会呈现选中的成果了。

* {  -webkit-touch-callout: none;  -webkit-user-select: none;  -khtml-user-select: none;  -moz-user-select: none;  -ms-user-select: none;  user-select: none;}

感激

万能的网络

以及勤奋的本人,集体博客,GitHub测试,GitHub

公众号-归子莫,小程序-小归博客