在html5中如何实现长按事件效果
发表于:2024-10-20 作者:千家信息网编辑
千家信息网最后更新 2024年10月20日,这篇文章主要介绍了在html5中如何实现长按事件效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇在html5中如何实现长按事件效果文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2024年10月20日在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
只有在移动端设备上才有用,如果要看代码示例的话请:
用 chrome
F12打开调时窗
切换到模拟移动设备
关于"在html5中如何实现长按事件效果"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"在html5中如何实现长按事件效果"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
事件
效果
代码
定时器
知识
菜单
移动
内容
按钮
时间
篇文章
设备
需求
上代
价值
只是
只有
常见
思路
拷贝
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全法规定运营者应当
php软件开发毕业论文
数据库给角色授权
医院门诊预约挂号软件开发
《数据库技术》课程作业
部队如何抓好网络安全
二本软件开发薪资
网络安全事关你我感谢
饥荒里的服务器是什么
网络技术服务价钱
dps-600服务器电源
初中生校园网络安全宣传
网络安全证认证
安徽机械软件开发生产厂家
外包到天津农行软件开发
服务器管理员密码取消
培训app软件开发价格
网络安全与防范开题报告
数据可以在不同服务器互传吗
凶宅数据库 网站
上海流水线点胶软件开发
福田新洲一对一学软件开发
图数据库集群监控
软件开发公司10强
服务器内存条颗粒大
PB软件开发工具可否转让
开一家软件开发公司要多少钱
ke2050怎么使用数据库
先电无法获取服务器
大一数据库一到六章练习题