iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现按钮的长按功能
  • 705
分享到

vue实现按钮的长按功能

2024-04-02 19:04:59 705人浏览 泡泡鱼
摘要

先给大家介绍下Vue实现按钮的长按功能,效果图如下: 实现效果图:   实现思路: 给需要操作的 dom 元素添加touchstart(点击开始)、touchend(点击

先给大家介绍下Vue实现按钮的长按功能,效果图如下:

实现效果图:

 

实现思路:

给需要操作的 dom 元素添加touchstart(点击开始)、touchend(点击结束)、touchmove(手指移动)事件
在使用touchstart(点击开始)事件的时候设置定时器,在指定时间内如果不做其他操作就视为 长按事件,执行 长按事件 的同时需要设定当前不是 单击事件,以防止touchend(点击结束)执行的时候同时出现 长按事件 和 单击事件
在 touchend(点击结束)里面清除定时器,并判断是不是 单击事件
在 touchmove(手指移动)里面清除定时器,并设定当前不是 单击事件

代码

html

<div @touchstart="Gotouchstart" @touchmove="gotouchmove" @touchend="gotouchend" class="div">按钮</div>

js

export default {
  data() {
    return {}
  },
  methods: {
    // 手指按下事件
    gotouchstart() {
      window.isClick = true
      clearTimeout(this.timeOut)
      this.timeOut = setTimeout(function() {
        console.log('在这里执行长按事件')
        window.isClick = false
      }, 500)
    },
    //手释放,如果在500毫秒内就释放,则取消长按事件,此时可以执行onclick应该执行的事件
    gotouchend() {
 
      if (window.isClick) {
        console.log('在这里执行点击事件')
      }
    //如果手指有移动,则取消所有事件,此时说明用户只是要移动而不是长按
    gotouchmove() {
      console.log('手指移动了')
      window.isClick = false
    }
  // 项目销毁前清除定时器
  beforeDestroy() {
    clearTimeout(this.timeOut)
  }
}

style(去除长按出现的文字复制影响)

 -WEBkit-touch-callout:none;
    -webkit-user-select:none;
    -khtml-user-select:none;
    -moz-user-select:none;
    -ms-user-select:none;
    user-select:none;

补充:下面看下Vue使用自定义指令实现按钮长按提示功能,超简单!

项目场景

点击按钮实现长按,用户需要按下按钮几秒钟,然后触发相应的事件

实现思路

  • 首先,需要创建一个计时器,在2 秒后开始执行函数,用户按下按钮时触发 mousedown 事件,开始计时;
  • 当鼠标移开按钮时开始调用 mouseout事件
  • 第一种情况,当 mouseup 事件 2 秒内被触发了,需要清除计时器,相当于进行了普通的点击事件
  • 第二种情况,当计时器没有在 2 秒内清除,那么这就可以判定为一次长按,可以执行长按的逻辑了。
  • 如果在移动端使用,使用的就是 touchstarttouchend 事件了 实现效果

在这里插入图片描述

实现代码

<template>
  <div>
  	 <div class="btn-copy"><el-button v-press="handleClickLong">长按</el-button></div>
  </div>
</template>

<script>
import press from '../../directive/test/press'
export default {
  directives: {
    press
  },
  data(){
    return{
    }
  },
  methods:{
    handleClickLong () {
      alert('实现了长按哦!!!')
    },
  }
}
</script>

<style lang="sCSS">
</style>

press.js文件如下:

const press = {
  bind: function (el, binding, vnode) {
    console.log(el, binding, vNode)
    // el就是dom
    if (typeof binding.value !== 'function') {
      throw 'callback must be a function'
    }
    // 定义变量
    let pressTimer = null
    // 创建计时器( 2秒后执行函数 )
    let start = (e) => {
      if (e.type === 'click' && e.button !== 0) {
        return
      }
      if (pressTimer === null) {
        pressTimer = setTimeout(() => {
          handler()
        }, 2000)
      }
    }
    // 取消计时器
    let cancel = (e) => {
      console.log(e)
      if (pressTimer !== null) {
        clearTimeout(pressTimer)
        pressTimer = null
      }
    }
    // 运行函数
    const handler = (e) => {
      binding.value(e)
    }
    // 添加事件监听器
    el.addEventListener('mousedown', start)
    el.addEventListener('touchstart', start)
    // 取消计时器
    el.addEventListener('click', cancel)
    el.addEventListener('mouseout', cancel)
    el.addEventListener('touchend', cancel)
    el.addEventListener('touchcancel', cancel)
  },
  // 当传进来的值更新的时候触发
  componentUpdated(el, { value }) {
    el.$value = value
  },
  // 指令与元素解绑的时候,移除事件绑定
  unbind(el) {
    el.removeEventListener('click', el.handler)
  },
}

export default press

到此这篇关于vue实现按钮的长按功能的文章就介绍到这了,更多相关vue按钮长按内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vue实现按钮的长按功能

本文链接: https://www.lsjlt.com/news/163881.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现按钮的长按功能
    先给大家介绍下vue实现按钮的长按功能,效果图如下: 实现效果图:   实现思路: 给需要操作的 dom 元素添加touchstart(点击开始)、touchend(点击...
    99+
    2024-04-02
  • vue怎么实现按钮的长按功能
    这篇文章主要介绍“vue怎么实现按钮的长按功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue怎么实现按钮的长按功能”文章能帮助大家解决问题。效果图如下:实现效果图:实现思路:给需要操作的 do...
    99+
    2023-06-29
  • CSS3怎么实现按钮功能
    这篇文章主要讲解了“CSS3怎么实现按钮功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3怎么实现按钮功能”吧!今天我又看到一个很好看的按钮。设计师...
    99+
    2024-04-02
  • JavaFx实现按钮防抖功能
    目录JavaFX实现原理实现代码Kotlin版:Kotlin优化版Java版JavaFX JavaFX 是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式...
    99+
    2024-04-02
  • JS如何实现按钮闪烁功能
    这篇文章主要为大家展示了“JS如何实现按钮闪烁功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现按钮闪烁功能”这篇文章吧。html<body&...
    99+
    2024-04-02
  • JavaFx如何实现按钮防抖功能
    这篇文章主要介绍了JavaFx如何实现按钮防抖功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaFXJavaFX 是一个开源的下一代客户端应用平台,适用于基于Java...
    99+
    2023-06-28
  • Android编程如何实现带有单选按钮和复选按钮的dialog功能
    这篇文章将为大家详细讲解有关Android编程如何实现带有单选按钮和复选按钮的dialog功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:带有单选按钮的dialog:package ...
    99+
    2023-05-30
    android dialog
  • android长按删除功能怎么实现
    要实现Android长按删除功能,可以通过以下步骤: 在布局文件中定义一个需要长按删除的控件,比如一个Button或者一个Ima...
    99+
    2024-03-05
    android
  • CSS怎么实现遥控器按钮功能
    本篇内容主要讲解“CSS怎么实现遥控器按钮功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS怎么实现遥控器按钮功能”吧!html结构<view class="bu...
    99+
    2023-07-04
  • 怎么用CSS3实现返回功能按钮
    本篇内容介绍了“怎么用CSS3实现返回功能按钮”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在过去的年代,...
    99+
    2024-04-02
  • vue中点击切换按钮功能之点启用后按钮变为禁用
    实现方法分位三步: 在template中设置2个按钮,通过v-if ,v-show来控制; data中设置按钮的默认值; methods中控制点击按钮切换效...
    99+
    2024-04-02
  • 如何实现amazeui验证按钮扩展功能
    这篇文章将为大家详细讲解有关如何实现amazeui验证按钮扩展功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。做一个发送验证码按钮,点击后要60秒之后才能再次点击,利用原有的amazeui样式做的一些扩...
    99+
    2023-06-09
  • CSS3 如何实现按钮边框动画功能
    本篇内容介绍了“CSS3 如何实现按钮边框动画功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先看效果:html<a hr...
    99+
    2023-06-08
  • vue中怎么实现按钮跳转
    vue中实现按钮跳转的方法:1、在html文件中使用button标签设置按钮并添加点击事件;2、在vue的methods中添加方法实现页面跳转;3、通过浏览器查看设计效果即可。具体操作方法:在html文件中使用“button”标签设置一个按...
    99+
    2024-04-02
  • Bootstrap中Table如何实现加载按钮功能
    小编给大家分享一下Bootstrap中Table如何实现加载按钮功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1 ...
    99+
    2024-04-02
  • vue实现移动端的开关按钮
    本文实例为大家分享了vue实现移动端的开关按钮的具体代码,供大家参考,具体内容如下 逻辑: 1.写一个椭圆形的div 2.动态改变这个椭圆形的div的背景颜色 3.写一个圆点,这个圆...
    99+
    2024-04-02
  • ElementUI实现el-form表单重置功能按钮
    目录业务场景:效果演示:业务场景: 使用el-form时,点击重置按钮或者取消按钮时会实现表单重置效果。 重置功能按钮功能实现详细步骤: 第一:首先给el-form添加ref属性。 ...
    99+
    2024-04-02
  • vue实现点击按钮倒计时
    本文实例为大家分享了vue实现点击按钮倒计时的具体代码,供大家参考,具体内容如下 实现效果: 1.点击开始按钮启动计时 2.点击重置按钮计时恢复到00:00:00 3.点击暂停按钮...
    99+
    2024-04-02
  • vue使用自定义指令实现按钮权限展示功能
    目录一、在src下新建directive文件夹二、定义index.js文件,在vue上注入自定义指令三、编写自定义指令四、使用一、在src下新建directive文件夹 二、定义i...
    99+
    2024-04-02
  • autojs如何实现长按弹窗菜单功能
    本篇内容主要讲解“autojs如何实现长按弹窗菜单功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“autojs如何实现长按弹窗菜单功能”吧!弹窗菜单由粗到细, 自顶向下的写代码我们现在要修改的...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作