千家信息网

在html5中如何实现长按事件效果

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了在html5中如何实现长按事件效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇在html5中如何实现长按事件效果文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2026年11月02日在html5中如何实现长按事件效果

这篇文章主要介绍了在html5中如何实现长按事件效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇在html5中如何实现长按事件效果文章都会有所收获,下面我们一起来看看吧。

最近接了个需求,要求长按某个标签显示删除一个悬浮的删除按钮。这个需求其实在app上很常见,但是在移动端h6中,我们没有长按的事件,所以就需要自己模拟这个事件了。

ps: 为了做个 gif 还下了 app ,还得通过邮件发到电脑上,脑瓜疼。。

思路

  • 放弃click事件,通过判断按的时长来决定是单击还是长按

  • 使用touchstart和touchend事件

  • 在touchstart中开启一个定时器,比如在 700ms 后显示一个长按菜单

  • 在touchend中清除这个定时器,这样如果按下的时间超过700ms,那么长按菜单已经显示出来了,清除定时器不会有任何影响;如果按下的时间小于 700ms,那么 touchstart 中的长按菜单还没来得及显示出来,就被清除了。

由此我们可以实现模拟的长按事件了。

上代码

请把重点放在JS上,这里贴出来完整的代码是为了方便大家看个仔细,代码可以拷贝直接看效果
css中大部分只是做了样式的美化,还有一开始让删除按钮隐藏起来

HTML:

                Document        
长按我
删除

JS

let timer = nulllet startTime = ''let endTime = ''const label = document.querySelector('.label')const deleteBtn = document.querySelector('.delete_btn')label.addEventListener('touchstart', function () {  startTime = +new Date()  timer = setTimeout(function () {    deleteBtn.style.display = 'block'  }, 700)})label.addEventListener('touchend', function () {  endTime = +new Date()  clearTimeout(timer)  if (endTime - startTime < 700) {    // 处理点击事件    label.classList.add('selected')  }})

CSS

.container {    position: relative;    display: inline-block;    margin-top: 50px;}.label {    display: inline-block;    box-sizing: border-box;    width: 105px;    height: 32px;    line-height: 32px;    background-color: #F2F2F2;    color: #5F5F5F;    text-align: center;    border-radius: 3px;    font-size: 14px;}.label.selected {    background-color: #4180cc;    color: white;}.delete_btn {    display: none;    position: absolute;    top: -8px;    left: 50%;    transform: translateX(-50%) translateY(-100%);    color: white;    padding: 10px 16px;    background-color: rgba(0, 0, 0, .7);    border-radius: 6px;    line-height: 1;    white-space: nowrap;    font-size: 12px;}.delete_btn::after {    content: '';    width: 0;    height: 0;    border-width: 5px;    border-style: solid;    border-color: rgba(0, 0, 0, .7) transparent transparent transparent;    position: absolute;    bottom: -9px;    left: 50%;    transform: translateX(-50%);}

ps: touchstart和touchend只有在移动端设备上才有用,如果要看代码示例的话请:

  1. 用 chrome

  2. F12打开调时窗

  3. 切换到模拟移动设备

关于"在html5中如何实现长按事件效果"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"在html5中如何实现长按事件效果"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

事件 效果 代码 定时器 知识 菜单 移动 内容 按钮 时间 篇文章 设备 需求 上代 价值 只是 只有 常见 思路 拷贝 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡网 科技互联网 云信互联网科技有限公司 互联网科技美容 互联网 新科技 科技互联网创业计划书 卓越科技互联网 招聘 衡水科技产业互联网平台 华脉科技工业互联网产品 科技与互联网的利与弊 银川新华互联网科技职业技术培训学校图片 互联网时代科技改变生活 成都铂石互联网科技做什么的 新兴科技互联网创新大赛颁奖典礼 互联网科技创新的路径 玉溪新华互联网科技好不好 互联网科技包装股份有限公司上市 互联网科技包装股 广州智享互联网科技 易租星互联网科技有限公司 亿人帮互联网科技有限公司 北京路客互联网科技有限公司 互联网科技的 四个字互联网科技公司取名 互联网媒体平台算高科技产业 宁波跨境商互联网科技有限公司 版纳互联网科技选哪家 科技和互联网行业的特点 杭州融税互联网科技有限公司 北京品多多互联网科技有限公司
0